UNPKG

3.92 kBJavaScriptView Raw
1"use strict";
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 */
8Object.defineProperty(exports, "__esModule", { value: true });
9exports.HTTPClient = void 0;
10var tslib_1 = require("tslib");
11/**
12 * @class
13 * Class representing HTTPClient
14 */
15var 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}());
99exports.HTTPClient = HTTPClient;
100//# sourceMappingURL=HTTPClient.js.map
\No newline at end of file