From 2d53be0267acc49cda46707b885096193a1f4e9c Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Mon, 7 Dec 2020 14:32:36 +0100 Subject: replace numbers with typed http status codes (#3409) --- server/controllers/api/abuse.ts | 7 ++++--- server/controllers/api/bulk.ts | 5 +++-- server/controllers/api/index.ts | 3 ++- server/controllers/api/oauth-clients.ts | 3 ++- server/controllers/api/plugins.ts | 11 ++++++----- server/controllers/api/search.ts | 5 +++-- server/controllers/api/server/contact.ts | 3 ++- server/controllers/api/server/follows.ts | 9 +++++---- server/controllers/api/server/redundancy.ts | 7 ++++--- server/controllers/api/server/server-blocklist.ts | 9 +++++---- server/controllers/api/users/index.ts | 19 ++++++++++--------- server/controllers/api/users/me.ts | 5 +++-- server/controllers/api/users/my-blocklist.ts | 9 +++++---- server/controllers/api/users/my-history.ts | 5 ++++- server/controllers/api/users/my-notifications.ts | 7 ++++--- server/controllers/api/users/my-subscriptions.ts | 7 +++++-- server/controllers/api/video-channel.ts | 5 +++-- server/controllers/api/video-playlist.ts | 13 +++++++------ server/controllers/api/videos/blacklist.ts | 7 ++++--- server/controllers/api/videos/captions.ts | 5 +++-- server/controllers/api/videos/comment.ts | 7 +++++-- server/controllers/api/videos/import.ts | 3 ++- server/controllers/api/videos/index.ts | 15 ++++++++++----- server/controllers/api/videos/live.ts | 3 ++- server/controllers/api/videos/ownership.ts | 9 ++++++--- server/controllers/api/videos/rate.ts | 5 ++++- server/controllers/api/videos/watching.ts | 5 ++++- 27 files changed, 117 insertions(+), 74 deletions(-) (limited to 'server/controllers/api') diff --git a/server/controllers/api/abuse.ts b/server/controllers/api/abuse.ts index 25d6e2ab0..0ab74bdff 100644 --- a/server/controllers/api/abuse.ts +++ b/server/controllers/api/abuse.ts @@ -6,6 +6,7 @@ import { AbuseModel } from '@server/models/abuse/abuse' import { AbuseMessageModel } from '@server/models/abuse/abuse-message' import { getServerActor } from '@server/models/application/application' import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse' +import { HttpStatusCode } from '@shared/core-utils/miscs/http-error-codes' import { AbuseCreate, AbuseState, UserRight } from '../../../shared' import { getFormattedObjects } from '../../helpers/utils' import { sequelizeTypescript } from '../../initializers/database' @@ -141,7 +142,7 @@ async function updateAbuse (req: express.Request, res: express.Response) { // Do not send the delete to other instances, we updated OUR copy of this abuse - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } async function deleteAbuse (req: express.Request, res: express.Response) { @@ -153,7 +154,7 @@ async function deleteAbuse (req: express.Request, res: express.Response) { // Do not send the delete to other instances, we delete OUR copy of this abuse - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } async function reportAbuse (req: express.Request, res: express.Response) { @@ -243,5 +244,5 @@ async function deleteAbuseMessage (req: express.Request, res: express.Response) return abuseMessage.destroy({ transaction: t }) }) - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } diff --git a/server/controllers/api/bulk.ts b/server/controllers/api/bulk.ts index 1fe139c92..649351029 100644 --- a/server/controllers/api/bulk.ts +++ b/server/controllers/api/bulk.ts @@ -2,8 +2,9 @@ import * as express from 'express' import { asyncMiddleware, authenticate } from '../../middlewares' import { bulkRemoveCommentsOfValidator } from '@server/middlewares/validators/bulk' import { VideoCommentModel } from '@server/models/video/video-comment' -import { BulkRemoveCommentsOfBody } from '@shared/models/bulk/bulk-remove-comments-of-body.model' import { removeComment } from '@server/lib/video-comment' +import { BulkRemoveCommentsOfBody } from '@shared/models/bulk/bulk-remove-comments-of-body.model' +import { HttpStatusCode } from '@shared/core-utils/miscs/http-error-codes' const bulkRouter = express.Router() @@ -33,7 +34,7 @@ async function bulkRemoveCommentsOf (req: express.Request, res: express.Response const comments = await VideoCommentModel.listForBulkDelete(account, filter) // Don't wait result - res.sendStatus(204) + res.sendStatus(HttpStatusCode.NO_CONTENT_204) for (const comment of comments) { await removeComment(comment) diff --git a/server/controllers/api/index.ts b/server/controllers/api/index.ts index eda9e04d1..7ade1df3a 100644 --- a/server/controllers/api/index.ts +++ b/server/controllers/api/index.ts @@ -1,6 +1,7 @@ import * as cors from 'cors' import * as express from 'express' import * as RateLimit from 'express-rate-limit' +import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes' import { badRequest } from '../../helpers/express-utils' import { CONFIG } from '../../initializers/config' import { abuseRouter } from './abuse' @@ -56,5 +57,5 @@ export { apiRouter } // --------------------------------------------------------------------------- function pong (req: express.Request, res: express.Response) { - return res.send('pong').status(200).end() + return res.send('pong').status(HttpStatusCode.OK_200).end() } diff --git a/server/controllers/api/oauth-clients.ts b/server/controllers/api/oauth-clients.ts index b2de8bcf5..c21e2298d 100644 --- a/server/controllers/api/oauth-clients.ts +++ b/server/controllers/api/oauth-clients.ts @@ -1,5 +1,6 @@ import * as express from 'express' import { OAuthClientLocal } from '../../../shared' +import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes' import { logger } from '../../helpers/logger' import { CONFIG } from '../../initializers/config' import { asyncMiddleware } from '../../middlewares' @@ -23,7 +24,7 @@ async function getLocalClient (req: express.Request, res: express.Response, next // Don't make this check if this is a test instance if (process.env.NODE_ENV !== 'test' && req.get('host') !== headerHostShouldBe) { logger.info('Getting client tokens for host %s is forbidden (expected %s).', req.get('host'), headerHostShouldBe) - return res.type('json').status(403).end() + return res.type('json').status(HttpStatusCode.FORBIDDEN_403).end() } const client = await OAuthClientModel.loadFirstClient() diff --git a/server/controllers/api/plugins.ts b/server/controllers/api/plugins.ts index f8a0d19ca..1c0b5edb1 100644 --- a/server/controllers/api/plugins.ts +++ b/server/controllers/api/plugins.ts @@ -27,6 +27,7 @@ import { listAvailablePluginsFromIndex } from '../../lib/plugins/plugin-index' import { PeertubePluginIndexList } from '../../../shared/models/plugins/peertube-plugin-index-list.model' import { RegisteredServerSettings } from '../../../shared/models/plugins/register-server-setting.model' import { PublicServerSetting } from '../../../shared/models/plugins/public-server.setting' +import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes' const pluginRouter = express.Router() @@ -140,7 +141,7 @@ async function installPlugin (req: express.Request, res: express.Response) { return res.json(plugin.toFormattedJSON()) } catch (err) { logger.warn('Cannot install plugin %s.', toInstall, { err }) - return res.sendStatus(400) + return res.sendStatus(HttpStatusCode.BAD_REQUEST_400) } } @@ -155,7 +156,7 @@ async function updatePlugin (req: express.Request, res: express.Response) { return res.json(plugin.toFormattedJSON()) } catch (err) { logger.warn('Cannot update plugin %s.', toUpdate, { err }) - return res.sendStatus(400) + return res.sendStatus(HttpStatusCode.BAD_REQUEST_400) } } @@ -164,7 +165,7 @@ async function uninstallPlugin (req: express.Request, res: express.Response) { await PluginManager.Instance.uninstall(body.npmName) - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } function getPublicPluginSettings (req: express.Request, res: express.Response) { @@ -193,7 +194,7 @@ async function updatePluginSettings (req: express.Request, res: express.Response await PluginManager.Instance.onSettingsChanged(plugin.name, plugin.settings) - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } async function listAvailablePlugins (req: express.Request, res: express.Response) { @@ -202,7 +203,7 @@ async function listAvailablePlugins (req: express.Request, res: express.Response const resultList = await listAvailablePluginsFromIndex(query) if (!resultList) { - return res.status(503) + return res.status(HttpStatusCode.SERVICE_UNAVAILABLE_503) .json({ error: 'Plugin index unavailable. Please retry later' }) .end() } diff --git a/server/controllers/api/search.ts b/server/controllers/api/search.ts index 6e2d11d93..353fd171b 100644 --- a/server/controllers/api/search.ts +++ b/server/controllers/api/search.ts @@ -6,6 +6,7 @@ import { getOrCreateVideoAndAccountAndChannel } from '@server/lib/activitypub/vi import { AccountBlocklistModel } from '@server/models/account/account-blocklist' import { getServerActor } from '@server/models/application/application' import { ServerBlocklistModel } from '@server/models/server/server-blocklist' +import { HttpStatusCode } from '@shared/core-utils/miscs/http-error-codes' import { ResultList, Video, VideoChannel } from '@shared/models' import { SearchTargetQuery } from '@shared/models/search/search-target-query.model' import { VideoChannelsSearchQuery, VideosSearchQuery } from '../../../shared/models/search' @@ -99,7 +100,7 @@ async function searchVideoChannelsIndex (query: VideoChannelsSearchQuery, res: e } catch (err) { logger.warn('Cannot use search index to make video channels search.', { err }) - return res.sendStatus(500) + return res.sendStatus(HttpStatusCode.INTERNAL_SERVER_ERROR_500) } } @@ -191,7 +192,7 @@ async function searchVideosIndex (query: VideosSearchQuery, res: express.Respons } catch (err) { logger.warn('Cannot use search index to make video search.', { err }) - return res.sendStatus(500) + return res.sendStatus(HttpStatusCode.INTERNAL_SERVER_ERROR_500) } } diff --git a/server/controllers/api/server/contact.ts b/server/controllers/api/server/contact.ts index de02ffc0b..caddc0909 100644 --- a/server/controllers/api/server/contact.ts +++ b/server/controllers/api/server/contact.ts @@ -3,6 +3,7 @@ import { asyncMiddleware, contactAdministratorValidator } from '../../../middlew import { Redis } from '../../../lib/redis' import { Emailer } from '../../../lib/emailer' import { ContactForm } from '../../../../shared/models/server' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const contactRouter = express.Router() @@ -18,7 +19,7 @@ async function contactAdministrator (req: express.Request, res: express.Response await Redis.Instance.setContactFormIp(req.ip) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } // --------------------------------------------------------------------------- diff --git a/server/controllers/api/server/follows.ts b/server/controllers/api/server/follows.ts index 517d1897e..80025bc5b 100644 --- a/server/controllers/api/server/follows.ts +++ b/server/controllers/api/server/follows.ts @@ -28,6 +28,7 @@ import { removeRedundanciesOfServer } from '../../../lib/redundancy' import { sequelizeTypescript } from '../../../initializers/database' import { autoFollowBackIfNeeded } from '../../../lib/activitypub/follow' import { getServerActor } from '@server/models/application/application' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const serverFollowsRouter = express.Router() serverFollowsRouter.get('/following', @@ -138,7 +139,7 @@ async function followInstance (req: express.Request, res: express.Response) { JobQueue.Instance.createJob({ type: 'activitypub-follow', payload }) } - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function removeFollowing (req: express.Request, res: express.Response) { @@ -159,7 +160,7 @@ async function removeFollowing (req: express.Request, res: express.Response) { await follow.destroy({ transaction: t }) }) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function removeOrRejectFollower (req: express.Request, res: express.Response) { @@ -169,7 +170,7 @@ async function removeOrRejectFollower (req: express.Request, res: express.Respon await follow.destroy() - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function acceptFollower (req: express.Request, res: express.Response) { @@ -182,5 +183,5 @@ async function acceptFollower (req: express.Request, res: express.Response) { await autoFollowBackIfNeeded(follow) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } diff --git a/server/controllers/api/server/redundancy.ts b/server/controllers/api/server/redundancy.ts index 1ced0759e..7c13dc21b 100644 --- a/server/controllers/api/server/redundancy.ts +++ b/server/controllers/api/server/redundancy.ts @@ -19,6 +19,7 @@ import { removeRedundanciesOfServer, removeVideoRedundancy } from '../../../lib/ import { logger } from '../../../helpers/logger' import { VideoRedundancyModel } from '@server/models/redundancy/video-redundancy' import { JobQueue } from '@server/lib/job-queue' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const serverRedundancyRouter = express.Router() @@ -89,13 +90,13 @@ async function addVideoRedundancy (req: express.Request, res: express.Response) payload }) - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } async function removeVideoRedundancyController (req: express.Request, res: express.Response) { await removeVideoRedundancy(res.locals.videoRedundancy) - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } async function updateRedundancy (req: express.Request, res: express.Response) { @@ -109,5 +110,5 @@ async function updateRedundancy (req: express.Request, res: express.Response) { removeRedundanciesOfServer(server.id) .catch(err => logger.error('Cannot remove redundancy of %s.', server.host, { err })) - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } diff --git a/server/controllers/api/server/server-blocklist.ts b/server/controllers/api/server/server-blocklist.ts index 78e8a7e09..6e341c0fb 100644 --- a/server/controllers/api/server/server-blocklist.ts +++ b/server/controllers/api/server/server-blocklist.ts @@ -25,6 +25,7 @@ import { } from '../../../middlewares/validators' import { AccountBlocklistModel } from '../../../models/account/account-blocklist' import { ServerBlocklistModel } from '../../../models/server/server-blocklist' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const serverBlocklistRouter = express.Router() @@ -108,7 +109,7 @@ async function blockAccount (req: express.Request, res: express.Response) { forUserId: null // For all users }).catch(err => logger.error('Cannot remove notifications after an account mute.', { err })) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function unblockAccount (req: express.Request, res: express.Response) { @@ -116,7 +117,7 @@ async function unblockAccount (req: express.Request, res: express.Response) { await removeAccountFromBlocklist(accountBlock) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function listBlockedServers (req: express.Request, res: express.Response) { @@ -145,7 +146,7 @@ async function blockServer (req: express.Request, res: express.Response) { forUserId: null // For all users }).catch(err => logger.error('Cannot remove notifications after a server mute.', { err })) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function unblockServer (req: express.Request, res: express.Response) { @@ -153,5 +154,5 @@ async function unblockServer (req: express.Request, res: express.Response) { await removeServerFromBlocklist(serverBlock) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } diff --git a/server/controllers/api/users/index.ts b/server/controllers/api/users/index.ts index 5b113feac..d743a9912 100644 --- a/server/controllers/api/users/index.ts +++ b/server/controllers/api/users/index.ts @@ -52,6 +52,7 @@ import { myVideosHistoryRouter } from './my-history' import { myNotificationsRouter } from './my-notifications' import { mySubscriptionsRouter } from './my-subscriptions' import { myVideoPlaylistsRouter } from './my-video-playlists' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const auditLogger = auditLoggerFactory('users') @@ -255,7 +256,7 @@ async function registerUser (req: express.Request, res: express.Response) { Hooks.runAction('action:api.user.registered', { body, user, account, videoChannel }) - return res.type('json').status(204).end() + return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() } async function unblockUser (req: express.Request, res: express.Response) { @@ -265,7 +266,7 @@ async function unblockUser (req: express.Request, res: express.Response) { Hooks.runAction('action:api.user.unblocked', { user }) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function blockUser (req: express.Request, res: express.Response) { @@ -276,7 +277,7 @@ async function blockUser (req: express.Request, res: express.Response) { Hooks.runAction('action:api.user.blocked', { user }) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } function getUser (req: express.Request, res: express.Response) { @@ -310,7 +311,7 @@ async function removeUser (req: express.Request, res: express.Response) { Hooks.runAction('action:api.user.deleted', { user }) - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } async function updateUser (req: express.Request, res: express.Response) { @@ -338,7 +339,7 @@ async function updateUser (req: express.Request, res: express.Response) { // Don't need to send this update to followers, these attributes are not federated - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } async function askResetUserPassword (req: express.Request, res: express.Response) { @@ -348,7 +349,7 @@ async function askResetUserPassword (req: express.Request, res: express.Response const url = WEBSERVER.URL + '/reset-password?userId=' + user.id + '&verificationString=' + verificationString await Emailer.Instance.addPasswordResetEmailJob(user.username, user.email, url) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function resetUserPassword (req: express.Request, res: express.Response) { @@ -358,7 +359,7 @@ async function resetUserPassword (req: express.Request, res: express.Response) { await user.save() await Redis.Instance.removePasswordVerificationString(user.id) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function reSendVerifyUserEmail (req: express.Request, res: express.Response) { @@ -366,7 +367,7 @@ async function reSendVerifyUserEmail (req: express.Request, res: express.Respons await sendVerifyUserEmail(user) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function verifyUserEmail (req: express.Request, res: express.Response) { @@ -380,7 +381,7 @@ async function verifyUserEmail (req: express.Request, res: express.Response) { await user.save() - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function changeUserBlock (res: express.Response, user: MUserAccountDefault, block: boolean, reason?: string) { diff --git a/server/controllers/api/users/me.ts b/server/controllers/api/users/me.ts index b490518fc..3d2a325fe 100644 --- a/server/controllers/api/users/me.ts +++ b/server/controllers/api/users/me.ts @@ -28,6 +28,7 @@ import { AccountVideoRateModel } from '../../../models/account/account-video-rat import { UserModel } from '../../../models/account/user' import { VideoModel } from '../../../models/video/video' import { VideoImportModel } from '../../../models/video/video-import' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const reqAvatarFile = createReqFiles([ 'avatarfile' ], MIMETYPES.IMAGE.MIMETYPE_EXT, { avatarfile: CONFIG.STORAGE.TMP_DIR }) @@ -162,7 +163,7 @@ async function deleteMe (req: express.Request, res: express.Response) { await user.destroy() - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } async function updateMe (req: express.Request, res: express.Response) { @@ -210,7 +211,7 @@ async function updateMe (req: express.Request, res: express.Response) { await sendVerifyUserEmail(user, true) } - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } async function updateMyAvatar (req: express.Request, res: express.Response) { diff --git a/server/controllers/api/users/my-blocklist.ts b/server/controllers/api/users/my-blocklist.ts index 6eba22d52..faaef3ac0 100644 --- a/server/controllers/api/users/my-blocklist.ts +++ b/server/controllers/api/users/my-blocklist.ts @@ -22,6 +22,7 @@ import { addAccountInBlocklist, addServerInBlocklist, removeAccountFromBlocklist import { ServerBlocklistModel } from '../../../models/server/server-blocklist' import { UserNotificationModel } from '@server/models/account/user-notification' import { logger } from '@server/helpers/logger' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const myBlocklistRouter = express.Router() @@ -99,7 +100,7 @@ async function blockAccount (req: express.Request, res: express.Response) { forUserId: user.id }).catch(err => logger.error('Cannot remove notifications after an account mute.', { err })) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function unblockAccount (req: express.Request, res: express.Response) { @@ -107,7 +108,7 @@ async function unblockAccount (req: express.Request, res: express.Response) { await removeAccountFromBlocklist(accountBlock) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function listBlockedServers (req: express.Request, res: express.Response) { @@ -136,7 +137,7 @@ async function blockServer (req: express.Request, res: express.Response) { forUserId: user.id }).catch(err => logger.error('Cannot remove notifications after a server mute.', { err })) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function unblockServer (req: express.Request, res: express.Response) { @@ -144,5 +145,5 @@ async function unblockServer (req: express.Request, res: express.Response) { await removeServerFromBlocklist(serverBlock) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } diff --git a/server/controllers/api/users/my-history.ts b/server/controllers/api/users/my-history.ts index dc915977f..80d4dc748 100644 --- a/server/controllers/api/users/my-history.ts +++ b/server/controllers/api/users/my-history.ts @@ -10,6 +10,7 @@ import { import { getFormattedObjects } from '../../../helpers/utils' import { UserVideoHistoryModel } from '../../../models/account/user-video-history' import { sequelizeTypescript } from '../../../initializers/database' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const myVideosHistoryRouter = express.Router() @@ -50,5 +51,7 @@ async function removeUserHistory (req: express.Request, res: express.Response) { return UserVideoHistoryModel.removeUserHistoryBefore(user, beforeDate, t) }) - return res.type('json').status(204).end() + return res.type('json') + .status(HttpStatusCode.NO_CONTENT_204) + .end() } diff --git a/server/controllers/api/users/my-notifications.ts b/server/controllers/api/users/my-notifications.ts index 050866960..5f5e4c5e6 100644 --- a/server/controllers/api/users/my-notifications.ts +++ b/server/controllers/api/users/my-notifications.ts @@ -19,6 +19,7 @@ import { } from '../../../middlewares/validators/user-notifications' import { UserNotificationSetting } from '../../../../shared/models/users' import { UserNotificationSettingModel } from '../../../models/account/user-notification-setting' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const myNotificationsRouter = express.Router() @@ -84,7 +85,7 @@ async function updateNotificationSettings (req: express.Request, res: express.Re await UserNotificationSettingModel.update(values, query) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function listUserNotifications (req: express.Request, res: express.Response) { @@ -100,7 +101,7 @@ async function markAsReadUserNotifications (req: express.Request, res: express.R await UserNotificationModel.markAsRead(user.id, req.body.ids) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function markAsReadAllUserNotifications (req: express.Request, res: express.Response) { @@ -108,5 +109,5 @@ async function markAsReadAllUserNotifications (req: express.Request, res: expres await UserNotificationModel.markAllAsRead(user.id) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } diff --git a/server/controllers/api/users/my-subscriptions.ts b/server/controllers/api/users/my-subscriptions.ts index 66b33c477..ec77ddd7a 100644 --- a/server/controllers/api/users/my-subscriptions.ts +++ b/server/controllers/api/users/my-subscriptions.ts @@ -27,6 +27,7 @@ import { import { ActorFollowModel } from '../../../models/activitypub/actor-follow' import { VideoModel } from '../../../models/video/video' import { sendUndoFollow } from '@server/lib/activitypub/send' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const mySubscriptionsRouter = express.Router() @@ -126,7 +127,7 @@ function addUserSubscription (req: express.Request, res: express.Response) { JobQueue.Instance.createJob({ type: 'activitypub-follow', payload }) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } function getUserSubscription (req: express.Request, res: express.Response) { @@ -144,7 +145,9 @@ async function deleteUserSubscription (req: express.Request, res: express.Respon return subscription.destroy({ transaction: t }) }) - return res.type('json').status(204).end() + return res.type('json') + .status(HttpStatusCode.NO_CONTENT_204) + .end() } async function getUserSubscriptions (req: express.Request, res: express.Response) { diff --git a/server/controllers/api/video-channel.ts b/server/controllers/api/video-channel.ts index 45c936978..5c96950c5 100644 --- a/server/controllers/api/video-channel.ts +++ b/server/controllers/api/video-channel.ts @@ -38,6 +38,7 @@ import { AccountModel } from '../../models/account/account' import { VideoModel } from '../../models/video/video' import { VideoChannelModel } from '../../models/video/video-channel' import { VideoPlaylistModel } from '../../models/video/video-playlist' +import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes' const auditLogger = auditLoggerFactory('channels') const reqAvatarFile = createReqFiles([ 'avatarfile' ], MIMETYPES.IMAGE.MIMETYPE_EXT, { avatarfile: CONFIG.STORAGE.TMP_DIR }) @@ -212,7 +213,7 @@ async function updateVideoChannel (req: express.Request, res: express.Response) throw err } - res.type('json').status(204).end() + res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() // Don't process in a transaction, and after the response because it could be long if (doBulkVideoUpdate) { @@ -232,7 +233,7 @@ async function removeVideoChannel (req: express.Request, res: express.Response) logger.info('Video channel %s deleted.', videoChannelInstance.Actor.url) }) - return res.type('json').status(204).end() + return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() } async function getVideoChannel (req: express.Request, res: express.Response) { diff --git a/server/controllers/api/video-playlist.ts b/server/controllers/api/video-playlist.ts index fb08a63b2..f3dc8b2a9 100644 --- a/server/controllers/api/video-playlist.ts +++ b/server/controllers/api/video-playlist.ts @@ -42,6 +42,7 @@ import { import { AccountModel } from '../../models/account/account' import { VideoPlaylistModel } from '../../models/video/video-playlist' import { VideoPlaylistElementModel } from '../../models/video/video-playlist-element' +import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes' const reqThumbnailFile = createReqFiles([ 'thumbnailfile' ], MIMETYPES.IMAGE.MIMETYPE_EXT, { thumbnailfile: CONFIG.STORAGE.TMP_DIR }) @@ -271,7 +272,7 @@ async function updateVideoPlaylist (req: express.Request, res: express.Response) throw err } - return res.type('json').status(204).end() + return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() } async function removeVideoPlaylist (req: express.Request, res: express.Response) { @@ -285,7 +286,7 @@ async function removeVideoPlaylist (req: express.Request, res: express.Response) logger.info('Video playlist %s deleted.', videoPlaylistInstance.uuid) }) - return res.type('json').status(204).end() + return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() } async function addVideoInPlaylist (req: express.Request, res: express.Response) { @@ -351,7 +352,7 @@ async function updateVideoPlaylistElement (req: express.Request, res: express.Re logger.info('Element of position %d of playlist %s updated.', playlistElement.position, videoPlaylist.uuid) - return res.type('json').status(204).end() + return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() } async function removeVideoFromPlaylist (req: express.Request, res: express.Response) { @@ -379,7 +380,7 @@ async function removeVideoFromPlaylist (req: express.Request, res: express.Respo sendUpdateVideoPlaylist(videoPlaylist, undefined) .catch(err => logger.error('Cannot send video playlist update.', { err })) - return res.type('json').status(204).end() + return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() } async function reorderVideosPlaylist (req: express.Request, res: express.Response) { @@ -391,7 +392,7 @@ async function reorderVideosPlaylist (req: express.Request, res: express.Respons const reorderLength: number = body.reorderLength || 1 if (start === insertAfter) { - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } // Example: if we reorder position 2 and insert after position 5 (so at position 6): # 1 2 3 4 5 6 7 8 9 @@ -432,7 +433,7 @@ async function reorderVideosPlaylist (req: express.Request, res: express.Respons videoPlaylist.uuid, insertAfter, start, start + reorderLength - 1 ) - return res.type('json').status(204).end() + return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() } async function getVideoPlaylistVideos (req: express.Request, res: express.Response) { diff --git a/server/controllers/api/videos/blacklist.ts b/server/controllers/api/videos/blacklist.ts index 3b25ceea2..fa8448c86 100644 --- a/server/controllers/api/videos/blacklist.ts +++ b/server/controllers/api/videos/blacklist.ts @@ -18,6 +18,7 @@ import { videosBlacklistUpdateValidator } from '../../../middlewares' import { VideoBlacklistModel } from '../../../models/video/video-blacklist' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const blacklistRouter = express.Router() @@ -69,7 +70,7 @@ async function addVideoToBlacklistController (req: express.Request, res: express logger.info('Video %s blacklisted.', videoInstance.uuid) - return res.type('json').sendStatus(204) + return res.type('json').sendStatus(HttpStatusCode.NO_CONTENT_204) } async function updateVideoBlacklistController (req: express.Request, res: express.Response) { @@ -81,7 +82,7 @@ async function updateVideoBlacklistController (req: express.Request, res: expres return videoBlacklist.save({ transaction: t }) }) - return res.type('json').sendStatus(204) + return res.type('json').sendStatus(HttpStatusCode.NO_CONTENT_204) } async function listBlacklist (req: express.Request, res: express.Response) { @@ -104,5 +105,5 @@ async function removeVideoFromBlacklistController (req: express.Request, res: ex logger.info('Video %s removed from blacklist.', video.uuid) - return res.type('json').sendStatus(204) + return res.type('json').sendStatus(HttpStatusCode.NO_CONTENT_204) } diff --git a/server/controllers/api/videos/captions.ts b/server/controllers/api/videos/captions.ts index c4e2ee72c..bf82e2c19 100644 --- a/server/controllers/api/videos/captions.ts +++ b/server/controllers/api/videos/captions.ts @@ -11,6 +11,7 @@ import { moveAndProcessCaptionFile } from '../../../helpers/captions-utils' import { CONFIG } from '../../../initializers/config' import { sequelizeTypescript } from '../../../initializers/database' import { MVideoCaptionVideo } from '@server/types/models' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const reqVideoCaptionAdd = createReqFiles( [ 'captionfile' ], @@ -72,7 +73,7 @@ async function addVideoCaption (req: express.Request, res: express.Response) { await federateVideoIfNeeded(video, false, t) }) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } async function deleteVideoCaption (req: express.Request, res: express.Response) { @@ -88,5 +89,5 @@ async function deleteVideoCaption (req: express.Request, res: express.Response) logger.info('Video caption %s of video %s deleted.', videoCaption.language, video.uuid) - return res.type('json').status(204).end() + return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() } diff --git a/server/controllers/api/videos/comment.ts b/server/controllers/api/videos/comment.ts index 020d0b104..752a33596 100644 --- a/server/controllers/api/videos/comment.ts +++ b/server/controllers/api/videos/comment.ts @@ -29,6 +29,7 @@ import { } from '../../../middlewares/validators' import { AccountModel } from '../../../models/account/account' import { VideoCommentModel } from '../../../models/video/video-comment' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const auditLogger = auditLoggerFactory('comments') const videoCommentRouter = express.Router() @@ -161,7 +162,7 @@ async function listVideoThreadComments (req: express.Request, res: express.Respo } if (resultList.data.length === 0) { - return res.sendStatus(404) + return res.sendStatus(HttpStatusCode.NOT_FOUND_404) } return res.json(buildFormattedCommentTree(resultList)) @@ -218,5 +219,7 @@ async function removeVideoComment (req: express.Request, res: express.Response) auditLogger.delete(getAuditIdFromRes(res), new CommentAuditView(videoCommentInstance.toFormattedJSON())) - return res.type('json').status(204).end() + return res.type('json') + .status(HttpStatusCode.NO_CONTENT_204) + .end() } diff --git a/server/controllers/api/videos/import.ts b/server/controllers/api/videos/import.ts index bc5fea7aa..cd9ba046d 100644 --- a/server/controllers/api/videos/import.ts +++ b/server/controllers/api/videos/import.ts @@ -36,6 +36,7 @@ import { asyncMiddleware, asyncRetryTransactionMiddleware, authenticate, videoIm import { VideoModel } from '../../../models/video/video' import { VideoCaptionModel } from '../../../models/video/video-caption' import { VideoImportModel } from '../../../models/video/video-import' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const auditLogger = auditLoggerFactory('video-imports') const videoImportsRouter = express.Router() @@ -146,7 +147,7 @@ async function addYoutubeDLImport (req: express.Request, res: express.Response) } catch (err) { logger.info('Cannot fetch information from import for URL %s.', targetUrl, { err }) - return res.status(400).json({ + return res.status(HttpStatusCode.BAD_REQUEST_400).json({ error: 'Cannot fetch remote information of this URL.' }).end() } diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index 71a0f97e2..e1c775180 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts @@ -66,6 +66,7 @@ import { liveRouter } from './live' import { ownershipVideoRouter } from './ownership' import { rateVideoRouter } from './rate' import { watchingRouter } from './watching' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const auditLogger = auditLoggerFactory('videos') const videosRouter = express.Router() @@ -178,7 +179,7 @@ async function addVideo (req: express.Request, res: express.Response) { // Set timeout to 10 minutes, as Express's default is 2 minutes req.setTimeout(1000 * 60 * 10, () => { logger.error('Upload video has timed out.') - return res.sendStatus(408) + return res.sendStatus(HttpStatusCode.REQUEST_TIMEOUT_408) }) const videoPhysicalFile = req.files['videofile'][0] @@ -394,7 +395,9 @@ async function updateVideo (req: express.Request, res: express.Response) { throw err } - return res.type('json').status(204).end() + return res.type('json') + .status(HttpStatusCode.NO_CONTENT_204) + .end() } async function getVideo (req: express.Request, res: express.Response) { @@ -421,7 +424,7 @@ async function viewVideo (req: express.Request, res: express.Response) { const exists = await Redis.Instance.doesVideoIPViewExist(ip, immutableVideoAttrs.uuid) if (exists) { logger.debug('View for ip %s and video %s already exists.', ip, immutableVideoAttrs.uuid) - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } const video = await VideoModel.load(immutableVideoAttrs.id) @@ -454,7 +457,7 @@ async function viewVideo (req: express.Request, res: express.Response) { Hooks.runAction('action:api.video.viewed', { video, ip }) - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } async function getVideoDescription (req: express.Request, res: express.Response) { @@ -517,5 +520,7 @@ async function removeVideo (req: express.Request, res: express.Response) { Hooks.runAction('action:api.video.deleted', { video: videoInstance }) - return res.type('json').status(204).end() + return res.type('json') + .status(HttpStatusCode.NO_CONTENT_204) + .end() } diff --git a/server/controllers/api/videos/live.ts b/server/controllers/api/videos/live.ts index e67d89612..04d2494ce 100644 --- a/server/controllers/api/videos/live.ts +++ b/server/controllers/api/videos/live.ts @@ -16,6 +16,7 @@ import { sequelizeTypescript } from '../../../initializers/database' import { createVideoMiniatureFromExisting } from '../../../lib/thumbnail' import { asyncMiddleware, asyncRetryTransactionMiddleware, authenticate } from '../../../middlewares' import { VideoModel } from '../../../models/video/video' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const liveRouter = express.Router() @@ -75,7 +76,7 @@ async function updateLiveVideo (req: express.Request, res: express.Response) { await federateVideoIfNeeded(video, false) - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) } async function addLiveVideo (req: express.Request, res: express.Response) { diff --git a/server/controllers/api/videos/ownership.ts b/server/controllers/api/videos/ownership.ts index d76fee51d..86adb6c69 100644 --- a/server/controllers/api/videos/ownership.ts +++ b/server/controllers/api/videos/ownership.ts @@ -19,6 +19,7 @@ import { changeVideoChannelShare } from '../../../lib/activitypub/share' import { sendUpdateVideo } from '../../../lib/activitypub/send' import { VideoModel } from '../../../models/video/video' import { MVideoFullLight } from '@server/types/models' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const ownershipVideoRouter = express.Router() @@ -80,7 +81,9 @@ async function giveVideoOwnership (req: express.Request, res: express.Response) }) logger.info('Ownership change for video %s created.', videoInstance.name) - return res.type('json').status(204).end() + return res.type('json') + .status(HttpStatusCode.NO_CONTENT_204) + .end() } async function listVideoOwnership (req: express.Request, res: express.Response) { @@ -119,7 +122,7 @@ async function acceptOwnership (req: express.Request, res: express.Response) { videoChangeOwnership.status = VideoChangeOwnershipStatus.ACCEPTED await videoChangeOwnership.save({ transaction: t }) - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) }) } @@ -130,6 +133,6 @@ async function refuseOwnership (req: express.Request, res: express.Response) { videoChangeOwnership.status = VideoChangeOwnershipStatus.REFUSED await videoChangeOwnership.save({ transaction: t }) - return res.sendStatus(204) + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) }) } diff --git a/server/controllers/api/videos/rate.ts b/server/controllers/api/videos/rate.ts index df1eddb4f..520932c63 100644 --- a/server/controllers/api/videos/rate.ts +++ b/server/controllers/api/videos/rate.ts @@ -7,6 +7,7 @@ import { asyncMiddleware, asyncRetryTransactionMiddleware, authenticate, videoUp import { AccountModel } from '../../../models/account/account' import { AccountVideoRateModel } from '../../../models/account/account-video-rate' import { sequelizeTypescript } from '../../../initializers/database' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const rateVideoRouter = express.Router() @@ -78,5 +79,7 @@ async function rateVideo (req: express.Request, res: express.Response) { logger.info('Account video rate for video %s of account %s updated.', videoInstance.name, accountInstance.name) }) - return res.type('json').status(204).end() + return res.type('json') + .status(HttpStatusCode.NO_CONTENT_204) + .end() } diff --git a/server/controllers/api/videos/watching.ts b/server/controllers/api/videos/watching.ts index 036e16f3a..627f12aa9 100644 --- a/server/controllers/api/videos/watching.ts +++ b/server/controllers/api/videos/watching.ts @@ -2,6 +2,7 @@ import * as express from 'express' import { UserWatchingVideo } from '../../../../shared' import { asyncMiddleware, asyncRetryTransactionMiddleware, authenticate, videoWatchingValidator } from '../../../middlewares' import { UserVideoHistoryModel } from '../../../models/account/user-video-history' +import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' const watchingRouter = express.Router() @@ -31,5 +32,7 @@ async function userWatchVideo (req: express.Request, res: express.Response) { currentTime: body.currentTime }) - return res.type('json').status(204).end() + return res.type('json') + .status(HttpStatusCode.NO_CONTENT_204) + .end() } -- cgit v1.2.3