NodeHttpClient.js.map 6.5 KB
Newer Older
lwplvx's avatar
add app  
lwplvx 已提交
1
{"version":3,"file":"NodeHttpClient.js","sourceRoot":"","sources":["../../src/NodeHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n// @ts-ignore: This will be removed from built files and is here to make the types available during dev work\r\nimport * as Request from \"@types/request\";\r\n\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n\r\nlet requestModule: Request.RequestAPI<Request.Request, Request.CoreOptions, Request.RequiredUriUrl>;\r\nif (typeof XMLHttpRequest === \"undefined\") {\r\n    // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n    // @ts-ignore: TS doesn't know about these names\r\n    const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n    requestModule = requireFunc(\"request\");\r\n}\r\n\r\nexport class NodeHttpClient extends HttpClient {\r\n    private readonly logger: ILogger;\r\n    private readonly request: typeof requestModule;\r\n    private readonly cookieJar: Request.CookieJar;\r\n\r\n    public constructor(logger: ILogger) {\r\n        super();\r\n        if (typeof requestModule === \"undefined\") {\r\n            throw new Error(\"The 'request' module could not be loaded.\");\r\n        }\r\n\r\n        this.logger = logger;\r\n        this.cookieJar = requestModule.jar();\r\n        this.request = requestModule.defaults({ jar: this.cookieJar });\r\n    }\r\n\r\n    public send(httpRequest: HttpRequest): Promise<HttpResponse> {\r\n        return new Promise<HttpResponse>((resolve, reject) => {\r\n\r\n            let requestBody: Buffer | string;\r\n            if (isArrayBuffer(httpRequest.content)) {\r\n                requestBody = Buffer.from(httpRequest.content);\r\n            } else {\r\n                requestBody = httpRequest.content || \"\";\r\n            }\r\n\r\n            const currentRequest = this.request(httpRequest.url!, {\r\n                body: requestBody,\r\n                // If binary is expected 'null' should be used, otherwise for text 'utf8'\r\n                encoding: httpRequest.responseType === \"arraybuffer\" ? null : \"utf8\",\r\n                headers: {\r\n                    // Tell auth middleware to 401 instead of redirecting\r\n                    \"X-Requested-With\": \"XMLHttpRequest\",\r\n                    ...httpRequest.headers,\r\n                },\r\n                method: httpRequest.method,\r\n                timeout: httpRequest.timeout,\r\n            },\r\n            (error, response, body) => {\r\n                if (httpRequest.abortSignal) {\r\n                    httpRequest.abortSignal.onabort = null;\r\n                }\r\n\r\n                if (error) {\r\n                    if (error.code === \"ETIMEDOUT\") {\r\n                        this.logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n                        reject(new TimeoutError());\r\n                    }\r\n                    this.logger.log(LogLevel.Warning, `Error from HTTP request. ${error}`);\r\n                    reject(error);\r\n                    return;\r\n                }\r\n\r\n                if (response.statusCode >= 200 && response.statusCode < 300) {\r\n                    resolve(new HttpResponse(response.statusCode, response.statusMessage || \"\", body));\r\n                } else {\r\n                    reject(new HttpError(response.statusMessage || \"\", response.statusCode || 0));\r\n                }\r\n            });\r\n\r\n            if (httpRequest.abortSignal) {\r\n                httpRequest.abortSignal.onabort = () => {\r\n                    currentRequest.abort();\r\n                    reject(new AbortError());\r\n                };\r\n            }\r\n        });\r\n    }\r\n\r\n    public getCookieString(url: string): string {\r\n        return this.cookieJar.getCookieString(url);\r\n    }\r\n}\r\n"]}