UNPKG

5.68 kBSource Map (JSON)View Raw
1{"version":3,"file":"APIResponse.js","sourceRoot":"","sources":["APIResponse.ts"],"names":[],"mappings":"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","sourcesContent":["import {APIConfig} from \"./APIConfig\";\nimport {APIError} from \"./APIError\";\nimport {get, isNil} from \"lodash\";\nimport {URL} from \"url\";\n\nexport class APIResponse {\n req;\n res;\n next;\n\n constructor(req?, res?, next?) {\n this.req = req;\n this.res = res;\n this.next = next;\n }\n\n static withError(req, res, error: any, hapiOutput: boolean = APIConfig.OUTPUT_HAPI_RESULTS) {\n return new APIResponse(req, res).withError(error, hapiOutput);\n }\n\n async processHandlerFunction(target: any, handlerFunction: Function, handlerArgs: any[] = [], disableFriendlyResponse?: boolean, successResponseHandler?: (responseData: any, res) => void) {\n // Add the req, and res to the end arguments if the function wants it\n handlerArgs = handlerArgs.concat([this.req, this.res]);\n\n let handlerData;\n\n try {\n const handlerOutput = handlerFunction.apply(target, handlerArgs);\n if (!(handlerOutput instanceof Promise)) {\n handlerData = handlerOutput;\n } else {\n handlerData = await handlerOutput;\n }\n } catch (error) {\n this.withError(error);\n return;\n }\n\n // If the data is a URL, consider this a redirect.\n if (handlerData instanceof URL) {\n this.res.redirect((<URL>handlerData).toString());\n return;\n }\n\n if (disableFriendlyResponse) {\n this.res.json(handlerData);\n } else if (!isNil(successResponseHandler)) {\n successResponseHandler(handlerData, this.res);\n } else {\n this.withSuccess(handlerData, 200);\n }\n }\n\n withError(error: any, hapiOutput: boolean = APIConfig.OUTPUT_HAPI_RESULTS) {\n\n if (this.res.headersSent || isNil(error)) {\n return;\n }\n\n let apiError: APIError;\n\n if (error instanceof APIError) {\n apiError = error;\n } else {\n apiError = new APIError(\"unknown\", error);\n }\n\n if ((apiError.statusCode >= 500 && apiError.statusCode <= 599 && APIConfig.LOG_500_ERRORS) ||\n (apiError.statusCode >= 400 && apiError.statusCode <= 499 && APIConfig.LOG_400_ERRORS)) {\n console.error(JSON.stringify(apiError.out(true)));\n }\n\n if (this.next) {\n // Let the standard error handler handle it\n this.next(apiError);\n } else {\n this.res.status(apiError.statusCode).send(hapiOutput ? apiError.hapiOut() : apiError.out());\n }\n }\n\n withSuccess(data?: any, statusCode: number = 200, hapiOutput: boolean = APIConfig.OUTPUT_HAPI_RESULTS) {\n\n if (this.res.headersSent) {\n return;\n }\n\n let output = data;\n\n if (hapiOutput) {\n output = {\n \"this\": \"succeeded\",\n \"with\": data\n }\n }\n\n this.res.status(statusCode).send(output);\n }\n}"]}
\No newline at end of file