Пример #1
0
from pyramid.response import Response
from ivr.common.schema import Schema, Optional, Default, IntVal
from ivr.ivc.rest.common import get_view, post_view, put_view, delete_view
from ivr.ivc.rest.common import get_params_from_request
from ivr.common.schema import Schema, Optional, Default, IntVal, Use, BoolVal, StrVal
from ivr.common.exception import IVRError


def includeme(config):
    config.add_route('project_list', '/projects')
    config.add_route('project', '/projects/{project_name}')


get_project_list_schema = Schema({
    Optional('start'):
    Default(IntVal(min=0), default=0),
    Optional('limit'):
    Default(IntVal(min=0, max=100), default=20)
})


@get_view(route_name='project_list')
def get_device_list(request):
    req = get_params_from_request(request, get_project_list_schema)
    start = req['start']
    limit = req['limit']
    total = request.registry.project_mngr.get_project_count()
    resp = {'total': total, 'start': req['start'], 'list': []}
    if limit > 0 and start < total:
        project_list = request.registry.project_mngr.get_project_list(
            req['start'], req['limit'])
Пример #2
0
from __future__ import unicode_literals, division
from pyramid.response import Response
from ivr.ivc.rest.common import get_view, post_view, put_view, delete_view
from ivr.ivc.rest.common import get_params_from_request
from ivr.common.schema import Schema, Optional, Default, BoolVal, EnumVal, Use, STRING, IntVal


def includeme(config):
    # block device list resource
    # GET:    block device list
    config.add_route('user_session_list', '/projects/{project_name}/cameras/{camera_id}/sessions')
    config.add_route('user_session', '/projects/{project_name}/cameras/{camera_id}/sessions/{session_id}')


get_running_session_list_schema = Schema({
    Optional('start'): Default(IntVal(min=0), default=0),
    Optional('limit'): Default(IntVal(min=0, max=100), default=20)
})


@get_view(route_name='user_session_list')
def get_running_user_session_list(request):
    req = get_params_from_request(request, get_running_session_list_schema)
    start = req['start']
    limit = req['limit']
    total = request.registry.user_session_mngr.get_running_session_count(
        request.matchdict['project_name'],
        camera_id=request.matchdict['camera_id']
    )
    resp = {'total': total,
            'start': req['start'],
Пример #3
0
# -*- coding: utf-8 -*-
from __future__ import unicode_literals, division
from pyramid.response import Response
from ivr.ivc.rest.common import get_view, post_view, put_view, delete_view
from ivr.ivc.rest.common import get_params_from_request
from ivr.common.schema import Schema, Optional, Default, IntVal, Use, BoolVal, StrVal


def includeme(config):
    # block device list resource
    # GET:    block device list
    config.add_route('camera_list', '/projects/{project_name}/cameras')
    config.add_route('camera', '/projects/{project_name}/cameras/{camera_id}')


get_cameras_list_schema = Schema({Optional('start'): Default(IntVal(min=0), default=0),
                                  Optional('limit'): Default(IntVal(min=0, max=100), default=20)})


@get_view(route_name='camera_list')
def get_camera_list(request):
    req = get_params_from_request(request, get_cameras_list_schema)
    start = req['start']
    limit = req['limit']
    total = request.registry.camera_mngr.get_camera_count(request.matchdict['project_name'])
    resp = {'total': total,
            'start': req['start'],
            'list': []}
    if limit > 0 and start < total:
        camera_list = request.registry.camera_mngr.get_camera_list(request.matchdict['project_name'],
                                                                   req['start'],
Пример #4
0
from ...common.exception import IVRError

def includeme(config):
    # block device list resource
    # GET:    block device list
    config.add_route('access_key_list', '/access_keys')
    config.add_route('user_access_key_list', '/users/{username}/access_keys')
    config.add_route('access_key', '/access_keys/{key_id}')
    config.add_route('access_key_secret', '/access_keys/{key_id}/secret')


get_access_key_list_schema = Schema({
    Optional('username'): StrRe(r"^\w*$"),
    Optional('key_type'): IntVal(values=[AccessKey.KEY_TYPE_NORMAL,
                                         AccessKey.KEY_TYPE_PRIVILEGE]),
    Optional('start'): Default(IntVal(min=0), default=0),
    Optional('limit'): Default(IntVal(min=0, max=65535), default=65535),
    DoNotCare(Use(STRING)): object  # for all other key we don't care
})


@get_view(route_name='access_key_list')
def get_access_key_list(request):
    params = get_params_from_request(request, get_access_key_list_schema)
    total, access_key_list = request.registry.access_key_mngr.get_key_list_in_pages(
        username=params.get('username', None),
        key_type=params.get('key_type', None),
        start_index=params['start'],
        max_number=params['limit'])
    resp = {'total': total,
            'start': params['start'],
Пример #5
0
            DENY_ALL,
        ]


def includeme(config):
    # block device list resource
    # GET:    block device list
    config.add_route('jwt_list', '/jwts')
    config.add_route('server_timestamp', '/server_timestamp')


new_jwt_schema = Schema({
    'iss': StrRe(r"^\S+$"),
    'secret': StrRe(r"^\S+$"),
    'aud': StrRe(r"^\w+$"),
    Optional('exp'): Default(IntVal(min=0), default=0),
    Optional('ust'): IntVal(values=[0, 1]),
    DoNotCare(Use(STRING)): object  # for all other key we don't care
})


@post_view(route_name='jwt_list')
def post_test_jwt_list(request):
    params = get_params_from_request(request, new_jwt_schema)
    if params['exp'] == 0:
        params['exp'] = int(time.time()) + 3600
    secret = params.pop('secret')
    jwt_str = jwt.encode(params, secret)

    return {'jwt': jwt_str}
Пример #6
0
def includeme(config):
    # block device list resource
    # GET:    block device list
    config.add_route('user_session_log_list',
                     '/projects/{project_name}/session_logs')
    config.add_route('user_session_log',
                     '/projects/{project_name}/session_logs/{session_id}')


get_session_log_list_schema = Schema({
    Optional('start_from'):
    Datetime(),
    Optional('end_to'):
    Datetime(),
    Optional('limit'):
    Default(IntVal(min=1, max=512), default=20),
    Optional('last_end_time'):
    Datetime(),
    Optional('last_session_id'):
    StrVal(max_len=36),
})


@get_view(route_name='user_session_log_list')
def get_user_session_log_list(request):
    req = get_params_from_request(request, get_session_log_list_schema)
    resp = {'list': []}
    resp['list'] = request.registry.user_session_log_mngr.get_session_log_list(
        request.matchdict['project_name'], **req)
    return resp
Пример #7
0
from ivr.ivc.rest.common import get_params_from_request
from ivr.common.datatype import VideoQuality
from ivr.common.schema import Schema, BoolVal, Default, Optional, IntVal


def includeme(config):
    config.add_route('stream_list',
                     '/projects/{project_name}/cameras/{camera_id}/streams')
    config.add_route(
        'stream',
        '/projects/{project_name}/cameras/{camera_id}/streams/{stream_id}')


get_cameras_list_schema = Schema({
    Optional('start'):
    Default(IntVal(min=0), default=0),
    Optional('limit'):
    Default(IntVal(min=0, max=100), default=20)
})


@get_view(route_name='stream_list')
def get_stream_list(request):
    req = get_params_from_request(request, get_cameras_list_schema)
    start = req['start']
    limit = req['limit']
    total = request.registry.stream_mngr.get_stream_count(
        request.matchdict['project_name'], request.matchdict['camera_id'])
    resp = {'total': total, 'start': req['start'], 'list': []}
    if limit > 0 and start < total:
        stream_list = request.registry.stream_mngr.get_stream_list(
Пример #8
0
Файл: main.py Проект: dulton/IVR
from ivr.ivc.manager.sessionlog import UserSessionLogManager
from ivr.ivc.manager.access_key import AccessKeyManager

config_schema = Schema({
    'rest_listen': Use(STRING),
    'ws_listen': Use(STRING),
    'rtmp_publish_url_prefix': Use(STRING),
    'rtmp_url_prefix': Use(STRING),
    'hls_url_prefix': Use(STRING),
    'stream_ttl': IntVal(min=10, max=1800),
    'user_session_ttl': IntVal(min=10, max=1800),
    'device_ttl': IntVal(min=10, max=1800),
    Optional('sqlalchemy'): {
        'url': Use(STRING)
    },
    Optional('debug'): Default(BoolVal(), default=False),
})


def main():
    default_log_config(debug=True)
    import logging
    log = logging.getLogger(__name__)

    try:
        if len(sys.argv) == 2:
            config = parse_conf(sys.argv[1])
        else:
            config = parse_conf('ivc.yml')
        config = config_schema.validate(config)