64 lines
3.0 KiB
TypeScript
64 lines
3.0 KiB
TypeScript
/// <reference types="node" />
|
|
import { RequestHeaders, ResponseHeaders } from '../Types.js';
|
|
type TimeoutError = TypeError & {
|
|
code?: string;
|
|
};
|
|
export interface HttpClientInterface {
|
|
getClientName: () => string;
|
|
makeRequest: (host: string, port: string, path: string, method: string, headers: RequestHeaders, requestData: string, protocol: string, timeout: number) => Promise<HttpClientResponseInterface>;
|
|
}
|
|
export interface HttpClientResponseInterface {
|
|
getStatusCode: () => number;
|
|
getHeaders: () => ResponseHeaders;
|
|
getRawResponse: () => unknown;
|
|
toStream: (streamCompleteCallback: () => void) => unknown;
|
|
toJSON: () => Promise<any>;
|
|
}
|
|
/**
|
|
* Interface for Node HTTP client with Node-specific stream types.
|
|
*/
|
|
export interface NodeHttpClientInterface extends HttpClientInterface {
|
|
makeRequest: (host: string, port: string, path: string, method: string, headers: RequestHeaders, requestData: string, protocol: string, timeout: number) => Promise<NodeHttpClientResponseInterface>;
|
|
}
|
|
export interface NodeHttpClientResponseInterface extends HttpClientResponseInterface {
|
|
toStream: (streamCompleteCallback: () => void) => NodeJS.ReadableStream;
|
|
}
|
|
/**
|
|
* Interface for Fetch HTTP client with Web Streams API types.
|
|
*/
|
|
export interface FetchHttpClientInterface extends HttpClientInterface {
|
|
makeRequest: (host: string, port: string, path: string, method: string, headers: RequestHeaders, requestData: string, protocol: string, timeout: number) => Promise<FetchHttpClientResponseInterface>;
|
|
}
|
|
export interface FetchHttpClientResponseInterface extends HttpClientResponseInterface {
|
|
toStream: (streamCompleteCallback: () => void) => ReadableStream<Uint8Array> | null;
|
|
}
|
|
/**
|
|
* Encapsulates the logic for issuing a request to the Stripe API.
|
|
*
|
|
* A custom HTTP client should should implement:
|
|
* 1. A response class which extends HttpClientResponse and wraps around their
|
|
* own internal representation of a response.
|
|
* 2. A client class which extends HttpClient and implements all methods,
|
|
* returning their own response class when making requests.
|
|
*/
|
|
export declare class HttpClient implements HttpClientInterface {
|
|
static CONNECTION_CLOSED_ERROR_CODES: string[];
|
|
static TIMEOUT_ERROR_CODE: string;
|
|
/** The client name used for diagnostics. */
|
|
getClientName(): string;
|
|
makeRequest(host: string, port: string, path: string, method: string, headers: RequestHeaders, requestData: string, protocol: string, timeout: number): Promise<HttpClientResponseInterface>;
|
|
/** Helper to make a consistent timeout error across implementations. */
|
|
static makeTimeoutError(): TimeoutError;
|
|
}
|
|
export declare class HttpClientResponse implements HttpClientResponseInterface {
|
|
_statusCode: number;
|
|
_headers: ResponseHeaders;
|
|
constructor(statusCode: number, headers: ResponseHeaders);
|
|
getStatusCode(): number;
|
|
getHeaders(): ResponseHeaders;
|
|
getRawResponse(): unknown;
|
|
toStream(streamCompleteCallback: () => void): unknown;
|
|
toJSON(): any;
|
|
}
|
|
export {};
|