Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Asynchronous HTTP request API
import { Promise } from 'async-promise';
import { HttpClient } from 'async-http';
let client = new HttpClient("https://api.github.com/");
client.getAsJsonAsync("/repos/Microsoft/TypeScript/commits/a46a6106a8f01131ef208fa51fe69b3d06574507").then(response => {
console.log(response.commit.message);
});
declare module "async-http" {
import { Promise, CancellationToken } from 'async-promise';
export type JsonReplacer = any[] | ((key: string, value: any) => string);
/**
* A Uri
*/
export class Uri {
static SCHEME_HTTP: string;
static SCHEME_HTTPS: string;
/**
* The protocol for the Uri (e.g. 'http:')
*/
protocol: string;
/**
* The hostname for the Uri
*/
hostname: string;
/**
* The port number for the Uri
*/
port: number;
/**
* The path name for the Uri
*/
pathname: string;
/**
* The search portion of the path, also known as the querystring
*/
search: string;
/**
* The fragment portion of the path
*/
hash: string;
/**
* A value indicating whether the Url is an absolute url
*/
absolute: boolean;
/**
* Creates a new Uri by parsing a string
* @param uri {String} The uri string to parse
*/
constructor(uri: string);
/**
* Creates a new Uri by combining a base Uri and a relative Uri
* @param baseUri The base uri
* @param uri The relative uri
*/
constructor(baseUri: string | Uri, uri: string | Uri);
/**
* Gets the origin of the Uri
*/
origin: string;
/**
* Gets the host for the uri, including the hostname and port
*/
host: string;
/**
* Gets the scheme for the uri (e.g. 'http://'')
*/
scheme: string;
/**
* Tests whether the provided uri has the same origin as this uri
* @param uri The uri to compare against
* @returns True if the uri's have the same origin; otherwise, false
*/
isSameOrigin(uri: string | Uri): boolean;
/**
* Gets the string representation of the Uri
* @param format {String} A format specifier.
* @returns {String} The string content of the Uri
*/
toString(format?: string): string;
/**
* Parses the provided uri string
* @param uri {String} The uri string to parse
* @returns {Uri} The parsed uri
*/
static parse(uri: string): Uri;
/**
* Combines two uris
* @param baseUri The base uri
* @param uri The relative uri
* @returns The combined uri
*/
static combine(baseUri: string | Uri, uri: string | Uri): Uri;
}
export module QueryString {
interface QueryStringMap {
[key: string]: string | number | boolean | (string | number | boolean)[];
}
function stringify(obj: any): string;
function parse(text: string): QueryStringMap;
}
/**
* An HTTP request for an HttpClient
*/
export class HttpRequest {
private _headers;
/**
* The body of the request
*/
content: HttpContent;
/**
* The HTTP method for the request
*/
method: string;
/**
* The url for the request
*/
url: Uri;
/**
* Creates an HTTP request for an HttpClient
* @param method The HTTP method for the request
* @param url The url for the request
*/
constructor(method?: string, url?: string | Uri);
headers: HttpHeaders;
}
export interface HttpHeaders {
"Content-Length"?: string;
"Content-Type"?: string;
"Accepts"?: string;
"User-Agent"?: string;
[header: string]: string;
}
/**
* A response from an HttpClient
*/
export class HttpResponse {
private _headers;
request: HttpRequest;
statusCode: number;
statusText: string;
content: HttpContent;
constructor(statusCode?: number);
headers: HttpHeaders;
}
/**
* A client for HTTP requests
*/
export class HttpClient {
private _headers;
private _cts;
private _closed;
/**
* The base url for the client
*/
baseUrl: Uri;
/**
* A value indicating whether cookies should be sent to a cross-origin request
*/
withCredentials: boolean;
/**
* The number of milliseconds to wait before the request should time out
*/
timeout: number;
/**
* The username for the request
*/
username: string;
/**
* The password for the request
*/
password: string;
/**
* Creates a client for HTTP requests
* @param baseUrl The base url for the client
*/
constructor(baseUrl?: string | Uri);
headers: HttpHeaders;
/**
* Closes the client and cancels all pending requests
*/
close(): void;
/**
* Gets the response text from the requested url
* @param url The url for the request
* @returns A future result for the string
*/
getStringAsync(url: string | Uri): Promise<string>;
/**
* Gets the response from issuing an HTTP GET to the requested url
* @param url The url for the request
* @param token A token that can be used to cancel the request
* @returns A future result for the response
*/
getAsync(url: string | Uri, token?: CancellationToken): Promise<HttpResponse>;
/**
* Gets the response from issuing an HTTP POST to the requested url
* @param url The url for the request
* @param body The body of the request
* @param token A token that can be used to cancel the request
* @returns A future result for the response
*/
postAsync(url: string | Uri, body: HttpContent, token?: CancellationToken): Promise<HttpResponse>;
/**
* Gets the response from issuing an HTTP POST of a JSON serialized value to the requested url
* @param url The url for the request
* @param value The value to serialize
* @param jsonReplacer An array or callback used to replace values during serialization
* @param token A token that can be used to cancel the request
* @returns A future result for the response
*/
postJsonAsync(url: string | Uri, value: any, jsonReplacer?: any[] | ((key: string, value: any) => string), token?: CancellationToken): Promise<HttpResponse>;
/**
* Gets the response from issuing an HTTP PUT to the requested url
* @param url The url for the request
* @param body The body of the request
* @param token A token that can be used to cancel the request
* @returns A future result for the response
*/
putAsync(url: string | Uri, content: HttpContent, token?: CancellationToken): Promise<HttpResponse>;
/**
* Gets the response from issuing an HTTP PUT of a JSON serialized value to the requested url
* @param url The url for the request
* @param value The value to serialize
* @param jsonReplacer An array or callback used to replace values during serialization
* @param token A token that can be used to cancel the request
* @returns A future result for the response
*/
putJsonAsync(url: string | Uri, value: any, jsonReplacer?: any[] | ((key: string, value: any) => string), token?: CancellationToken): Promise<HttpResponse>;
/**
* Gets the response from issuing an HTTP DELETE to the requested url
* @param url The url for the request
* @param token A token that can be used to cancel the request
* @returns A future result for the response
*/
deleteAsync(url: string | Uri, token?: CancellationToken): Promise<HttpResponse>;
/**
* Sends the provided request and returns the response
* @param request {HttpRequest} An HTTP request to send
* @param token {futures.CancellationToken} A token that can be used to cancel the request
* @returns {futures.Promise<HttpResponse>} A future result for the response
*/
sendAsync(request: HttpRequest, token?: CancellationToken): Promise<HttpResponse>;
}
export class HttpContentWriter {
private _buffer;
private _byteOffset;
private _limit;
private _capacity;
constructor(limit?: number, capacity?: number);
size: number;
write(buffer: ArrayBuffer, byteOffset: number, byteLength: number): void;
toArrayBuffer(): ArrayBuffer;
close(): void;
private ensureCapacity(capacity);
}
export class HttpContent {
private _content;
private _headers;
private _loadingPromise;
private _state;
constructor();
type: string;
headers: HttpHeaders;
loadAsync(maxBufferSize?: number): Promise<void>;
readAsStringAsync(): Promise<string>;
readAsArrayBufferAsync(): Promise<ArrayBuffer>;
readAsJsonAsync(reviver?: (key: any, value: any) => any): Promise<any>;
close(): void;
protected serialize(writer: HttpContentWriter): Promise<void> | void;
protected throwIfClosed(): void;
private createWriter(maxBufferSize);
}
export class ArrayBufferContent extends HttpContent {
private _buffer;
constructor(buffer: ArrayBuffer);
type: string;
close(): void;
readAsArrayBufferAsync(): Promise<ArrayBuffer>;
protected serialize(writer: HttpContentWriter): void;
}
export class StringContent extends HttpContent {
private _text;
constructor(text: string, encoding?: string, mediaType?: string);
type: string;
readAsStringAsync(): Promise<string>;
close(): void;
protected serialize(writer: HttpContentWriter): void;
}
export class JsonContent extends HttpContent {
private _value;
private _replacer;
private _space;
constructor(value: any, replacer?: JsonReplacer, space?: string, mediaType?: string);
type: string;
readAsJsonAsync(reviver?: (key: any, value: any) => any): Promise<any>;
close(): void;
protected serialize(writer: HttpContentWriter): void;
}
/**
* An error raised during an http request
*/
export interface HttpError extends Error {
/**
* The `HttpClient` that initiated the request
*/
httpClient: HttpClient;
/**
* The `HttpResponse` for the error
*/
response: HttpResponse;
}
}
FAQs
Asynchronous HTTP request API
We found that async-http demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.