UNPKG

3.41 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var Errors = require("./models/client/Errors");
4/**
5 * Handles general errors and all client request errors.
6 * Client response errors are classified so that proper response error is generated.
7 */
8var ErrorHandler = /** @class */ (function () {
9 function ErrorHandler() {
10 }
11 /**
12 * Process callback function for HTTP request.
13 *
14 * @param error - request error that needs to be transformed to proper Postmark error.
15 *
16 * @return {PostmarkError} - formatted Postmark error
17 */
18 ErrorHandler.prototype.buildRequestError = function (error) {
19 var response = error.response;
20 if (response !== undefined) {
21 return this.buildErrorForResponse(response, error.message);
22 }
23 else if (error.message !== undefined) {
24 return this.buildGeneralError(error.message);
25 }
26 else {
27 return this.buildGeneralError(error.toJSON.toString());
28 }
29 };
30 /**
31 * Build general Postmark error.
32 *
33 * @param errorMessage - error message that needs to be identified and transformed to proper Postmark error.
34 *
35 * @returns properly formatted Postmark error.
36 */
37 ErrorHandler.prototype.buildGeneralError = function (errorMessage) {
38 return new Errors.PostmarkError(errorMessage);
39 };
40 /**
41 * Build Postmark error based on response from http client.
42 *
43 * @param {AxiosResponse} response - request response used to transform to Postmark error.
44 * @return {PostmarkError} - formatted Postmark error
45 */
46 ErrorHandler.prototype.buildErrorForResponse = function (response, errorMessage) {
47 var data = response.data;
48 var errorCode = this.retrieveDefaultOrValue(0, data.ErrorCode);
49 var status = this.retrieveDefaultOrValue(0, response.status);
50 var message = this.retrieveDefaultOrValue(errorMessage, data.Message);
51 return this.buildRequestErrorByStatus(message, errorCode, status);
52 };
53 ErrorHandler.prototype.retrieveDefaultOrValue = function (defaultValue, data) {
54 return (data === undefined) ? defaultValue : data;
55 };
56 /**
57 * Build Postmark error based on HTTP request status.
58 *
59 * @param error - http request library error, that will be transformed to Postmark error.
60 *
61 * @returns properly formatted Postmark error.
62 */
63 ErrorHandler.prototype.buildRequestErrorByStatus = function (errorMessage, errorCode, errorStatusCode) {
64 switch (errorStatusCode) {
65 case 401:
66 return new Errors.InvalidAPIKeyError(errorMessage, errorCode, errorStatusCode);
67 case 404:
68 return new Errors.PostmarkError(errorMessage, errorCode, errorStatusCode);
69 case 422:
70 return new Errors.ApiInputError(errorMessage, errorCode, errorStatusCode);
71 case 500:
72 return new Errors.InternalServerError(errorMessage, errorCode, errorStatusCode);
73 case 503:
74 return new Errors.ServiceUnavailablerError(errorMessage, errorCode, errorStatusCode);
75 default:
76 return new Errors.UnknownError(errorMessage, errorCode, errorStatusCode);
77 }
78 };
79 return ErrorHandler;
80}());
81exports.ErrorHandler = ErrorHandler;
82//# sourceMappingURL=ErrorHandler.js.map
\No newline at end of file