diff options
author | Rigel Kent <sendmemail@rigelk.eu> | 2021-06-01 01:36:53 +0200 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2021-06-02 16:57:07 +0200 |
commit | 76148b27f7501bac061992136852be4303370c8d (patch) | |
tree | fc0559253e833c9252fa14ebaec5321d88bfb4e8 /server/controllers/api | |
parent | 5ed25fb76e920dac364cb9ef46f14ec4bd372949 (diff) | |
download | PeerTube-76148b27f7501bac061992136852be4303370c8d.tar.gz PeerTube-76148b27f7501bac061992136852be4303370c8d.tar.zst PeerTube-76148b27f7501bac061992136852be4303370c8d.zip |
refactor API errors to standard error format
Diffstat (limited to 'server/controllers/api')
-rw-r--r-- | server/controllers/api/abuse.ts | 6 | ||||
-rw-r--r-- | server/controllers/api/bulk.ts | 2 | ||||
-rw-r--r-- | server/controllers/api/custom-page.ts | 9 | ||||
-rw-r--r-- | server/controllers/api/oauth-clients.ts | 5 | ||||
-rw-r--r-- | server/controllers/api/plugins.ts | 14 | ||||
-rw-r--r-- | server/controllers/api/search.ts | 10 | ||||
-rw-r--r-- | server/controllers/api/server/debug.ts | 3 | ||||
-rw-r--r-- | server/controllers/api/server/redundancy.ts | 6 | ||||
-rw-r--r-- | server/controllers/api/users/index.ts | 4 | ||||
-rw-r--r-- | server/controllers/api/users/me.ts | 6 | ||||
-rw-r--r-- | server/controllers/api/users/token.ts | 7 | ||||
-rw-r--r-- | server/controllers/api/video-channel.ts | 4 | ||||
-rw-r--r-- | server/controllers/api/videos/blacklist.ts | 6 | ||||
-rw-r--r-- | server/controllers/api/videos/comment.ts | 5 | ||||
-rw-r--r-- | server/controllers/api/videos/import.ts | 21 | ||||
-rw-r--r-- | server/controllers/api/videos/index.ts | 4 | ||||
-rw-r--r-- | server/controllers/api/videos/live.ts | 2 | ||||
-rw-r--r-- | server/controllers/api/videos/ownership.ts | 4 | ||||
-rw-r--r-- | server/controllers/api/videos/upload.ts | 7 |
19 files changed, 74 insertions, 51 deletions
diff --git a/server/controllers/api/abuse.ts b/server/controllers/api/abuse.ts index 0ab74bdff..108627f81 100644 --- a/server/controllers/api/abuse.ts +++ b/server/controllers/api/abuse.ts | |||
@@ -142,7 +142,7 @@ async function updateAbuse (req: express.Request, res: express.Response) { | |||
142 | 142 | ||
143 | // Do not send the delete to other instances, we updated OUR copy of this abuse | 143 | // Do not send the delete to other instances, we updated OUR copy of this abuse |
144 | 144 | ||
145 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 145 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
146 | } | 146 | } |
147 | 147 | ||
148 | async function deleteAbuse (req: express.Request, res: express.Response) { | 148 | async function deleteAbuse (req: express.Request, res: express.Response) { |
@@ -154,7 +154,7 @@ async function deleteAbuse (req: express.Request, res: express.Response) { | |||
154 | 154 | ||
155 | // Do not send the delete to other instances, we delete OUR copy of this abuse | 155 | // Do not send the delete to other instances, we delete OUR copy of this abuse |
156 | 156 | ||
157 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 157 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
158 | } | 158 | } |
159 | 159 | ||
160 | async function reportAbuse (req: express.Request, res: express.Response) { | 160 | async function reportAbuse (req: express.Request, res: express.Response) { |
@@ -244,5 +244,5 @@ async function deleteAbuseMessage (req: express.Request, res: express.Response) | |||
244 | return abuseMessage.destroy({ transaction: t }) | 244 | return abuseMessage.destroy({ transaction: t }) |
245 | }) | 245 | }) |
246 | 246 | ||
247 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 247 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
248 | } | 248 | } |
diff --git a/server/controllers/api/bulk.ts b/server/controllers/api/bulk.ts index 649351029..192daccde 100644 --- a/server/controllers/api/bulk.ts +++ b/server/controllers/api/bulk.ts | |||
@@ -34,7 +34,7 @@ async function bulkRemoveCommentsOf (req: express.Request, res: express.Response | |||
34 | const comments = await VideoCommentModel.listForBulkDelete(account, filter) | 34 | const comments = await VideoCommentModel.listForBulkDelete(account, filter) |
35 | 35 | ||
36 | // Don't wait result | 36 | // Don't wait result |
37 | res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 37 | res.status(HttpStatusCode.NO_CONTENT_204).end() |
38 | 38 | ||
39 | for (const comment of comments) { | 39 | for (const comment of comments) { |
40 | await removeComment(comment) | 40 | await removeComment(comment) |
diff --git a/server/controllers/api/custom-page.ts b/server/controllers/api/custom-page.ts index 3c47f7b9a..c19f03c56 100644 --- a/server/controllers/api/custom-page.ts +++ b/server/controllers/api/custom-page.ts | |||
@@ -27,7 +27,12 @@ export { | |||
27 | 27 | ||
28 | async function getInstanceHomepage (req: express.Request, res: express.Response) { | 28 | async function getInstanceHomepage (req: express.Request, res: express.Response) { |
29 | const page = await ActorCustomPageModel.loadInstanceHomepage() | 29 | const page = await ActorCustomPageModel.loadInstanceHomepage() |
30 | if (!page) return res.sendStatus(HttpStatusCode.NOT_FOUND_404) | 30 | if (!page) { |
31 | return res.fail({ | ||
32 | status: HttpStatusCode.NOT_FOUND_404, | ||
33 | message: 'Instance homepage could not be found' | ||
34 | }) | ||
35 | } | ||
31 | 36 | ||
32 | return res.json(page.toFormattedJSON()) | 37 | return res.json(page.toFormattedJSON()) |
33 | } | 38 | } |
@@ -38,5 +43,5 @@ async function updateInstanceHomepage (req: express.Request, res: express.Respon | |||
38 | await ActorCustomPageModel.updateInstanceHomepage(content) | 43 | await ActorCustomPageModel.updateInstanceHomepage(content) |
39 | ServerConfigManager.Instance.updateHomepageState(content) | 44 | ServerConfigManager.Instance.updateHomepageState(content) |
40 | 45 | ||
41 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 46 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
42 | } | 47 | } |
diff --git a/server/controllers/api/oauth-clients.ts b/server/controllers/api/oauth-clients.ts index c21e2298d..48a10d31f 100644 --- a/server/controllers/api/oauth-clients.ts +++ b/server/controllers/api/oauth-clients.ts | |||
@@ -24,7 +24,10 @@ async function getLocalClient (req: express.Request, res: express.Response, next | |||
24 | // Don't make this check if this is a test instance | 24 | // Don't make this check if this is a test instance |
25 | if (process.env.NODE_ENV !== 'test' && req.get('host') !== headerHostShouldBe) { | 25 | if (process.env.NODE_ENV !== 'test' && req.get('host') !== headerHostShouldBe) { |
26 | logger.info('Getting client tokens for host %s is forbidden (expected %s).', req.get('host'), headerHostShouldBe) | 26 | logger.info('Getting client tokens for host %s is forbidden (expected %s).', req.get('host'), headerHostShouldBe) |
27 | return res.type('json').status(HttpStatusCode.FORBIDDEN_403).end() | 27 | return res.fail({ |
28 | status: HttpStatusCode.FORBIDDEN_403, | ||
29 | message: `Getting client tokens for host ${req.get('host')} is forbidden` | ||
30 | }) | ||
28 | } | 31 | } |
29 | 32 | ||
30 | const client = await OAuthClientModel.loadFirstClient() | 33 | const client = await OAuthClientModel.loadFirstClient() |
diff --git a/server/controllers/api/plugins.ts b/server/controllers/api/plugins.ts index e18eed332..b64062287 100644 --- a/server/controllers/api/plugins.ts +++ b/server/controllers/api/plugins.ts | |||
@@ -144,7 +144,7 @@ async function installPlugin (req: express.Request, res: express.Response) { | |||
144 | return res.json(plugin.toFormattedJSON()) | 144 | return res.json(plugin.toFormattedJSON()) |
145 | } catch (err) { | 145 | } catch (err) { |
146 | logger.warn('Cannot install plugin %s.', toInstall, { err }) | 146 | logger.warn('Cannot install plugin %s.', toInstall, { err }) |
147 | return res.sendStatus(HttpStatusCode.BAD_REQUEST_400) | 147 | return res.fail({ message: 'Cannot install plugin ' + toInstall }) |
148 | } | 148 | } |
149 | } | 149 | } |
150 | 150 | ||
@@ -159,7 +159,7 @@ async function updatePlugin (req: express.Request, res: express.Response) { | |||
159 | return res.json(plugin.toFormattedJSON()) | 159 | return res.json(plugin.toFormattedJSON()) |
160 | } catch (err) { | 160 | } catch (err) { |
161 | logger.warn('Cannot update plugin %s.', toUpdate, { err }) | 161 | logger.warn('Cannot update plugin %s.', toUpdate, { err }) |
162 | return res.sendStatus(HttpStatusCode.BAD_REQUEST_400) | 162 | return res.fail({ message: 'Cannot update plugin ' + toUpdate }) |
163 | } | 163 | } |
164 | } | 164 | } |
165 | 165 | ||
@@ -168,7 +168,7 @@ async function uninstallPlugin (req: express.Request, res: express.Response) { | |||
168 | 168 | ||
169 | await PluginManager.Instance.uninstall(body.npmName) | 169 | await PluginManager.Instance.uninstall(body.npmName) |
170 | 170 | ||
171 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 171 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
172 | } | 172 | } |
173 | 173 | ||
174 | function getPublicPluginSettings (req: express.Request, res: express.Response) { | 174 | function getPublicPluginSettings (req: express.Request, res: express.Response) { |
@@ -197,7 +197,7 @@ async function updatePluginSettings (req: express.Request, res: express.Response | |||
197 | 197 | ||
198 | await PluginManager.Instance.onSettingsChanged(plugin.name, plugin.settings) | 198 | await PluginManager.Instance.onSettingsChanged(plugin.name, plugin.settings) |
199 | 199 | ||
200 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 200 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
201 | } | 201 | } |
202 | 202 | ||
203 | async function listAvailablePlugins (req: express.Request, res: express.Response) { | 203 | async function listAvailablePlugins (req: express.Request, res: express.Response) { |
@@ -206,8 +206,10 @@ async function listAvailablePlugins (req: express.Request, res: express.Response | |||
206 | const resultList = await listAvailablePluginsFromIndex(query) | 206 | const resultList = await listAvailablePluginsFromIndex(query) |
207 | 207 | ||
208 | if (!resultList) { | 208 | if (!resultList) { |
209 | return res.status(HttpStatusCode.SERVICE_UNAVAILABLE_503) | 209 | return res.fail({ |
210 | .json({ error: 'Plugin index unavailable. Please retry later' }) | 210 | status: HttpStatusCode.SERVICE_UNAVAILABLE_503, |
211 | message: 'Plugin index unavailable. Please retry later' | ||
212 | }) | ||
211 | } | 213 | } |
212 | 214 | ||
213 | return res.json(resultList) | 215 | return res.json(resultList) |
diff --git a/server/controllers/api/search.ts b/server/controllers/api/search.ts index f0cdf3a89..77e3a024d 100644 --- a/server/controllers/api/search.ts +++ b/server/controllers/api/search.ts | |||
@@ -102,7 +102,10 @@ async function searchVideoChannelsIndex (query: VideoChannelsSearchQuery, res: e | |||
102 | } catch (err) { | 102 | } catch (err) { |
103 | logger.warn('Cannot use search index to make video channels search.', { err }) | 103 | logger.warn('Cannot use search index to make video channels search.', { err }) |
104 | 104 | ||
105 | return res.sendStatus(HttpStatusCode.INTERNAL_SERVER_ERROR_500) | 105 | return res.fail({ |
106 | status: HttpStatusCode.INTERNAL_SERVER_ERROR_500, | ||
107 | message: 'Cannot use search index to make video channels search' | ||
108 | }) | ||
106 | } | 109 | } |
107 | } | 110 | } |
108 | 111 | ||
@@ -202,7 +205,10 @@ async function searchVideosIndex (query: VideosSearchQuery, res: express.Respons | |||
202 | } catch (err) { | 205 | } catch (err) { |
203 | logger.warn('Cannot use search index to make video search.', { err }) | 206 | logger.warn('Cannot use search index to make video search.', { err }) |
204 | 207 | ||
205 | return res.sendStatus(HttpStatusCode.INTERNAL_SERVER_ERROR_500) | 208 | return res.fail({ |
209 | status: HttpStatusCode.INTERNAL_SERVER_ERROR_500, | ||
210 | message: 'Cannot use search index to make video search' | ||
211 | }) | ||
206 | } | 212 | } |
207 | } | 213 | } |
208 | 214 | ||
diff --git a/server/controllers/api/server/debug.ts b/server/controllers/api/server/debug.ts index ff0d9ca3c..a6e9147f3 100644 --- a/server/controllers/api/server/debug.ts +++ b/server/controllers/api/server/debug.ts | |||
@@ -1,5 +1,6 @@ | |||
1 | import { InboxManager } from '@server/lib/activitypub/inbox-manager' | 1 | import { InboxManager } from '@server/lib/activitypub/inbox-manager' |
2 | import { RemoveDanglingResumableUploadsScheduler } from '@server/lib/schedulers/remove-dangling-resumable-uploads-scheduler' | 2 | import { RemoveDanglingResumableUploadsScheduler } from '@server/lib/schedulers/remove-dangling-resumable-uploads-scheduler' |
3 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' | ||
3 | import { SendDebugCommand } from '@shared/models' | 4 | import { SendDebugCommand } from '@shared/models' |
4 | import * as express from 'express' | 5 | import * as express from 'express' |
5 | import { UserRight } from '../../../../shared/models/users' | 6 | import { UserRight } from '../../../../shared/models/users' |
@@ -41,5 +42,5 @@ async function runCommand (req: express.Request, res: express.Response) { | |||
41 | await RemoveDanglingResumableUploadsScheduler.Instance.execute() | 42 | await RemoveDanglingResumableUploadsScheduler.Instance.execute() |
42 | } | 43 | } |
43 | 44 | ||
44 | return res.sendStatus(204) | 45 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
45 | } | 46 | } |
diff --git a/server/controllers/api/server/redundancy.ts b/server/controllers/api/server/redundancy.ts index 7c13dc21b..bc593ad43 100644 --- a/server/controllers/api/server/redundancy.ts +++ b/server/controllers/api/server/redundancy.ts | |||
@@ -90,13 +90,13 @@ async function addVideoRedundancy (req: express.Request, res: express.Response) | |||
90 | payload | 90 | payload |
91 | }) | 91 | }) |
92 | 92 | ||
93 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 93 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
94 | } | 94 | } |
95 | 95 | ||
96 | async function removeVideoRedundancyController (req: express.Request, res: express.Response) { | 96 | async function removeVideoRedundancyController (req: express.Request, res: express.Response) { |
97 | await removeVideoRedundancy(res.locals.videoRedundancy) | 97 | await removeVideoRedundancy(res.locals.videoRedundancy) |
98 | 98 | ||
99 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 99 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
100 | } | 100 | } |
101 | 101 | ||
102 | async function updateRedundancy (req: express.Request, res: express.Response) { | 102 | async function updateRedundancy (req: express.Request, res: express.Response) { |
@@ -110,5 +110,5 @@ async function updateRedundancy (req: express.Request, res: express.Response) { | |||
110 | removeRedundanciesOfServer(server.id) | 110 | removeRedundanciesOfServer(server.id) |
111 | .catch(err => logger.error('Cannot remove redundancy of %s.', server.host, { err })) | 111 | .catch(err => logger.error('Cannot remove redundancy of %s.', server.host, { err })) |
112 | 112 | ||
113 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 113 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
114 | } | 114 | } |
diff --git a/server/controllers/api/users/index.ts b/server/controllers/api/users/index.ts index f384f0f28..d907b49bf 100644 --- a/server/controllers/api/users/index.ts +++ b/server/controllers/api/users/index.ts | |||
@@ -314,7 +314,7 @@ async function removeUser (req: express.Request, res: express.Response) { | |||
314 | 314 | ||
315 | Hooks.runAction('action:api.user.deleted', { user }) | 315 | Hooks.runAction('action:api.user.deleted', { user }) |
316 | 316 | ||
317 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 317 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
318 | } | 318 | } |
319 | 319 | ||
320 | async function updateUser (req: express.Request, res: express.Response) { | 320 | async function updateUser (req: express.Request, res: express.Response) { |
@@ -349,7 +349,7 @@ async function updateUser (req: express.Request, res: express.Response) { | |||
349 | 349 | ||
350 | // Don't need to send this update to followers, these attributes are not federated | 350 | // Don't need to send this update to followers, these attributes are not federated |
351 | 351 | ||
352 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 352 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
353 | } | 353 | } |
354 | 354 | ||
355 | async function askResetUserPassword (req: express.Request, res: express.Response) { | 355 | async function askResetUserPassword (req: express.Request, res: express.Response) { |
diff --git a/server/controllers/api/users/me.ts b/server/controllers/api/users/me.ts index a609abaa6..810e4295e 100644 --- a/server/controllers/api/users/me.ts +++ b/server/controllers/api/users/me.ts | |||
@@ -183,7 +183,7 @@ async function deleteMe (req: express.Request, res: express.Response) { | |||
183 | 183 | ||
184 | await user.destroy() | 184 | await user.destroy() |
185 | 185 | ||
186 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 186 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
187 | } | 187 | } |
188 | 188 | ||
189 | async function updateMe (req: express.Request, res: express.Response) { | 189 | async function updateMe (req: express.Request, res: express.Response) { |
@@ -237,7 +237,7 @@ async function updateMe (req: express.Request, res: express.Response) { | |||
237 | await sendVerifyUserEmail(user, true) | 237 | await sendVerifyUserEmail(user, true) |
238 | } | 238 | } |
239 | 239 | ||
240 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 240 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
241 | } | 241 | } |
242 | 242 | ||
243 | async function updateMyAvatar (req: express.Request, res: express.Response) { | 243 | async function updateMyAvatar (req: express.Request, res: express.Response) { |
@@ -257,5 +257,5 @@ async function deleteMyAvatar (req: express.Request, res: express.Response) { | |||
257 | const userAccount = await AccountModel.load(user.Account.id) | 257 | const userAccount = await AccountModel.load(user.Account.id) |
258 | await deleteLocalActorImageFile(userAccount, ActorImageType.AVATAR) | 258 | await deleteLocalActorImageFile(userAccount, ActorImageType.AVATAR) |
259 | 259 | ||
260 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 260 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
261 | } | 261 | } |
diff --git a/server/controllers/api/users/token.ts b/server/controllers/api/users/token.ts index 694bb0a92..863a3d74c 100644 --- a/server/controllers/api/users/token.ts +++ b/server/controllers/api/users/token.ts | |||
@@ -78,9 +78,10 @@ async function handleToken (req: express.Request, res: express.Response, next: e | |||
78 | } catch (err) { | 78 | } catch (err) { |
79 | logger.warn('Login error', { err }) | 79 | logger.warn('Login error', { err }) |
80 | 80 | ||
81 | return res.status(err.code || 400).json({ | 81 | return res.fail({ |
82 | code: err.name, | 82 | status: err.code, |
83 | error: err.message | 83 | message: err.message, |
84 | type: err.name | ||
84 | }) | 85 | }) |
85 | } | 86 | } |
86 | } | 87 | } |
diff --git a/server/controllers/api/video-channel.ts b/server/controllers/api/video-channel.ts index 859d8b3c0..34207ea8a 100644 --- a/server/controllers/api/video-channel.ts +++ b/server/controllers/api/video-channel.ts | |||
@@ -180,7 +180,7 @@ async function deleteVideoChannelAvatar (req: express.Request, res: express.Resp | |||
180 | 180 | ||
181 | await deleteLocalActorImageFile(videoChannel, ActorImageType.AVATAR) | 181 | await deleteLocalActorImageFile(videoChannel, ActorImageType.AVATAR) |
182 | 182 | ||
183 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 183 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
184 | } | 184 | } |
185 | 185 | ||
186 | async function deleteVideoChannelBanner (req: express.Request, res: express.Response) { | 186 | async function deleteVideoChannelBanner (req: express.Request, res: express.Response) { |
@@ -188,7 +188,7 @@ async function deleteVideoChannelBanner (req: express.Request, res: express.Resp | |||
188 | 188 | ||
189 | await deleteLocalActorImageFile(videoChannel, ActorImageType.BANNER) | 189 | await deleteLocalActorImageFile(videoChannel, ActorImageType.BANNER) |
190 | 190 | ||
191 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 191 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
192 | } | 192 | } |
193 | 193 | ||
194 | async function addVideoChannel (req: express.Request, res: express.Response) { | 194 | async function addVideoChannel (req: express.Request, res: express.Response) { |
diff --git a/server/controllers/api/videos/blacklist.ts b/server/controllers/api/videos/blacklist.ts index fa8448c86..ca2b85ea5 100644 --- a/server/controllers/api/videos/blacklist.ts +++ b/server/controllers/api/videos/blacklist.ts | |||
@@ -70,7 +70,7 @@ async function addVideoToBlacklistController (req: express.Request, res: express | |||
70 | 70 | ||
71 | logger.info('Video %s blacklisted.', videoInstance.uuid) | 71 | logger.info('Video %s blacklisted.', videoInstance.uuid) |
72 | 72 | ||
73 | return res.type('json').sendStatus(HttpStatusCode.NO_CONTENT_204) | 73 | return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() |
74 | } | 74 | } |
75 | 75 | ||
76 | async function updateVideoBlacklistController (req: express.Request, res: express.Response) { | 76 | async function updateVideoBlacklistController (req: express.Request, res: express.Response) { |
@@ -82,7 +82,7 @@ async function updateVideoBlacklistController (req: express.Request, res: expres | |||
82 | return videoBlacklist.save({ transaction: t }) | 82 | return videoBlacklist.save({ transaction: t }) |
83 | }) | 83 | }) |
84 | 84 | ||
85 | return res.type('json').sendStatus(HttpStatusCode.NO_CONTENT_204) | 85 | return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() |
86 | } | 86 | } |
87 | 87 | ||
88 | async function listBlacklist (req: express.Request, res: express.Response) { | 88 | async function listBlacklist (req: express.Request, res: express.Response) { |
@@ -105,5 +105,5 @@ async function removeVideoFromBlacklistController (req: express.Request, res: ex | |||
105 | 105 | ||
106 | logger.info('Video %s removed from blacklist.', video.uuid) | 106 | logger.info('Video %s removed from blacklist.', video.uuid) |
107 | 107 | ||
108 | return res.type('json').sendStatus(HttpStatusCode.NO_CONTENT_204) | 108 | return res.type('json').status(HttpStatusCode.NO_CONTENT_204).end() |
109 | } | 109 | } |
diff --git a/server/controllers/api/videos/comment.ts b/server/controllers/api/videos/comment.ts index cfdf2773f..e6f28c1cb 100644 --- a/server/controllers/api/videos/comment.ts +++ b/server/controllers/api/videos/comment.ts | |||
@@ -166,7 +166,10 @@ async function listVideoThreadComments (req: express.Request, res: express.Respo | |||
166 | } | 166 | } |
167 | 167 | ||
168 | if (resultList.data.length === 0) { | 168 | if (resultList.data.length === 0) { |
169 | return res.sendStatus(HttpStatusCode.NOT_FOUND_404) | 169 | return res.fail({ |
170 | status: HttpStatusCode.NOT_FOUND_404, | ||
171 | message: 'No comments were found' | ||
172 | }) | ||
170 | } | 173 | } |
171 | 174 | ||
172 | return res.json(buildFormattedCommentTree(resultList)) | 175 | return res.json(buildFormattedCommentTree(resultList)) |
diff --git a/server/controllers/api/videos/import.ts b/server/controllers/api/videos/import.ts index 0d5d7a962..6ee109a8f 100644 --- a/server/controllers/api/videos/import.ts +++ b/server/controllers/api/videos/import.ts | |||
@@ -18,7 +18,6 @@ import { | |||
18 | } from '@server/types/models' | 18 | } from '@server/types/models' |
19 | import { MVideoImportFormattable } from '@server/types/models/video/video-import' | 19 | import { MVideoImportFormattable } from '@server/types/models/video/video-import' |
20 | import { ServerErrorCode, VideoImportCreate, VideoImportState, VideoPrivacy, VideoState } from '../../../../shared' | 20 | import { ServerErrorCode, VideoImportCreate, VideoImportState, VideoPrivacy, VideoState } from '../../../../shared' |
21 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' | ||
22 | import { ThumbnailType } from '../../../../shared/models/videos/thumbnail.type' | 21 | import { ThumbnailType } from '../../../../shared/models/videos/thumbnail.type' |
23 | import { auditLoggerFactory, getAuditIdFromRes, VideoImportAuditView } from '../../../helpers/audit-logger' | 22 | import { auditLoggerFactory, getAuditIdFromRes, VideoImportAuditView } from '../../../helpers/audit-logger' |
24 | import { moveAndProcessCaptionFile } from '../../../helpers/captions-utils' | 23 | import { moveAndProcessCaptionFile } from '../../../helpers/captions-utils' |
@@ -143,10 +142,12 @@ async function addYoutubeDLImport (req: express.Request, res: express.Response) | |||
143 | } catch (err) { | 142 | } catch (err) { |
144 | logger.info('Cannot fetch information from import for URL %s.', targetUrl, { err }) | 143 | logger.info('Cannot fetch information from import for URL %s.', targetUrl, { err }) |
145 | 144 | ||
146 | return res.status(HttpStatusCode.BAD_REQUEST_400) | 145 | return res.fail({ |
147 | .json({ | 146 | message: 'Cannot fetch remote information of this URL.', |
148 | error: 'Cannot fetch remote information of this URL.' | 147 | data: { |
149 | }) | 148 | targetUrl |
149 | } | ||
150 | }) | ||
150 | } | 151 | } |
151 | 152 | ||
152 | const video = buildVideo(res.locals.videoChannel.id, body, youtubeDLInfo) | 153 | const video = buildVideo(res.locals.videoChannel.id, body, youtubeDLInfo) |
@@ -333,12 +334,10 @@ async function processTorrentOrAbortRequest (req: express.Request, res: express. | |||
333 | if (parsedTorrent.files.length !== 1) { | 334 | if (parsedTorrent.files.length !== 1) { |
334 | cleanUpReqFiles(req) | 335 | cleanUpReqFiles(req) |
335 | 336 | ||
336 | res.status(HttpStatusCode.BAD_REQUEST_400) | 337 | res.fail({ |
337 | .json({ | 338 | type: ServerErrorCode.INCORRECT_FILES_IN_TORRENT.toString(), |
338 | code: ServerErrorCode.INCORRECT_FILES_IN_TORRENT, | 339 | message: 'Torrents with only 1 file are supported.' |
339 | error: 'Torrents with only 1 file are supported.' | 340 | }) |
340 | }) | ||
341 | |||
342 | return undefined | 341 | return undefined |
343 | } | 342 | } |
344 | 343 | ||
diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index 6483d2e8a..47ab098ef 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts | |||
@@ -146,7 +146,7 @@ async function viewVideo (req: express.Request, res: express.Response) { | |||
146 | const exists = await Redis.Instance.doesVideoIPViewExist(ip, immutableVideoAttrs.uuid) | 146 | const exists = await Redis.Instance.doesVideoIPViewExist(ip, immutableVideoAttrs.uuid) |
147 | if (exists) { | 147 | if (exists) { |
148 | logger.debug('View for ip %s and video %s already exists.', ip, immutableVideoAttrs.uuid) | 148 | logger.debug('View for ip %s and video %s already exists.', ip, immutableVideoAttrs.uuid) |
149 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 149 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
150 | } | 150 | } |
151 | 151 | ||
152 | const video = await VideoModel.load(immutableVideoAttrs.id) | 152 | const video = await VideoModel.load(immutableVideoAttrs.id) |
@@ -179,7 +179,7 @@ async function viewVideo (req: express.Request, res: express.Response) { | |||
179 | 179 | ||
180 | Hooks.runAction('action:api.video.viewed', { video, ip }) | 180 | Hooks.runAction('action:api.video.viewed', { video, ip }) |
181 | 181 | ||
182 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 182 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
183 | } | 183 | } |
184 | 184 | ||
185 | async function getVideoDescription (req: express.Request, res: express.Response) { | 185 | async function getVideoDescription (req: express.Request, res: express.Response) { |
diff --git a/server/controllers/api/videos/live.ts b/server/controllers/api/videos/live.ts index 04d2494ce..6b733c577 100644 --- a/server/controllers/api/videos/live.ts +++ b/server/controllers/api/videos/live.ts | |||
@@ -76,7 +76,7 @@ async function updateLiveVideo (req: express.Request, res: express.Response) { | |||
76 | 76 | ||
77 | await federateVideoIfNeeded(video, false) | 77 | await federateVideoIfNeeded(video, false) |
78 | 78 | ||
79 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 79 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
80 | } | 80 | } |
81 | 81 | ||
82 | async function addLiveVideo (req: express.Request, res: express.Response) { | 82 | 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 6102f28dc..2d6ca60a8 100644 --- a/server/controllers/api/videos/ownership.ts +++ b/server/controllers/api/videos/ownership.ts | |||
@@ -122,7 +122,7 @@ function acceptOwnership (req: express.Request, res: express.Response) { | |||
122 | videoChangeOwnership.status = VideoChangeOwnershipStatus.ACCEPTED | 122 | videoChangeOwnership.status = VideoChangeOwnershipStatus.ACCEPTED |
123 | await videoChangeOwnership.save({ transaction: t }) | 123 | await videoChangeOwnership.save({ transaction: t }) |
124 | 124 | ||
125 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 125 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
126 | }) | 126 | }) |
127 | } | 127 | } |
128 | 128 | ||
@@ -133,6 +133,6 @@ function refuseOwnership (req: express.Request, res: express.Response) { | |||
133 | videoChangeOwnership.status = VideoChangeOwnershipStatus.REFUSED | 133 | videoChangeOwnership.status = VideoChangeOwnershipStatus.REFUSED |
134 | await videoChangeOwnership.save({ transaction: t }) | 134 | await videoChangeOwnership.save({ transaction: t }) |
135 | 135 | ||
136 | return res.sendStatus(HttpStatusCode.NO_CONTENT_204) | 136 | return res.status(HttpStatusCode.NO_CONTENT_204).end() |
137 | }) | 137 | }) |
138 | } | 138 | } |
diff --git a/server/controllers/api/videos/upload.ts b/server/controllers/api/videos/upload.ts index ebc17c760..c33d7fcb9 100644 --- a/server/controllers/api/videos/upload.ts +++ b/server/controllers/api/videos/upload.ts | |||
@@ -97,8 +97,11 @@ export async function addVideoLegacy (req: express.Request, res: express.Respons | |||
97 | // Uploading the video could be long | 97 | // Uploading the video could be long |
98 | // Set timeout to 10 minutes, as Express's default is 2 minutes | 98 | // Set timeout to 10 minutes, as Express's default is 2 minutes |
99 | req.setTimeout(1000 * 60 * 10, () => { | 99 | req.setTimeout(1000 * 60 * 10, () => { |
100 | logger.error('Upload video has timed out.') | 100 | logger.error('Video upload has timed out.') |
101 | return res.sendStatus(HttpStatusCode.REQUEST_TIMEOUT_408) | 101 | return res.fail({ |
102 | status: HttpStatusCode.REQUEST_TIMEOUT_408, | ||
103 | message: 'Video upload has timed out.' | ||
104 | }) | ||
102 | }) | 105 | }) |
103 | 106 | ||
104 | const videoPhysicalFile = req.files['videofile'][0] | 107 | const videoPhysicalFile = req.files['videofile'][0] |