Socket
Socket
Sign inDemoInstall

typed-rest-client

Package Overview
Dependencies
Maintainers
1
Versions
42
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

typed-rest-client - npm Package Compare versions

Comparing version 0.10.0 to 0.11.0

12

HttpClient.d.ts

@@ -7,3 +7,3 @@ import url = require("url");

MultipleChoices = 300,
MovedPermanantly = 301,
MovedPermanently = 301,
ResourceMoved = 302,

@@ -46,4 +46,8 @@ NotModified = 304,

handlers: ifm.IRequestHandler[];
socketTimeout: number;
constructor(userAgent: string, handlers?: ifm.IRequestHandler[], socketTimeout?: number);
requestOptions: ifm.IRequestOptions;
private _ignoreSslError;
private _socketTimeout;
private _httpProxy;
private _httpProxyBypassHosts;
constructor(userAgent: string, handlers?: ifm.IRequestHandler[], requestOptions?: ifm.IRequestOptions);
options(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise<HttpClientResponse>;

@@ -55,2 +59,3 @@ get(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise<HttpClientResponse>;

put(requestUrl: string, data: string, additionalHeaders?: ifm.IHeaders): Promise<HttpClientResponse>;
head(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise<HttpClientResponse>;
sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: ifm.IHeaders): Promise<HttpClientResponse>;

@@ -65,2 +70,3 @@ /**

private _prepareRequest(method, requestUrl, headers);
private _isBypassProxy(requestUrl);
}

@@ -21,3 +21,3 @@ // Copyright (c) Microsoft. All rights reserved.

HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices";
HttpCodes[HttpCodes["MovedPermanantly"] = 301] = "MovedPermanantly";
HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently";
HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved";

@@ -69,6 +69,20 @@ HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified";

class HttpClient {
constructor(userAgent, handlers, socketTimeout) {
constructor(userAgent, handlers, requestOptions) {
this._ignoreSslError = false;
this.userAgent = userAgent;
this.handlers = handlers;
this.socketTimeout = socketTimeout ? socketTimeout : 3 * 60000;
this.requestOptions = requestOptions;
if (requestOptions) {
if (requestOptions.ignoreSslError != null) {
this._ignoreSslError = requestOptions.ignoreSslError;
}
this._socketTimeout = requestOptions.socketTimeout;
this._httpProxy = requestOptions.proxy;
if (requestOptions.proxy && requestOptions.proxy.proxyBypassHosts) {
this._httpProxyBypassHosts = [];
requestOptions.proxy.proxyBypassHosts.forEach(bypass => {
this._httpProxyBypassHosts.push(new RegExp(bypass, 'i'));
});
}
}
}

@@ -93,2 +107,5 @@ options(requestUrl, additionalHeaders) {

}
head(requestUrl, additionalHeaders) {
return this.request('HEAD', requestUrl, null, additionalHeaders || {});
}
sendStream(verb, requestUrl, stream, additionalHeaders) {

@@ -133,3 +150,3 @@ return this.request(verb, requestUrl, stream, additionalHeaders);

// If we ever get disconnected, we want the socket to timeout eventually
req.setTimeout(this.socketTimeout, () => {
req.setTimeout(this._socketTimeout || 3 * 60000, () => {
if (socket) {

@@ -165,10 +182,26 @@ socket.end();

var defaultPort = usingSsl ? 443 : 80;
var proxyUrl;
if (process.env.HTTPS_PROXY && usingSsl) {
proxyUrl = url.parse(process.env.HTTPS_PROXY);
let proxyConfig = this._httpProxy;
// fallback to http_proxy and https_proxy env
if (!proxyConfig) {
if (process.env.HTTPS_PROXY && usingSsl) {
proxyConfig = {
proxyUrl: process.env.HTTPS_PROXY
};
}
else if (process.env.HTTP_PROXY) {
proxyConfig = {
proxyUrl: process.env.HTTP_PROXY
};
}
}
else if (process.env.HTTP_PROXY) {
proxyUrl = url.parse(process.env.HTTP_PROXY);
let proxyUrl;
let proxyAuth;
if (proxyConfig) {
if (proxyConfig.proxyUrl.length > 0) {
proxyUrl = url.parse(proxyConfig.proxyUrl);
}
if (proxyConfig.proxyUsername || proxyConfig.proxyPassword) {
proxyAuth = proxyConfig.proxyUsername + ":" + encodeURIComponent(proxyConfig.proxyPassword);
}
}
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
info.options = {};

@@ -181,3 +214,3 @@ info.options.host = info.parsedUrl.hostname;

info.options.headers["User-Agent"] = this.userAgent;
let useProxy = proxyUrl && proxyUrl.hostname;
let useProxy = proxyUrl && proxyUrl.hostname && !this._isBypassProxy(requestUrl);
if (useProxy) {

@@ -187,7 +220,6 @@ var agentOptions = {

proxy: {
// TODO: support proxy-authorization
//proxyAuth: "user:password",
proxyAuth: proxyAuth,
host: proxyUrl.hostname,
port: proxyUrl.port
}
},
};

@@ -204,2 +236,12 @@ var tunnelAgent;

}
if (usingSsl && this._ignoreSslError) {
if (!info.options.agent) {
info.options.agent = https.globalAgent;
}
// we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
// http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
// we have to cast it to any and change it directly
let agent = info.options.agent;
agent.options = Object.assign(agent.options || {}, { rejectUnauthorized: false });
}
// gives handlers an opportunity to participate

@@ -213,3 +255,15 @@ if (this.handlers) {

}
_isBypassProxy(requestUrl) {
if (!this._httpProxyBypassHosts) {
return false;
}
let bypass = false;
this._httpProxyBypassHosts.forEach(bypassHost => {
if (bypassHost.test(requestUrl)) {
bypass = true;
}
});
return bypass;
}
}
exports.HttpClient = HttpClient;

@@ -17,1 +17,12 @@ export interface IHeaders {

}
export interface IRequestOptions {
socketTimeout?: number;
ignoreSslError?: boolean;
proxy?: IProxyConfiguration;
}
export interface IProxyConfiguration {
proxyUrl: string;
proxyUsername?: string;
proxyPassword?: string;
proxyBypassHosts?: string[];
}
{
"name": "typed-rest-client",
"version": "0.10.0",
"version": "0.11.0",
"description": "Node Rest and Http Clients with typings for use with TypeScript",

@@ -5,0 +5,0 @@ "main": "./RestClient.js",

@@ -21,5 +21,5 @@ import httpm = require('./HttpClient');

* @param {ifm.IRequestHandler[]} handlers - handlers are typically auth handlers (basic, bearer, ntlm supplied)
* @param {number} socketTimeout - default socket timeout. Can also supply per method
* @param {ifm.IRequestOptions} requestOptions - options for each http requests (http proxy setting, socket timeout)
*/
constructor(userAgent: string, baseUrl?: string, handlers?: ifm.IRequestHandler[], socketTimeout?: number);
constructor(userAgent: string, baseUrl?: string, handlers?: ifm.IRequestHandler[], requestOptions?: ifm.IRequestOptions);
private _baseUrl;

@@ -26,0 +26,0 @@ /**

@@ -21,6 +21,6 @@ // Copyright (c) Microsoft. All rights reserved.

* @param {ifm.IRequestHandler[]} handlers - handlers are typically auth handlers (basic, bearer, ntlm supplied)
* @param {number} socketTimeout - default socket timeout. Can also supply per method
* @param {ifm.IRequestOptions} requestOptions - options for each http requests (http proxy setting, socket timeout)
*/
constructor(userAgent, baseUrl, handlers, socketTimeout) {
this.client = new httpm.HttpClient(userAgent, handlers, socketTimeout);
constructor(userAgent, baseUrl, handlers, requestOptions) {
this.client = new httpm.HttpClient(userAgent, handlers, requestOptions);
if (baseUrl) {

@@ -27,0 +27,0 @@ this._baseUrl = baseUrl;

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc