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; } }