mirror of
https://github.com/valitydev/swag-dark-api.git
synced 2024-11-06 02:45:22 +00:00
Added swag for file-storage (#20)
* added swag for file-storage * commit with ref * otstupbl fixes * methods fixed * operationId reorder * fixed path * added response * fix typo * fix type * test * fixed methods * test different wercker * indentation * fixed project
This commit is contained in:
parent
d4ac4e7d75
commit
60f7b1be6a
@ -1 +1 @@
|
||||
Subproject commit ea4aa042f482551d624fd49a570d28488f479e93
|
||||
Subproject commit 4a09386542ab4b98317a787fd6e06e0d3a1e38d6
|
77
gulpfile.js
77
gulpfile.js
@ -1,16 +1,44 @@
|
||||
var gulp = require('gulp');
|
||||
var util = require('gulp-util');
|
||||
var gulpConnect = require('gulp-connect');
|
||||
var connect = require('connect');
|
||||
var cors = require('cors');
|
||||
var path = require('path');
|
||||
var exec = require('child_process').exec;
|
||||
var portfinder = require('portfinder');
|
||||
var swaggerRepo = require('swagger-repo');
|
||||
const gulp = require('gulp');
|
||||
const util = require('gulp-util');
|
||||
const gulpConnect = require('gulp-connect');
|
||||
const connect = require('connect');
|
||||
const cors = require('cors');
|
||||
const path = require('path');
|
||||
const exec = require('child_process').exec;
|
||||
const portfinder = require('portfinder');
|
||||
const swaggerRepo = require('swagger-repo');
|
||||
|
||||
var DIST_DIR = 'web_deploy';
|
||||
const DIST_DIR = 'web_deploy';
|
||||
const SPEC_DIR = 'spec';
|
||||
|
||||
gulp.task('serve', ['build', 'watch', 'edit'], function() {
|
||||
gulp.task('edit', function(done) {
|
||||
portfinder.getPort({port: 5000}, function (err, port) {
|
||||
let app = connect();
|
||||
app.use(swaggerRepo.swaggerEditorMiddleware());
|
||||
app.listen(port);
|
||||
util.log(util.colors.green('swagger-editor started http://localhost:' + port));
|
||||
});
|
||||
done();
|
||||
});
|
||||
|
||||
gulp.task('build', function (cb) {
|
||||
exec('npm run build', function (err, stdout, stderr) {
|
||||
console.log(stderr);
|
||||
cb(err);
|
||||
});
|
||||
});
|
||||
|
||||
gulp.task('reload', gulp.series('build', function (done) {
|
||||
gulp.src(DIST_DIR).pipe(gulpConnect.reload());
|
||||
done();
|
||||
}));
|
||||
|
||||
gulp.task('watch', function (done) {
|
||||
gulp.watch([`${SPEC_DIR}/**/*`, 'web/**/*'], gulp.series('reload'));
|
||||
done();
|
||||
});
|
||||
|
||||
gulp.task('ui', function (done) {
|
||||
portfinder.getPort({port: 3000}, function (err, port) {
|
||||
gulpConnect.server({
|
||||
root: [DIST_DIR],
|
||||
@ -22,29 +50,10 @@ gulp.task('serve', ['build', 'watch', 'edit'], function() {
|
||||
]
|
||||
}
|
||||
});
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
gulp.task('edit', function() {
|
||||
portfinder.getPort({port: 5000}, function (err, port) {
|
||||
var app = connect();
|
||||
app.use(swaggerRepo.swaggerEditorMiddleware());
|
||||
app.listen(port);
|
||||
util.log(util.colors.green('swagger-editor started http://localhost:' + port));
|
||||
});
|
||||
});
|
||||
|
||||
gulp.task('build', function (cb) {
|
||||
exec('npm run build', function (err, stdout, stderr) {
|
||||
console.log(stderr);
|
||||
cb(err);
|
||||
});
|
||||
});
|
||||
|
||||
gulp.task('reload', ['build'], function () {
|
||||
gulp.src(DIST_DIR).pipe(gulpConnect.reload())
|
||||
});
|
||||
|
||||
gulp.task('watch', function () {
|
||||
gulp.watch(['api/swag-dark-api/**/*', 'web/**/*'], ['reload']);
|
||||
});
|
||||
gulp.task('serve', gulp.series('build', gulp.parallel('ui', 'edit', 'watch'), function (done) {
|
||||
done();
|
||||
}));
|
||||
|
@ -6,7 +6,7 @@
|
||||
"connect": "^3.4.1",
|
||||
"cors": "^2.7.1",
|
||||
"deploy-to-gh-pages": "^1.1.0",
|
||||
"gulp": "^3.9.1",
|
||||
"gulp": "^4.0.2",
|
||||
"gulp-connect": "^4.2.0",
|
||||
"gulp-util": "^3.0.7",
|
||||
"json-merge-patch": "^0.2.3",
|
||||
|
28
spec/definitions/FileData.yaml
Normal file
28
spec/definitions/FileData.yaml
Normal file
@ -0,0 +1,28 @@
|
||||
type: object
|
||||
required:
|
||||
- fileId
|
||||
- fileName
|
||||
- createdAt
|
||||
- md5
|
||||
- metadata
|
||||
properties:
|
||||
fileId:
|
||||
description: Идентификатор файла
|
||||
type: string
|
||||
maxLength: 40
|
||||
minLength: 1
|
||||
fileName:
|
||||
description: Имя файла
|
||||
type: string
|
||||
createdAt:
|
||||
description: Дата загрузки файла
|
||||
type: string
|
||||
format: date-time
|
||||
md5:
|
||||
description: сигнатура
|
||||
type: string
|
||||
metadata:
|
||||
description: Дополнительная информация о файле
|
||||
type: object
|
||||
additionalProperties:
|
||||
type: string
|
7
spec/definitions/FileDownload.yaml
Normal file
7
spec/definitions/FileDownload.yaml
Normal file
@ -0,0 +1,7 @@
|
||||
type: object
|
||||
required:
|
||||
- url
|
||||
properties:
|
||||
url:
|
||||
description: URL файла
|
||||
type: string
|
7
spec/definitions/FileUploadData.yaml
Normal file
7
spec/definitions/FileUploadData.yaml
Normal file
@ -0,0 +1,7 @@
|
||||
type: object
|
||||
properties:
|
||||
url:
|
||||
description: URL файла
|
||||
type: string
|
||||
fileData:
|
||||
$ref: '#/definitions/FileData'
|
20
spec/definitions/FileUploadRequest.yaml
Normal file
20
spec/definitions/FileUploadRequest.yaml
Normal file
@ -0,0 +1,20 @@
|
||||
type: object
|
||||
required:
|
||||
- fileName
|
||||
- metadata
|
||||
- expiresAt
|
||||
properties:
|
||||
fileName:
|
||||
description: Имя файла
|
||||
type: string
|
||||
maxLength: 40
|
||||
minLength: 1
|
||||
metadata:
|
||||
description: Дополнительная информация о файле
|
||||
type: object
|
||||
additionalProperties:
|
||||
type: string
|
||||
expiresAt:
|
||||
description: время до которого ссылка будет считаться действительной
|
||||
type: string
|
||||
format: date-time
|
23
spec/paths/files@upload.yaml
Normal file
23
spec/paths/files@upload.yaml
Normal file
@ -0,0 +1,23 @@
|
||||
post:
|
||||
description: Создать новый файл и сгенерировать ссылку для выгрузки файла на сервер
|
||||
operationId: uploadFile
|
||||
tags:
|
||||
- Files
|
||||
parameters:
|
||||
- $ref: '#/parameters/requestID'
|
||||
- $ref: '#/parameters/deadline'
|
||||
- name: uploadFileRequest
|
||||
in: body
|
||||
schema:
|
||||
$ref: '#/definitions/FileUploadRequest'
|
||||
responses:
|
||||
'201':
|
||||
description: Данные для загрузки файла на сервер
|
||||
schema:
|
||||
$ref: '#/definitions/FileUploadData'
|
||||
'400':
|
||||
$ref: '#/responses/BadRequest'
|
||||
'401':
|
||||
$ref: '#/responses/Unauthorized'
|
||||
'404':
|
||||
$ref: '#/responses/NotFound'
|
20
spec/paths/files@{fileID}@download.yaml
Normal file
20
spec/paths/files@{fileID}@download.yaml
Normal file
@ -0,0 +1,20 @@
|
||||
get:
|
||||
description: Получить ссылку для скачивания файла
|
||||
operationId: downloadFile
|
||||
tags:
|
||||
- Files
|
||||
parameters:
|
||||
- $ref: '#/parameters/requestID'
|
||||
- $ref: '#/parameters/deadline'
|
||||
- $ref: '#/parameters/fileID'
|
||||
responses:
|
||||
'200':
|
||||
description: Данные для получения файла
|
||||
schema:
|
||||
$ref: '#/definitions/FileDownload'
|
||||
'400':
|
||||
$ref: '#/responses/BadRequest'
|
||||
'401':
|
||||
$ref: '#/responses/Unauthorized'
|
||||
'404':
|
||||
$ref: '#/responses/NotFound'
|
20
spec/paths/files@{fileID}@info.yaml
Normal file
20
spec/paths/files@{fileID}@info.yaml
Normal file
@ -0,0 +1,20 @@
|
||||
get:
|
||||
description: Получить информацию о файле
|
||||
operationId: getFileInfo
|
||||
tags:
|
||||
- Files
|
||||
parameters:
|
||||
- $ref: '#/parameters/requestID'
|
||||
- $ref: '#/parameters/deadline'
|
||||
- $ref: '#/parameters/fileID'
|
||||
responses:
|
||||
'200':
|
||||
description: Данные файла
|
||||
schema:
|
||||
$ref: '#/definitions/FileData'
|
||||
'400':
|
||||
$ref: '#/responses/BadRequest'
|
||||
'401':
|
||||
$ref: '#/responses/Unauthorized'
|
||||
'404':
|
||||
$ref: '#/responses/NotFound'
|
@ -31,19 +31,6 @@ get:
|
||||
type: string
|
||||
maxLength: 40
|
||||
minLength: 1
|
||||
- name: refundStatus
|
||||
in: query
|
||||
description: Статус возврата
|
||||
type: string
|
||||
enum:
|
||||
- pending
|
||||
- succeeded
|
||||
- failed
|
||||
- x-rebillyMerge:
|
||||
- name: continuationToken
|
||||
in: query
|
||||
required: false
|
||||
- $ref: '#/definitions/ContinuationToken'
|
||||
responses:
|
||||
'200':
|
||||
description: Найденные возвраты
|
||||
@ -57,7 +44,7 @@ get:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/EnrichedSearchResult'
|
||||
'404':
|
||||
$ref: '#/responses/NotFound'
|
||||
'401':
|
||||
$ref: '#/responses/Unauthorized'
|
||||
'404':
|
||||
$ref: '#/responses/NotFound'
|
||||
|
@ -54,6 +54,10 @@ responses:
|
||||
description: Неверные данные
|
||||
schema:
|
||||
$ref: '#/definitions/DefaultLogicError'
|
||||
BadRequest:
|
||||
description: Некорректный запрос
|
||||
schema:
|
||||
$ref: '#/definitions/GeneralError'
|
||||
|
||||
parameters:
|
||||
requestID:
|
||||
@ -157,6 +161,14 @@ parameters:
|
||||
type: string
|
||||
maxLength: 40
|
||||
minLength: 1
|
||||
fileID:
|
||||
name: fileID
|
||||
in: path
|
||||
description: Идентификатор файла
|
||||
required: true
|
||||
type: string
|
||||
maxLength: 40
|
||||
minLength: 1
|
||||
|
||||
tags:
|
||||
- name: Search
|
||||
@ -178,4 +190,9 @@ tags:
|
||||
заявка не одобрена, вы можете добавлять изменения. После одобрения они
|
||||
будут применены к набору данных. В случае отказа по заявке данные
|
||||
останутся в неизменном состоянии. Ближайшим аналогом заявок можно
|
||||
представить Pull Request в распределенных системах контроля версий.
|
||||
представить Pull Request в распределенных системах контроля версий.
|
||||
|
||||
- name: Files
|
||||
x-displayName: Управление файлами
|
||||
description: >
|
||||
Получение ссылки на загрузку, получение ссылки на скачивание, информация о файле.
|
||||
|
@ -16,4 +16,4 @@ deploy:
|
||||
after-steps:
|
||||
- slack-notifier:
|
||||
url: ${SLACK_WEBHOOK_URL}
|
||||
username: "wercker"
|
||||
username: "wercker"
|
||||
|
Loading…
Reference in New Issue
Block a user