Ejemplo n.º 1
0
async def api_create_api_key(
    response: Response,
    name: str = Form(
        ..., description="The name of the API key. The name must be unique."),
    description: Optional[str] = Form(
        None,
        description=
        "An optional description that adds additional context to an api key."),
    is_admin: Optional[bool] = Form(
        False,
        description=
        "Set this to True to create an admin-level api key. Defaults to a standard api key."
    ),
):
    try:
        result = await app.state.system.create_api_key(name, description,
                                                       is_admin)
        if result:
            response.status_code = 201
            return result.to_model().dict()
            return ApiKeyModel(api_key=result).dict()
        else:
            response.status_code = 200
            return ApiKeyModel(api_key="").dict()

    except ACEError as e:
        return JSONResponse(status_code=400,
                            content=ErrorModel(code=e.code,
                                               details=str(e)).dict())
Ejemplo n.º 2
0
def _raise_exception_on_error(response):
    if response.status_code == 400:
        _raise_exception_from_error_model(ErrorModel.parse_obj(
            response.json()))
    elif response.status_code == 401:
        raise InvalidApiKeyError()
    elif response.status_code == 403:
        raise InvalidAccessError()
Ejemplo n.º 3
0
async def api_process_analysis_request(request: AnalysisRequestModel):
    try:
        await app.state.system.process_analysis_request(
            AnalysisRequest.from_dict(request.dict(), app.state.system))
        return Response(status_code=200)
    except ACEError as e:
        return JSONResponse(status_code=400,
                            content=ErrorModel(code=e.code,
                                               details=str(e)).dict())
Ejemplo n.º 4
0
async def api_get_api_keys(response: Response):
    try:
        result = await app.state.system.get_api_keys()
        response.status_code = 200
        return ApiKeyListModel(api_keys=[_.to_model() for _ in result]).dict()

    except ACEError as e:
        return JSONResponse(status_code=400,
                            content=ErrorModel(code=e.code,
                                               details=str(e)).dict())
Ejemplo n.º 5
0
async def api_set_config(setting: ConfigurationSetting, ):
    try:
        await app.state.system.set_config(setting.name,
                                          setting.value,
                                          documentation=setting.documentation)
        return Response(status_code=201)

    except ACEError as e:
        return JSONResponse(status_code=400,
                            content=ErrorModel(code=e.code,
                                               details=str(e)).dict())
Ejemplo n.º 6
0
async def api_delete_api_key(name: str = Path(
    ..., description="The name of the api key to delete.")):
    try:
        result = await app.state.system.delete_api_key(name)
        if result:
            return Response(status_code=200)
        else:
            return Response(status_code=404)

    except ACEError as e:
        return JSONResponse(status_code=400,
                            content=ErrorModel(code=e.code,
                                               details=str(e)).dict())
Ejemplo n.º 7
0
async def api_get_analysis_details(uuid: str = Path(
    ..., description="The uuid of the analysis.")):
    try:
        result = await app.state.system.get_analysis_details(uuid)
        if result:
            return result
        else:
            raise HTTPException(status_code=404)

    except ACEError as e:
        return JSONResponse(status_code=400,
                            content=ErrorModel(code=e.code,
                                               details=str(e)).dict())
Ejemplo n.º 8
0
async def api_unregister_alert_system(name: str = Path(
    ..., description="The name of the AMS to remove.")):
    try:
        result = await app.state.system.unregister_alert_system(name)
        if result:
            return Response(status_code=200)
        else:
            return Response(status_code=404)

    except ACEError as e:
        return JSONResponse(status_code=400,
                            content=ErrorModel(code=e.code,
                                               details=str(e)).dict())
Ejemplo n.º 9
0
async def api_delete_config(
        key: str = Query(...,
                         description="The configuration path to delete."), ):
    try:
        result = await app.state.system.delete_config(key)
        if result:
            return Response(status_code=200)
        else:
            raise HTTPException(status_code=404)

    except ACEError as e:
        return JSONResponse(status_code=400,
                            content=ErrorModel(code=e.code,
                                               details=str(e)).dict())
Ejemplo n.º 10
0
async def api_register_alert_system(name: str = Path(
    ...,
    description=
    "The name of the alert management system. The name must be unique.")):
    try:
        result = await app.state.system.register_alert_system(name)
        if result:
            return Response(status_code=201)
        else:
            return Response(status_code=200)

    except ACEError as e:
        return JSONResponse(status_code=400,
                            content=ErrorModel(code=e.code,
                                               details=str(e)).dict())
Ejemplo n.º 11
0
async def api_get_next_analysis_request(query: AnalysisRequestQueryModel):
    try:
        result = await app.state.system.get_next_analysis_request(
            query.owner,
            query.amt,
            timeout=query.timeout,
            version=query.version,
            extended_version=query.extended_version,
        )
    except ACEError as e:
        return JSONResponse(status_code=400, content=ErrorModel(code=e.code, details=str(e)).dict())

    if not result:
        return Response(status_code=204)

    return result.to_model()
Ejemplo n.º 12
0
async def api_get_alerts(
    name: str = Path(...,
                     description="The name of the AMS to acquire alerts for."),
    timeout: Optional[int] = Query(
        None,
        description=
        "Optional timeout (in seconds) of how long to wait if the queue is empty."
    ),
):
    try:
        result = await app.state.system.get_alerts(name, timeout)
        return AlertListModel(root_uuids=result).dict()
    except ACEError as e:
        return JSONResponse(status_code=400,
                            content=ErrorModel(code=e.code,
                                               details=str(e)).dict())
Ejemplo n.º 13
0
async def api_register_analysis_module_type(amt: AnalysisModuleTypeModel):
    try:
        result = await app.state.system.register_analysis_module_type(AnalysisModuleType.from_dict(amt.dict()))
        return result.to_dict()
    except ACEError as e:
        return JSONResponse(status_code=400, content=ErrorModel(code=e.code, details=str(e)).dict())