Esempio n. 1
0
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()
Esempio n. 2
0
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()
Esempio n. 3
0
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})
Esempio n. 4
0
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()
Esempio n. 5
0
 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)
Esempio n. 6
0
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()
Esempio n. 7
0
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()
Esempio n. 8
0
async def delete_mixer(request, id):
    mixer = _get_mixer(request, id)
    run_on_master_thread_when_idle(mixer.delete)
    return _status_ok_response()
Esempio n. 9
0
async def delete_overlay(request, id):
    overlay = _get_overlay(request, id)
    run_on_master_thread_when_idle(overlay.delete)
    return _status_ok_response()
Esempio n. 10
0
async def delete_output(request, id):
    output = _get_output(request, id)
    run_on_master_thread_when_idle(output.delete)
    return _status_ok_response()
Esempio n. 11
0
async def restart(request):
    run_on_master_thread_when_idle(request['session'].end, restart=True)
    return _status_ok_response()
Esempio n. 12
0
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()
Esempio n. 13
0
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()
Esempio n. 14
0
async def restart(request):
    run_on_master_thread_when_idle(brave.session.get_session().end,
                                   restart=True)
    return _status_ok_response()
Esempio n. 15
0
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()