blob: 43c3ef11773cf83976a775d717211e0f01199b8f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
const BaseExceptionHandler = use('BaseExceptionHandler');
const Sentry = require('@sentry/node');
/**
* This class handles all exceptions thrown during
* the HTTP request lifecycle.
*
* @class ExceptionHandler
*/
class ExceptionHandler extends BaseExceptionHandler {
/**
* Handle exception thrown during the HTTP lifecycle
*
* @method handle
*
* @param {Object} error
* @param {Object} options.request
* @param {Object} options.response
*
* @return {void}
*/
async handle(error, { response }) {
if (error.name === 'ValidationException') {
return response.status(400).send('Invalid arguments');
} if (error.name === 'InvalidSessionException') {
return response.status(401).redirect('/user/login');
}
return response.status(error.status).send(error.message);
}
/**
* Report exception for logging or debugging.
*
* @method report
*
* @param {Object} error
* @param {Object} options.request
*
* @return {void}
*/
async report(error) {
Sentry.captureException(error);
return true;
}
}
module.exports = ExceptionHandler;
|