From 02ed6be314c2b50a6987a5171467b7a5465f237a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?c=C4=83t=C4=83lin?= Date: Tue, 28 Jun 2022 10:12:35 +0200 Subject: [PATCH] feat: add openapi design doc --- Caddyfile | 15 +++++ design/index.html | 17 ++++++ design/openapi.yml | 144 +++++++++++++++++++++++++++++++++++++++++++++ logger.go | 11 ++++ 4 files changed, 187 insertions(+) create mode 100644 Caddyfile create mode 100644 design/index.html create mode 100644 design/openapi.yml create mode 100644 logger.go diff --git a/Caddyfile b/Caddyfile new file mode 100644 index 0000000..644627c --- /dev/null +++ b/Caddyfile @@ -0,0 +1,15 @@ +http://localhost + +route /api/v1/* { + uri strip_prefix /api/v1 + reverse_proxy app +} + +route /docs/* { + uri strip_prefix /docs + file_server { + root /usr/share/caddy/www/design + index index.html + browse true + } +} diff --git a/design/index.html b/design/index.html new file mode 100644 index 0000000..c055fa0 --- /dev/null +++ b/design/index.html @@ -0,0 +1,17 @@ + + + + + + Scullion REST API + + + + + + + diff --git a/design/openapi.yml b/design/openapi.yml new file mode 100644 index 0000000..9538001 --- /dev/null +++ b/design/openapi.yml @@ -0,0 +1,144 @@ +openapi: "3.0.3" +info: + title: sfu + version: 0.1.0 + description: file upload server +servers: + - url: http://localhost:8080/api/v1/ + description: local server +paths: + /: + get: + summary: "list all uploaded files" + description: "list all uploaded files" + operationId: "list_files" + responses: + 200: + description: "file list successful" + content: + text/plain: + schema: + type: array + items: + type: string + format: uri + + 500: + description: "internal server error" + content: + text/plain: + schema: + type: string + default: "internal server error" + post: + summary: "upload file" + description: "uploaded a file" + operationId: "upload_file" + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + type: string + format: binary + description: "file to upload" + parameters: + - name: force + in: query + description: "force upload file which may overwrite an existing file with the same name" + required: false + schema: + type: boolean + default: false + responses: + 201: + description: "file upload successful" + content: + text/plain: + schema: + type: array + items: + type: string + 409: + description: "file already exists" + content: + text/plain: + schema: + type: string + default: "file already exists" + 500: + description: "internal server error" + content: + text/plain: + schema: + type: string + default: "internal server error" + /{file_name}: + get: + summary: "get file" + description: "get file" + operationId: "get_file" + parameters: + - name: file_name + in: path + description: "file name" + required: true + schema: + type: string + responses: + 200: + description: "file download successful" + content: + text/plain: + schema: + type: string + format: binary + 404: + description: "file not found" + content: + text/plain: + schema: + type: string + default: "file not found" + 500: + description: "internal server error" + content: + text/plain: + schema: + type: string + default: "internal server error" + delete: + summary: "delete file" + description: "delete file" + operationId: "delete_file" + parameters: + - name: file_name + in: path + description: "file name" + required: true + schema: + type: string + responses: + 200: + description: "file delete successful" + content: + text/plain: + schema: + type: string + default: "file delete successful" + 404: + description: "file not found" + content: + text/plain: + schema: + type: string + default: "file not found" + 500: + description: "internal server error" + content: + text/plain: + schema: + type: string + default: "internal server error" \ No newline at end of file diff --git a/logger.go b/logger.go new file mode 100644 index 0000000..a150e41 --- /dev/null +++ b/logger.go @@ -0,0 +1,11 @@ +package main + +import ( + "log" + "os" +) + +var Info = log.New(os.Stdout, "\u001b[34mINFO: \u001B[0m", log.LstdFlags|log.Lshortfile) +var Warning = log.New(os.Stdout, "\u001b[33mWARNING: \u001B[0m", log.LstdFlags|log.Lshortfile) +var Error = log.New(os.Stdout, "\u001b[31mERROR: \u001b[0m", log.LstdFlags|log.Lshortfile) +var Debug = log.New(os.Stdout, "\u001b[36mDEBUG: \u001B[0m", log.LstdFlags|log.Lshortfile)