Beispiel #1
0
def register_api_endpoint(endpoint_name, resource):
    endpoint_path = '/{}/'.format(endpoint_name)
    endpoint_detail_path = endpoint_path + '<{}>/'.format(
        resource.query_key_field)
    endpoint_detail_path_spec = endpoint_path + '{{{}}}/'.format(
        resource.query_key_field)
    resource_view = resource.as_view(endpoint_name)
    resource_detail_view = resource.as_view(endpoint_name + '_detail')
    api_blueprint.add_url_rule(endpoint_path,
                               view_func=resource_view,
                               methods=['GET'])
    api_blueprint.add_url_rule(endpoint_path,
                               view_func=resource_view,
                               methods=['POST'])
    api_blueprint.add_url_rule(endpoint_detail_path,
                               view_func=resource_detail_view,
                               methods=['GET', 'PUT', 'DELETE'])
    api_blueprint.apispec.add_path(path=endpoint_path, view=resource.get_list)
    api_blueprint.apispec.add_path(path=endpoint_path, view=resource.post)
    api_blueprint.apispec.add_path(path=endpoint_detail_path_spec,
                                   view=resource.get_detail)
    api_blueprint.apispec.add_path(path=endpoint_detail_path_spec,
                                   view=resource.put)
    api_blueprint.apispec.add_path(path=endpoint_detail_path_spec,
                                   view=resource.delete)
Beispiel #2
0
                schema = SchemaMapping.get_schema_for_model_class(
                    sample_relation.__class__.__name__)
                serialized_sample_relations.append(
                    schema().dump(sample_relation).data)
            return jsonify({'results': serialized_sample_relations})
        except DoesNotExist:
            return jsonify({
                'error':
                'No object with key \'{}\' found'.format(kwargs['id'])
            }), 404


register_api_endpoint('sample', SampleResource)

api_blueprint.add_url_rule('/sample/<id>/download/',
                           view_func=SampleResource().download_file,
                           methods=['GET'],
                           endpoint='sample_download')
api_blueprint.apispec.add_path(path='/sample/{id}/download/',
                               view=SampleResource.download_file)

api_blueprint.add_url_rule('/sample/submit_file/',
                           view_func=SampleResource().submit_file,
                           methods=['POST'])
api_blueprint.apispec.add_path(path='/sample/submit_file/',
                               view=SampleResource.submit_file)

api_blueprint.add_url_rule('/sample/submit_ip/',
                           view_func=SampleResource().submit_ip,
                           methods=['POST'])
api_blueprint.apispec.add_path(path='/sample/submit_ip/',
                               view=SampleResource.submit_ip)
                400:
                    description: The request is malformed.
        """
        data = request.get_json()
        schema = SsdeepSampleRelationSchema()

        sample_relation = schema.load(data).data
        sample_relation.save()

        return jsonify(schema.dump(sample_relation).data), 201


register_api_endpoint('sample_relation', SampleRelationResource)

api_blueprint.add_url_rule(
    '/sample_relation/submit_dropped_by/',
    view_func=SampleRelationResource().submit_dropped_by_sample_relation,
    methods=['POST'])
api_blueprint.apispec.add_path(
    path='/sample_relation/submit_dropped_by/',
    view=SampleRelationResource.submit_dropped_by_sample_relation)

api_blueprint.add_url_rule(
    '/sample_relation/submit_resolved_by/',
    view_func=SampleRelationResource().submit_resolved_by_sample_relation,
    methods=['POST'])
api_blueprint.apispec.add_path(
    path='/sample_relation/submit_resolved_by/',
    view=SampleRelationResource.submit_resolved_by_sample_relation)

api_blueprint.add_url_rule(
    '/sample_relation/submit_contacted_by/',
Beispiel #4
0
                    'error':
                    'No object with key \'{}\' found'.format(
                        kwargs['object_name'])
                }), 404
            else:
                file = obj.read()
                return file, 200, {'Content-Type': 'binary/octet-stream'}
        except DoesNotExist:
            return jsonify({
                'error':
                'No object with key \'{}\' found'.format(kwargs['id'])
            }), 404


register_api_endpoint('report', ReportResource)

api_blueprint.add_url_rule('/report/<id>/json_report_object/<object_name>/',
                           view_func=ReportResource().get_json_report_object,
                           methods=['GET'],
                           endpoint='json_report_object')
api_blueprint.apispec.add_path(
    path='/report/{id}/json_report_object/{object_name}/',
    view=ReportResource.get_json_report_object)
api_blueprint.add_url_rule('/report/<id>/raw_report_object/<object_name>/',
                           view_func=ReportResource().get_raw_report_object,
                           methods=['GET'],
                           endpoint='raw_report_object')
api_blueprint.apispec.add_path(
    path='/report/{id}/raw_report_object/{object_name}/',
    view=ReportResource.get_raw_report_object)
Beispiel #5
0
                if parsed_report.errors:
                    return jsonify(parsed_report.errors), 400
                report = parsed_report.data

                report.sample = scheduled_analysis.sample
                report.analysis_system = scheduled_analysis.analysis_system_instance.analysis_system

                for key, f in request.files.items():
                    if f.mimetype == "application/json":
                        report.add_json_report_object(f)
                    else:
                        report.add_raw_report_object(f)

                report.save()
                scheduled_analysis.delete()
                return jsonify(ReportSchema().dump(report).data), 201
        except DoesNotExist:
            return jsonify({
                'error':
                'No object with key \'{}\' found'.format(kwargs['id'])
            }), 404


register_api_endpoint('scheduled_analysis', ScheduledAnalysisResource)

api_blueprint.add_url_rule('/scheduled_analysis/<id>/submit_report/',
                           view_func=ScheduledAnalysisResource().submit_report,
                           methods=['POST'])
api_blueprint.apispec.add_path(path='/scheduled_analysis/{id}/submit_report/',
                               view=ScheduledAnalysisResource.submit_report)
                    'error':
                    'No object with key \'{}\' found'.format(
                        kwargs[self.query_key_field])
                }), 404
            analysis_system_instance.update_last_seen()
            scheduled_analyses = ScheduledAnalysis.objects(
                analysis_system_instance=analysis_system_instance)
            serialized_result = ScheduledAnalysisSchema(
                many=True).dump(scheduled_analyses)
            return jsonify({
                'results': serialized_result.data,
            })
        else:
            return jsonify({
                'error':
                'Analysis instance  \'{}\' not found'.format(
                    kwargs[self.query_key_field])
            }), 404


register_api_endpoint('analysis_system_instance',
                      AnalysisSystemInstanceResource)

api_blueprint.add_url_rule(
    '/analysis_system_instance/<uuid>/scheduled_analyses/',
    view_func=AnalysisSystemInstanceResource().scheduled_analyses,
    methods=['GET'])
api_blueprint.apispec.add_path(
    '/analysis_system_instance/{uuid}/scheduled_analyses/',
    view=AnalysisSystemInstanceResource.scheduled_analyses)