async def remove_source(request, id): if id not in request[ 'session'].mixers or request['session'].mixers[id] is None: return _user_error_response('No such mixer ID') if not request.json: return _user_error_response('Invalid JSON') if 'type' not in request.json or 'id' not in request.json: return _user_error_response( "Requires 'type' and 'id' fields in JSON body") if request.json['type'] != 'input': return _user_error_response('Only inputs can be added to a mixer') input_id = request.json['id'] if input_id not in request[ 'session'].inputs or request['session'].inputs[input_id] is None: return _user_error_response('No such input ID') mixer = request['session'].mixers[id] source = mixer.sources.get_for_input_or_mixer( request['session'].inputs[input_id]) if not source: return _user_error_response('Input is not source on mixer') run_on_master_thread_when_idle(source.remove_from_mix) return _status_ok_response()
async def restart(request): if 'config' not in request.json: raise InvalidUsage('Body must contain "config" key') if request.json['config'] not in ['original', 'current']: raise InvalidUsage('Body "config" key must have value "original" or "current"') run_on_master_thread_when_idle(request['session'].end, restart=True, use_current_config=request.json['config'] == 'current') return _status_ok_response()
async def create_input(request): input = request['session'].inputs.add(**request.json) # When an input is created, which mixers should it be added to? # For now, it's added to the first mixer. # TODO find a better way mixer = request['session'].mixers[0] source = mixer.sources.get_or_create(input) run_on_master_thread_when_idle(source.add_to_mix) logger.info('Created input #%d with details %s' % (input.id, request.json)) return sanic.response.json({'id': input.id})
async def create_input(request): session = brave.session.get_session() if not request.json: return _invalid_json_response() try: input = session.inputs.add(**request.json) # TODO not hard-code mixer 0: run_on_master_thread_when_idle(input.sources()[0].add_to_mix) except brave.exceptions.InvalidConfiguration as e: return _invalid_configuration_response(e) return _status_ok_response()
def start_rest_api_in_separate_thread(): try: brave.api.RestApi(session) except Exception as e: print('Cannot start Rest API:', e) run_on_master_thread_when_idle(session.end)
async def remove_source(request, id): connection = _get_connection(request, id, create_if_not_made=False) run_on_master_thread_when_idle(connection.remove_from_mix) return _status_ok_response()
async def overlay_source(request, id): connection = _get_connection(request, id, create_if_not_made=True) run_on_master_thread_when_idle(connection.add_to_mix) return _status_ok_response()
async def delete_mixer(request, id): mixer = _get_mixer(request, id) run_on_master_thread_when_idle(mixer.delete) return _status_ok_response()
async def delete_overlay(request, id): overlay = _get_overlay(request, id) run_on_master_thread_when_idle(overlay.delete) return _status_ok_response()
async def delete_output(request, id): output = _get_output(request, id) run_on_master_thread_when_idle(output.delete) return _status_ok_response()
async def restart(request): run_on_master_thread_when_idle(request['session'].end, restart=True) return _status_ok_response()
async def cut_to_source(request, id): connection, details = _get_connection(request, id, create_if_not_made=True) run_on_master_thread_when_idle(connection.cut, details=details) return _status_ok_response()
async def delete_output(request, id): session = brave.session.get_session() if id not in session.outputs: return _user_error_response('No such output ID') run_on_master_thread_when_idle(session.outputs[id].delete) return _status_ok_response()
async def restart(request): run_on_master_thread_when_idle(brave.session.get_session().end, restart=True) return _status_ok_response()
async def delete_output(request, id): if id not in request['session'].outputs: return _user_error_response('No such output ID') run_on_master_thread_when_idle(request['session'].outputs[id].delete) return _status_ok_response()