From 10e30b1174e2f3ecf83e0fa173974640646a35be Mon Sep 17 00:00:00 2001 From: Nikolai Ovtsinnikov Date: Mon, 22 Apr 2024 13:49:32 +0300 Subject: [PATCH] added Download file api endpoint to api docs generation --- lib/api/storage.js | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/lib/api/storage.js b/lib/api/storage.js index a704fde6..32d7e76c 100644 --- a/lib/api/storage.js +++ b/lib/api/storage.js @@ -377,11 +377,35 @@ module.exports = (db, server, storageHandler) => { ); server.get( - { name: 'storagefile', path: '/users/:user/storage/:file' }, + { + name: 'storagefile', + path: '/users/:user/storage/:file', + tags: ['Storage'], + summary: 'Download File', + description: 'This method returns stored file contents in binary form', + responseType: 'application/octet-stream', + validationObjs: { + requestBody: {}, + queryParams: {}, + pathParams: { + user: userId, + file: Joi.string().hex().lowercase().length(24).required().description('ID of the File') + }, + response: { + 200: { + description: 'Success', + model: Joi.binary() + } + } + } + }, tools.responseWrapper(async (req, res) => { - const schema = Joi.object().keys({ - user: Joi.string().hex().lowercase().length(24).required(), - file: Joi.string().hex().lowercase().length(24).required() + const { requestBody, queryParams, pathParams } = req.route.spec.validationObjs; + + const schema = Joi.object({ + ...requestBody, + ...queryParams, + ...pathParams }); const result = schema.validate(req.params, {