chore: updated route
This commit is contained in:
parent
ba4d615d12
commit
11d2ece007
2 changed files with 498 additions and 6 deletions
|
|
@ -12,6 +12,8 @@ import { FileController } from './controllers/fileController';
|
||||||
import { FolderController } from './controllers/folderController';
|
import { FolderController } from './controllers/folderController';
|
||||||
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
||||||
import { SubFolderController } from './controllers/subFolderController';
|
import { SubFolderController } from './controllers/subFolderController';
|
||||||
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
||||||
|
import { SubFolderFileController } from './controllers/subFolderFileController';
|
||||||
import { expressAuthentication } from './utils/auth';
|
import { expressAuthentication } from './utils/auth';
|
||||||
// @ts-ignore - no great way to install types from subpackage
|
// @ts-ignore - no great way to install types from subpackage
|
||||||
const promiseAny = require('promise.any');
|
const promiseAny = require('promise.any');
|
||||||
|
|
@ -495,7 +497,6 @@ export function RegisterRoutes(app: Router) {
|
||||||
});
|
});
|
||||||
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
||||||
app.get('/cabinet/:cabinetName/drawer/:drawerName/folder/:folderName/subfolder',
|
app.get('/cabinet/:cabinetName/drawer/:drawerName/folder/:folderName/subfolder',
|
||||||
authenticateMiddleware([{"bearerAuth":[]}]),
|
|
||||||
...(fetchMiddlewares<RequestHandler>(SubFolderController)),
|
...(fetchMiddlewares<RequestHandler>(SubFolderController)),
|
||||||
...(fetchMiddlewares<RequestHandler>(SubFolderController.prototype.listFolder)),
|
...(fetchMiddlewares<RequestHandler>(SubFolderController.prototype.listFolder)),
|
||||||
|
|
||||||
|
|
@ -611,6 +612,137 @@ export function RegisterRoutes(app: Router) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
||||||
|
app.post('/cabinet/:cabinetName/drawer/:drawerName/folder/:folderName/subfolder/:subFolderName/file',
|
||||||
|
authenticateMiddleware([{"bearerAuth":[]}]),
|
||||||
|
upload.single('file'),
|
||||||
|
...(fetchMiddlewares<RequestHandler>(SubFolderFileController)),
|
||||||
|
...(fetchMiddlewares<RequestHandler>(SubFolderFileController.prototype.uploadFile)),
|
||||||
|
|
||||||
|
function SubFolderFileController_uploadFile(request: any, response: any, next: any) {
|
||||||
|
const args = {
|
||||||
|
request: {"in":"request","name":"request","required":true,"dataType":"object"},
|
||||||
|
file: {"in":"formData","name":"file","required":true,"dataType":"file"},
|
||||||
|
title: {"in":"formData","name":"title","required":true,"dataType":"string"},
|
||||||
|
description: {"in":"formData","name":"description","required":true,"dataType":"string"},
|
||||||
|
keyword: {"in":"formData","name":"keyword","required":true,"dataType":"string"},
|
||||||
|
category: {"in":"formData","name":"category","required":true,"dataType":"string"},
|
||||||
|
cabinetName: {"in":"path","name":"cabinetName","required":true,"dataType":"string"},
|
||||||
|
drawerName: {"in":"path","name":"drawerName","required":true,"dataType":"string"},
|
||||||
|
folderName: {"in":"path","name":"folderName","required":true,"dataType":"string"},
|
||||||
|
subFolderName: {"in":"path","name":"subFolderName","required":true,"dataType":"string"},
|
||||||
|
};
|
||||||
|
|
||||||
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
||||||
|
|
||||||
|
let validatedArgs: any[] = [];
|
||||||
|
try {
|
||||||
|
validatedArgs = getValidatedArgs(args, request, response);
|
||||||
|
|
||||||
|
const controller = new SubFolderFileController();
|
||||||
|
|
||||||
|
|
||||||
|
const promise = controller.uploadFile.apply(controller, validatedArgs as any);
|
||||||
|
promiseHandler(controller, promise, response, 201, next);
|
||||||
|
} catch (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
||||||
|
app.get('/cabinet/:cabinetName/drawer/:drawerName/folder/:folderName/subfolder/:subFolderName/file',
|
||||||
|
...(fetchMiddlewares<RequestHandler>(SubFolderFileController)),
|
||||||
|
...(fetchMiddlewares<RequestHandler>(SubFolderFileController.prototype.getFile)),
|
||||||
|
|
||||||
|
function SubFolderFileController_getFile(request: any, response: any, next: any) {
|
||||||
|
const args = {
|
||||||
|
cabinetName: {"in":"path","name":"cabinetName","required":true,"dataType":"string"},
|
||||||
|
drawerName: {"in":"path","name":"drawerName","required":true,"dataType":"string"},
|
||||||
|
folderName: {"in":"path","name":"folderName","required":true,"dataType":"string"},
|
||||||
|
subFolderName: {"in":"path","name":"subFolderName","required":true,"dataType":"string"},
|
||||||
|
};
|
||||||
|
|
||||||
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
||||||
|
|
||||||
|
let validatedArgs: any[] = [];
|
||||||
|
try {
|
||||||
|
validatedArgs = getValidatedArgs(args, request, response);
|
||||||
|
|
||||||
|
const controller = new SubFolderFileController();
|
||||||
|
|
||||||
|
|
||||||
|
const promise = controller.getFile.apply(controller, validatedArgs as any);
|
||||||
|
promiseHandler(controller, promise, response, 200, next);
|
||||||
|
} catch (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
||||||
|
app.patch('/cabinet/:cabinetName/drawer/:drawerName/folder/:folderName/subfolder/:subFolderName/file/:fileName',
|
||||||
|
authenticateMiddleware([{"bearerAuth":[]}]),
|
||||||
|
upload.single('file'),
|
||||||
|
...(fetchMiddlewares<RequestHandler>(SubFolderFileController)),
|
||||||
|
...(fetchMiddlewares<RequestHandler>(SubFolderFileController.prototype.updateFile)),
|
||||||
|
|
||||||
|
function SubFolderFileController_updateFile(request: any, response: any, next: any) {
|
||||||
|
const args = {
|
||||||
|
request: {"in":"request","name":"request","required":true,"dataType":"object"},
|
||||||
|
cabinetName: {"in":"path","name":"cabinetName","required":true,"dataType":"string"},
|
||||||
|
drawerName: {"in":"path","name":"drawerName","required":true,"dataType":"string"},
|
||||||
|
folderName: {"in":"path","name":"folderName","required":true,"dataType":"string"},
|
||||||
|
subFolderName: {"in":"path","name":"subFolderName","required":true,"dataType":"string"},
|
||||||
|
fileName: {"in":"path","name":"fileName","required":true,"dataType":"string"},
|
||||||
|
file: {"in":"formData","name":"file","dataType":"file"},
|
||||||
|
title: {"in":"formData","name":"title","dataType":"string"},
|
||||||
|
description: {"in":"formData","name":"description","dataType":"string"},
|
||||||
|
keyword: {"in":"formData","name":"keyword","dataType":"string"},
|
||||||
|
category: {"in":"formData","name":"category","dataType":"string"},
|
||||||
|
};
|
||||||
|
|
||||||
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
||||||
|
|
||||||
|
let validatedArgs: any[] = [];
|
||||||
|
try {
|
||||||
|
validatedArgs = getValidatedArgs(args, request, response);
|
||||||
|
|
||||||
|
const controller = new SubFolderFileController();
|
||||||
|
|
||||||
|
|
||||||
|
const promise = controller.updateFile.apply(controller, validatedArgs as any);
|
||||||
|
promiseHandler(controller, promise, response, 200, next);
|
||||||
|
} catch (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
||||||
|
app.delete('/cabinet/:cabinetName/drawer/:drawerName/folder/:folderName/subfolder/:subFolderName/file/:fileName',
|
||||||
|
authenticateMiddleware([{"bearerAuth":[]}]),
|
||||||
|
...(fetchMiddlewares<RequestHandler>(SubFolderFileController)),
|
||||||
|
...(fetchMiddlewares<RequestHandler>(SubFolderFileController.prototype.deleteFile)),
|
||||||
|
|
||||||
|
function SubFolderFileController_deleteFile(request: any, response: any, next: any) {
|
||||||
|
const args = {
|
||||||
|
cabinetName: {"in":"path","name":"cabinetName","required":true,"dataType":"string"},
|
||||||
|
drawerName: {"in":"path","name":"drawerName","required":true,"dataType":"string"},
|
||||||
|
folderName: {"in":"path","name":"folderName","required":true,"dataType":"string"},
|
||||||
|
subFolderName: {"in":"path","name":"subFolderName","required":true,"dataType":"string"},
|
||||||
|
fileName: {"in":"path","name":"fileName","required":true,"dataType":"string"},
|
||||||
|
};
|
||||||
|
|
||||||
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
||||||
|
|
||||||
|
let validatedArgs: any[] = [];
|
||||||
|
try {
|
||||||
|
validatedArgs = getValidatedArgs(args, request, response);
|
||||||
|
|
||||||
|
const controller = new SubFolderFileController();
|
||||||
|
|
||||||
|
|
||||||
|
const promise = controller.deleteFile.apply(controller, validatedArgs as any);
|
||||||
|
promiseHandler(controller, promise, response, 200, next);
|
||||||
|
} catch (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
||||||
|
|
||||||
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -936,11 +936,7 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"SubFolder"
|
"SubFolder"
|
||||||
],
|
],
|
||||||
"security": [
|
"security": [],
|
||||||
{
|
|
||||||
"bearerAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"in": "path",
|
"in": "path",
|
||||||
|
|
@ -1158,6 +1154,370 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"/cabinet/{cabinetName}/drawer/{drawerName}/folder/{folderName}/subfolder/{subFolderName}/file": {
|
||||||
|
"post": {
|
||||||
|
"operationId": "UploadFile",
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": [
|
||||||
|
"SubFolder File"
|
||||||
|
],
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"bearerAuth": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "cabinetName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "drawerName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "folderName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "subFolderName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"requestBody": {
|
||||||
|
"required": true,
|
||||||
|
"content": {
|
||||||
|
"multipart/form-data": {
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"file": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "binary"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"keyword": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"category": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"file",
|
||||||
|
"title",
|
||||||
|
"description",
|
||||||
|
"keyword",
|
||||||
|
"category"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"get": {
|
||||||
|
"operationId": "GetFile",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"items": {
|
||||||
|
"properties": {
|
||||||
|
"createdBy": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"createdAt": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"updatedBy": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"updatedAt": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"keyword": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"category": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"fileType": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"fileSize": {
|
||||||
|
"type": "number",
|
||||||
|
"format": "double"
|
||||||
|
},
|
||||||
|
"fileName": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"pathname": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"createdBy",
|
||||||
|
"createdAt",
|
||||||
|
"updatedBy",
|
||||||
|
"updatedAt",
|
||||||
|
"keyword",
|
||||||
|
"category",
|
||||||
|
"description",
|
||||||
|
"title",
|
||||||
|
"fileType",
|
||||||
|
"fileSize",
|
||||||
|
"fileName",
|
||||||
|
"pathname"
|
||||||
|
],
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": [
|
||||||
|
"SubFolder File"
|
||||||
|
],
|
||||||
|
"security": [],
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "cabinetName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "drawerName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "folderName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "subFolderName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/cabinet/{cabinetName}/drawer/{drawerName}/folder/{folderName}/subfolder/{subFolderName}/file/{fileName}": {
|
||||||
|
"patch": {
|
||||||
|
"operationId": "UpdateFile",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": [
|
||||||
|
"SubFolder File"
|
||||||
|
],
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"bearerAuth": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "cabinetName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "drawerName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "folderName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "subFolderName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "fileName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"requestBody": {
|
||||||
|
"required": false,
|
||||||
|
"content": {
|
||||||
|
"multipart/form-data": {
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"file": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "binary"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"keyword": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"category": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"operationId": "DeleteFile",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": [
|
||||||
|
"SubFolder File"
|
||||||
|
],
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"bearerAuth": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "cabinetName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "drawerName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "folderName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "subFolderName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "fileName",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"servers": [
|
"servers": [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue