From 1c627fd8d2e60d4d790353886006485343d70084 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Fri, 4 Jun 2021 08:57:07 +0200 Subject: [PATCH] refactor docMiddleware to support operationId-only form --- server/controllers/api/videos/index.ts | 6 +++--- server/controllers/api/videos/update.ts | 4 ++-- server/controllers/api/videos/upload.ts | 8 ++++---- server/middlewares/doc.ts | 9 ++++++--- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index 7671f099e..703051ee2 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts @@ -2,7 +2,7 @@ import * as express from 'express' import toInt from 'validator/lib/toInt' import { doJSONRequest } from '@server/helpers/requests' import { LiveManager } from '@server/lib/live-manager' -import { docMiddleware } from '@server/middlewares/doc' +import { openapiOperationDoc } from '@server/middlewares/doc' import { getServerActor } from '@server/models/application/application' import { MVideoAccountLight } from '@server/types/models' import { VideosCommonQuery } from '../../../../shared' @@ -84,7 +84,7 @@ videosRouter.get('/:id/metadata/:videoFileId', asyncMiddleware(getVideoFileMetadata) ) videosRouter.get('/:id', - docMiddleware('https://docs.joinpeertube.org/api-rest-reference.html#operation/getVideo'), + openapiOperationDoc({ operationId: 'getVideo' }), optionalAuthenticate, asyncMiddleware(videosCustomGetValidator('only-video-with-rights')), asyncMiddleware(checkVideoFollowConstraints), @@ -96,7 +96,7 @@ videosRouter.post('/:id/views', ) videosRouter.delete('/:id', - docMiddleware('https://docs.joinpeertube.org/api-rest-reference.html#operation/delVideo'), + openapiOperationDoc({ operationId: 'delVideo' }), authenticate, asyncMiddleware(videosRemoveValidator), asyncRetryTransactionMiddleware(removeVideo) diff --git a/server/controllers/api/videos/update.ts b/server/controllers/api/videos/update.ts index 09e584d30..8affe71c6 100644 --- a/server/controllers/api/videos/update.ts +++ b/server/controllers/api/videos/update.ts @@ -20,7 +20,7 @@ import { autoBlacklistVideoIfNeeded } from '../../../lib/video-blacklist' import { asyncMiddleware, asyncRetryTransactionMiddleware, authenticate, videosUpdateValidator } from '../../../middlewares' import { ScheduleVideoUpdateModel } from '../../../models/video/schedule-video-update' import { VideoModel } from '../../../models/video/video' -import { docMiddleware } from '@server/middlewares/doc' +import { openapiOperationDoc } from '@server/middlewares/doc' const lTags = loggerTagsFactory('api', 'video') const auditLogger = auditLoggerFactory('videos') @@ -36,7 +36,7 @@ const reqVideoFileUpdate = createReqFiles( ) updateRouter.put('/:id', - docMiddleware('https://docs.joinpeertube.org/api-rest-reference.html#operation/putVideo'), + openapiOperationDoc({ operationId: 'putVideo' }), authenticate, reqVideoFileUpdate, asyncMiddleware(videosUpdateValidator), diff --git a/server/controllers/api/videos/upload.ts b/server/controllers/api/videos/upload.ts index 93a68f759..783cc329a 100644 --- a/server/controllers/api/videos/upload.ts +++ b/server/controllers/api/videos/upload.ts @@ -6,7 +6,7 @@ import { createTorrentAndSetInfoHash } from '@server/helpers/webtorrent' import { getLocalVideoActivityPubUrl } from '@server/lib/activitypub/url' import { addOptimizeOrMergeAudioJob, buildLocalVideoFromReq, buildVideoThumbnailsFromReq, setVideoTags } from '@server/lib/video' import { generateVideoFilename, getVideoFilePath } from '@server/lib/video-paths' -import { docMiddleware } from '@server/middlewares/doc' +import { openapiOperationDoc } from '@server/middlewares/doc' import { MVideo, MVideoFile, MVideoFullLight } from '@server/types/models' import { uploadx } from '@uploadx/core' import { VideoCreate, VideoState } from '../../../../shared' @@ -61,7 +61,7 @@ const reqVideoFileAddResumable = createReqFiles( ) uploadRouter.post('/upload', - docMiddleware('https://docs.joinpeertube.org/api-rest-reference.html#operation/uploadLegacy'), + openapiOperationDoc({ operationId: 'uploadLegacy' }), authenticate, reqVideoFileAdd, asyncMiddleware(videosAddLegacyValidator), @@ -69,7 +69,7 @@ uploadRouter.post('/upload', ) uploadRouter.post('/upload-resumable', - docMiddleware('https://docs.joinpeertube.org/api-rest-reference.html#operation/uploadResumableInit'), + openapiOperationDoc({ operationId: 'uploadResumableInit' }), authenticate, reqVideoFileAddResumable, asyncMiddleware(videosAddResumableInitValidator), @@ -82,7 +82,7 @@ uploadRouter.delete('/upload-resumable', ) uploadRouter.put('/upload-resumable', - docMiddleware('https://docs.joinpeertube.org/api-rest-reference.html#operation/uploadResumable'), + openapiOperationDoc({ operationId: 'uploadResumable' }), authenticate, uploadxMiddleware, // uploadx doesn't use call next() before the file upload completes asyncMiddleware(videosAddResumableValidator), diff --git a/server/middlewares/doc.ts b/server/middlewares/doc.ts index aa852cd77..3db85c68d 100644 --- a/server/middlewares/doc.ts +++ b/server/middlewares/doc.ts @@ -1,13 +1,16 @@ import * as express from 'express' -function docMiddleware (docUrl: string) { +function openapiOperationDoc (options: { + url?: string + operationId?: string +}) { return (req: express.Request, res: express.Response, next: express.NextFunction) => { - res.locals.docUrl = docUrl + res.locals.docUrl = options.url || 'https://docs.joinpeertube.org/api-rest-reference.html#operation/' + options.operationId if (next) return next() } } export { - docMiddleware + openapiOperationDoc }