async-http
v0.1.2
Published
Asynchronous HTTP request API
Downloads
8
Maintainers
Readme
async-http
Asynchronous HTTP request API
Examples
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);
});
API
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;
}
}