1 | "use strict";
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | exports.Agent = exports.toHeader = void 0;
|
7 | var axios_1 = __importDefault(require("axios"));
|
8 | var core_interface_1 = require("@ideal-postcodes/core-interface");
|
9 | var
|
10 |
|
11 |
|
12 |
|
13 | IdealPostcodesError = core_interface_1.errors.IdealPostcodesError;
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 | var toHeader = function (gotHeaders) {
|
20 | return Object.keys(gotHeaders).reduce(function (headers, key) {
|
21 | var val = gotHeaders[key];
|
22 | if (typeof val === "string") {
|
23 | headers[key] = val;
|
24 | }
|
25 | else if (Array.isArray(val)) {
|
26 | headers[key] = val.join(",");
|
27 | }
|
28 | return headers;
|
29 | }, {});
|
30 | };
|
31 | exports.toHeader = toHeader;
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 | var toHttpResponse = function (httpRequest, response) { return ({
|
38 | httpRequest: httpRequest,
|
39 | body: response.data,
|
40 | httpStatus: response.status || 0,
|
41 | header: (0, exports.toHeader)(response.headers),
|
42 | metadata: { response: response },
|
43 | }); };
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 | var handleError = function (error) {
|
51 | var idpcError = new IdealPostcodesError({
|
52 | message: "[".concat(error.name, "] ").concat(error.message),
|
53 | httpStatus: 0,
|
54 | metadata: { axios: error },
|
55 | });
|
56 | return Promise.reject(idpcError);
|
57 | };
|
58 |
|
59 |
|
60 | var validateStatus = function () { return true; };
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 | var Agent = (function () {
|
67 | function Agent() {
|
68 | this.Axios = axios_1.default.create({ validateStatus: validateStatus });
|
69 | }
|
70 | Agent.prototype.requestWithBody = function (httpRequest) {
|
71 | var body = httpRequest.body, method = httpRequest.method, timeout = httpRequest.timeout, url = httpRequest.url, header = httpRequest.header, query = httpRequest.query;
|
72 | return this.Axios.request({
|
73 | url: url,
|
74 | method: method,
|
75 | headers: header,
|
76 | params: query,
|
77 | data: body,
|
78 | timeout: timeout,
|
79 | })
|
80 | .then(function (response) { return toHttpResponse(httpRequest, response); })
|
81 | .catch(handleError);
|
82 | };
|
83 | Agent.prototype.request = function (httpRequest) {
|
84 | var method = httpRequest.method, timeout = httpRequest.timeout, url = httpRequest.url, header = httpRequest.header, query = httpRequest.query;
|
85 | return this.Axios.request({
|
86 | url: url,
|
87 | method: method,
|
88 | headers: header,
|
89 | params: query,
|
90 | timeout: timeout,
|
91 | })
|
92 | .then(function (response) { return toHttpResponse(httpRequest, response); })
|
93 | .catch(handleError);
|
94 | };
|
95 | Agent.prototype.http = function (httpRequest) {
|
96 | if (httpRequest.body !== undefined)
|
97 | return this.requestWithBody(httpRequest);
|
98 | return this.request(httpRequest);
|
99 | };
|
100 | return Agent;
|
101 | }());
|
102 | exports.Agent = Agent;
|