blob: 590552da104c27a55813942c6a02d3ec6dca29b0 (
plain)
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
49
|
import { humanizeErrors } from '../../modules/errors'
export function StatusCodeError (statusCode, body, options, response) {
this.name = 'StatusCodeError'
this.statusCode = statusCode
this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body)
this.error = body // legacy attribute
this.options = options
this.response = response
if (Error.captureStackTrace) { // required for non-V8 environments
Error.captureStackTrace(this)
}
}
StatusCodeError.prototype = Object.create(Error.prototype)
StatusCodeError.prototype.constructor = StatusCodeError
export class RegistrationError extends Error {
constructor (error) {
super()
if (Error.captureStackTrace) {
Error.captureStackTrace(this)
}
try {
// the error is probably a JSON object with a single key, "errors", whose value is another JSON object containing the real errors
if (typeof error === 'string') {
error = JSON.parse(error)
if (error.hasOwnProperty('error')) {
error = JSON.parse(error.error)
}
}
if (typeof error === 'object') {
// replace ap_id with username
if (error.ap_id) {
error.username = error.ap_id
delete error.ap_id
}
this.message = humanizeErrors(error)
} else {
this.message = error
}
} catch (e) {
// can't parse it, so just treat it like a string
this.message = error
}
}
}
|