1 | ;
|
2 | /**
|
3 | * -------------------------------------------------------------------------------------------
|
4 | * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.
|
5 | * See License in the project root for license information.
|
6 | * -------------------------------------------------------------------------------------------
|
7 | */
|
8 | Object.defineProperty(exports, "__esModule", { value: true });
|
9 | exports.HTTPClient = void 0;
|
10 | var tslib_1 = require("tslib");
|
11 | /**
|
12 | * @class
|
13 | * Class representing HTTPClient
|
14 | */
|
15 | var HTTPClient = /** @class */ (function () {
|
16 | /**
|
17 | * @public
|
18 | * @constructor
|
19 | * Creates an instance of a HTTPClient
|
20 | * @param {...Middleware} middleware - The first middleware of the middleware chain or a sequence of all the Middleware handlers
|
21 | */
|
22 | function HTTPClient() {
|
23 | var middleware = [];
|
24 | for (var _i = 0; _i < arguments.length; _i++) {
|
25 | middleware[_i] = arguments[_i];
|
26 | }
|
27 | if (!middleware || !middleware.length) {
|
28 | var error = new Error();
|
29 | error.name = "InvalidMiddlewareChain";
|
30 | error.message = "Please provide a default middleware chain or custom middleware chain";
|
31 | throw error;
|
32 | }
|
33 | this.setMiddleware.apply(this, middleware);
|
34 | }
|
35 | /**
|
36 | * @private
|
37 | * Processes the middleware parameter passed to set this.middleware property
|
38 | * The calling function should validate if middleware is not undefined or not empty.
|
39 | * @param {...Middleware} middleware - The middleware passed
|
40 | * @returns Nothing
|
41 | */
|
42 | HTTPClient.prototype.setMiddleware = function () {
|
43 | var middleware = [];
|
44 | for (var _i = 0; _i < arguments.length; _i++) {
|
45 | middleware[_i] = arguments[_i];
|
46 | }
|
47 | if (middleware.length > 1) {
|
48 | this.parseMiddleWareArray(middleware);
|
49 | }
|
50 | else {
|
51 | this.middleware = middleware[0];
|
52 | }
|
53 | };
|
54 | /**
|
55 | * @private
|
56 | * Processes the middleware array to construct the chain
|
57 | * and sets this.middleware property to the first middleware handler of the array
|
58 | * The calling function should validate if middleware is not undefined or not empty
|
59 | * @param {Middleware[]} middlewareArray - The array of middleware handlers
|
60 | * @returns Nothing
|
61 | */
|
62 | HTTPClient.prototype.parseMiddleWareArray = function (middlewareArray) {
|
63 | middlewareArray.forEach(function (element, index) {
|
64 | if (index < middlewareArray.length - 1) {
|
65 | element.setNext(middlewareArray[index + 1]);
|
66 | }
|
67 | });
|
68 | this.middleware = middlewareArray[0];
|
69 | };
|
70 | /**
|
71 | * @public
|
72 | * @async
|
73 | * To send the request through the middleware chain
|
74 | * @param {Context} context - The context of a request
|
75 | * @returns A promise that resolves to the Context
|
76 | */
|
77 | HTTPClient.prototype.sendRequest = function (context) {
|
78 | return tslib_1.__awaiter(this, void 0, void 0, function () {
|
79 | var error;
|
80 | return tslib_1.__generator(this, function (_a) {
|
81 | switch (_a.label) {
|
82 | case 0:
|
83 | if (typeof context.request === "string" && context.options === undefined) {
|
84 | error = new Error();
|
85 | error.name = "InvalidRequestOptions";
|
86 | error.message = "Unable to execute the middleware, Please provide valid options for a request";
|
87 | throw error;
|
88 | }
|
89 | return [4 /*yield*/, this.middleware.execute(context)];
|
90 | case 1:
|
91 | _a.sent();
|
92 | return [2 /*return*/, context];
|
93 | }
|
94 | });
|
95 | });
|
96 | };
|
97 | return HTTPClient;
|
98 | }());
|
99 | exports.HTTPClient = HTTPClient;
|
100 | //# sourceMappingURL=HTTPClient.js.map |
\ | No newline at end of file |