From 6aa9fa7029ae15d0a18657fb9deccc3313aed9e1 Mon Sep 17 00:00:00 2001 From: Jan Friedli Date: Mon, 13 Jul 2020 08:01:07 +0200 Subject: addded oas for upload endpoint --- matweb/oas/upload.yml | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++ matweb/rest_api.py | 5 +++- 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 matweb/oas/upload.yml (limited to 'matweb') diff --git a/matweb/oas/upload.yml b/matweb/oas/upload.yml new file mode 100644 index 0000000..c7a9bd7 --- /dev/null +++ b/matweb/oas/upload.yml @@ -0,0 +1,80 @@ +--- +tags: + - "File Upload (Metadata removal)" +summary: 'Upload a single file which will be cleaned from metadata' +consumes: + - "application/json" +produces: + - "application/json" +parameters: +- in: "body" + name: "body" + description: "The file that will be cleaned from metadata. Note that the file must be base64 encoded" + required: true + schema: + type: "object" + properties: + file_name: + type: "string" + example: 'my_example.jpg' + file: + type: "string" + example: 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==' + +responses: + 200: + description: "An object containing all info about the cleaned file" + schema: + $ref: '#/definitions/UploadResponse' + 400: + description: "Invalid input" + schema: + $ref: '#/definitions/ErrorResponse' + 415: + description: "Unsupported file type" + schema: + $ref: '#/definitions/ErrorResponse' + 500: + description: "Unable to clean the file" + schema: + $ref: '#/definitions/ErrorResponse' + +definitions: + UploadResponse: + type: "object" + properties: + inactive_after_sec: + type: "integer" + format: "int64" + description: "Defines after how many seconds the download wont be available" + output_filename: + type: "string" + description: "The resulting filename after metadata removal" + mime: + type: "string" + description: "The mime type of the cleaned file" + key: + type: "string" + description: "A key used to guarantee file integrity" + secret: + type: "string" + description: "A secret used to guarantee file integrity" + meta: + type: "object" + description: "An object of the removed metadata where key indicates the metadata type" + items: + type: "string" + meta_after: + type: "object" + description: "An object of the remaining metadata where key indicates the metadata type" + items: + type: "string" + download_link: + type: "string" + description: "The link to download the cleaned file" + ErrorResponse: + type: "object" + properties: + message: + type: "string" + description: "A description of the error" \ No newline at end of file diff --git a/matweb/rest_api.py b/matweb/rest_api.py index 49334c0..4aeaa62 100644 --- a/matweb/rest_api.py +++ b/matweb/rest_api.py @@ -9,6 +9,8 @@ from flask import after_this_request, send_from_directory from flask_restful import Resource, reqparse, abort, request, url_for from cerberus import Validator from werkzeug.datastructures import FileStorage +from flasgger import swag_from + from matweb import file_removal_scheduler, utils @@ -17,7 +19,8 @@ class APIUpload(Resource): def __init__(self, **kwargs): self.upload_folder = kwargs['upload_folder'] - + + @swag_from('./oas/upload.yml') def post(self): utils.check_upload_folder(self.upload_folder) req_parser = reqparse.RequestParser() -- cgit v1.3