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'])
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'],
# -*- 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'],
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'],
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}
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
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(
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)