|
import _ from 'lodash'; |
|
|
|
import Body from './Body.ts'; |
|
import Exception from '../exceptions/Exception.ts'; |
|
import APIException from '../exceptions/APIException.ts'; |
|
import EX from '../consts/exceptions.ts'; |
|
import HTTP_STATUS_CODES from '../http-status-codes.ts'; |
|
|
|
export default class FailureBody extends Body { |
|
|
|
constructor(error: APIException | Exception | Error, _data?: any) { |
|
let errcode, errmsg, data = _data, httpStatusCode = HTTP_STATUS_CODES.OK;; |
|
if(_.isString(error)) |
|
error = new Exception(EX.SYSTEM_ERROR, error); |
|
else if(error instanceof APIException || error instanceof Exception) |
|
({ errcode, errmsg, data, httpStatusCode } = error); |
|
else if(_.isError(error)) |
|
({ errcode, errmsg, data, httpStatusCode } = new Exception(EX.SYSTEM_ERROR, error.message)); |
|
super({ |
|
code: errcode || -1, |
|
message: errmsg || 'Internal error', |
|
data, |
|
statusCode: httpStatusCode |
|
}); |
|
} |
|
|
|
static isInstance(value) { |
|
return value instanceof FailureBody; |
|
} |
|
|
|
} |