mockttp
Version:
Mock HTTP server for testing HTTP clients and stubbing webservices
75 lines • 4.08 kB
TypeScript
import { Buffer } from 'buffer';
import * as net from 'net';
import * as http from 'http';
import * as http2 from 'http2';
import { MaybePromise } from '@httptoolkit/util';
import { Headers, OngoingRequest, CompletedRequest, OngoingResponse, CompletedResponse, OngoingBody, CompletedBody, TimingEvents, InitiatedRequest, RawHeaders, Destination, InitiatedResponse } from "../types";
import { SocketMetadata } from './socket-extensions';
export declare const shouldKeepAlive: (req: OngoingRequest) => boolean;
export declare const writeHead: (response: http.ServerResponse | http2.Http2ServerResponse, status: number, statusMessage?: string | undefined, headers?: Headers | RawHeaders | undefined) => void;
export declare function isHttp2(message: http.IncomingMessage | http.ServerResponse | http2.Http2ServerRequest | http2.Http2ServerResponse | OngoingRequest | OngoingResponse): message is http2.Http2ServerRequest | http2.Http2ServerResponse;
export declare function encodeBodyBuffer(buffer: Uint8Array, headers: Headers | RawHeaders): Promise<Uint8Array | Buffer>;
export declare function decodeBodyBuffer(buffer: Buffer, headers: Headers): Promise<Buffer>;
export declare const isMockttpBody: (body: any) => body is CompletedBody;
type BodyDecoder = (buffer: Buffer, headers: Headers) => MaybePromise<Buffer>;
export declare const buildBodyReader: (body: Buffer, headers: Headers, bufferDecoder?: BodyDecoder) => CompletedBody;
export declare const parseRequestBody: (req: http.IncomingMessage | http2.Http2ServerRequest, options: {
maxSize: number;
}) => void;
export type ExtendedRawRequest = (http.IncomingMessage | http2.Http2ServerRequest) & {
protocol?: string;
body?: OngoingBody;
path?: string;
destination?: Destination;
[SocketMetadata]?: SocketMetadata;
};
/**
* For both normal requests & websockets, we do some standard preprocessing to ensure we have the absolute
* URL destination in place, and timing, tags & id metadata all ready for an OngoingRequest.
*/
export declare function preprocessRequest(req: ExtendedRawRequest, options: {
type: 'request' | 'websocket';
serverPort: number;
maxBodySize: number;
onBodyData?: (id: string, timestamp: number, content: Uint8Array, isEnded: boolean) => void;
}): OngoingRequest | null;
/**
* Build an initiated request: the external representation of a request
* that's just started.
*/
export declare function buildInitiatedRequest(request: OngoingRequest): InitiatedRequest;
/**
* Build a completed request: the external representation of a request
* that's been completely received (but not necessarily replied to).
*/
export declare function waitForCompletedRequest(request: OngoingRequest): Promise<CompletedRequest>;
export declare function trackResponse(response: http.ServerResponse, timingEvents: TimingEvents, tags: string[], options: {
maxSize: number;
onWriteHead: () => void;
onBodyData?: (id: string, timestamp: number, content: Uint8Array, isEnded: boolean) => void;
onInformationalResponse: (status: number, flatHeaders: string[]) => void;
}): OngoingResponse;
/**
* Build an initiated response: the external representation of a response
* that's just started.
*/
export declare function buildInitiatedResponse(response: OngoingResponse): InitiatedResponse;
/**
* Build a completed response: the external representation of a response
* that's been completely written out and sent back to the client.
*/
export declare function waitForCompletedResponse(response: OngoingResponse | CompletedResponse): Promise<CompletedResponse>;
export declare function tryToParseHttpRequest(input: Buffer, socket: net.Socket): PartiallyParsedHttpRequest;
type PartiallyParsedHttpRequest = {
protocol?: string;
httpVersion?: string;
method?: string;
url?: string;
headers?: Headers;
rawHeaders?: RawHeaders;
destination?: Destination;
path?: string;
};
export declare function parseRawHttpResponse(input: Buffer, request: OngoingRequest): CompletedResponse;
export {};
//# sourceMappingURL=request-utils.d.ts.map