123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- import * as stream from 'stream';
- import {Service} from './service';
- import {Response} from './response';
- import {HttpRequest} from './http_request';
- import {AWSError} from './error';
- export class Request<D, E> {
- /**
- * Creates a request for an operation on a given service with a set of input parameters.
- *
- * @param {AWS.Service} service - The service to perform the operation on.
- * @param {string} operation - The operation to perform on the service.
- * @param {object} params - Parameters to send to the operation.
- */
- constructor(service: Service, operation: string, params?: any);
- /**
- * Aborts a request, emitting the error and complete events.
- * This feature is not supported in the browser environment of the SDK.
- */
- abort(): void;
- /**
- * Converts the request object into a readable stream that can be read from or piped into a writable stream.
- * The data read from a readable stream contains only the raw HTTP body contents.
- * This feature is not supported in the browser environment of the SDK.
- */
- createReadStream(): stream.Readable;
- /**
- * Iterates over each page of results given a pageable request, calling the provided callback with each page of data.
- * After all pages have been retrieved, the callback is called with null data.
- *
- * @param {eachPage} callback - The callback that handles the response.
- */
- eachPage(callback: (err: E, data: D, doneCallback?: () => void) => boolean): void;
- /**
- * Returns whether the operation can return multiple pages of response data.
- */
- isPageable(): boolean;
- /**
- * Sends the request object.
- * If a callback is supplied, it is called when a response is returned from the service.
- */
- send(callback?: (err: E, data: D) => void): void;
- /**
- * Adds a listener that is triggered when a request emits the specified event.
- *
- * @param {string} event - 'Name of a request event.'
- * @param {function} listener - Callback to run when the event is triggered on the request.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: string, listener: () => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when a request is being validated.
- *
- * @param {string} event - validate: triggered when a request is being validated.
- * @param {function} listener - Callback to run when the request is being validated.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "validate", listener: (request: Request<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when the request payload is being built.
- *
- * @param {string} event - build: triggered when the request payload is being built.
- * @param {function} listener - Callback to run when the request's payload is being built.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "build", listener: (request: Request<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when a request is being signed.
- *
- * @param {string} event - sign: triggered when a request is being signed.
- * @param {function} listener - Callback to run when the request is being signed.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "sign", listener: (request: Request<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when a request is ready to be sent.
- *
- * @param {string} event - send: triggered when a request is ready to be sent.
- * @param {function} listener - Callback to run when the request is ready to be sent.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "send", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when a request failed and might need to be retried or redirected.
- *
- * @param {string} event - retry: triggered when a request failed and might need to be retried or redirected.
- * @param {function} listener - Callback to run when the request failed and may be retried.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "retry", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered on all non-2xx requests so that listeners can extract error details from the response body.
- *
- * @param {string} event - extractError: triggered on all non-2xx requests so that listeners can extract error details from the response body.
- * @param {function} listener - Callback to run when the request failed.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "extractError", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered in successful requests to allow listeners to de-serialize the response body into response.data.
- *
- * @param {string} event - extractData: triggered in successful requests to allow listeners to de-serialize the response body into response.data.
- * @param {function} listener - Callback to run when the request succeeded.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "extractData", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when the request completed successfully.
- *
- * @param {string} event - success: triggered when the request completed successfully.
- * @param {function} listener - Callback to run when the request completed successfully.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "success", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when an error occurs at any point during the request.
- *
- * @param {string} event - error: triggered when an error occurs at any point during the request.
- * @param {function} listener - Callback to run when the request errors at any point.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "error", listener: (err: AWSError, response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered whenever a request cycle completes.
- *
- * @param {string} event - complete: triggered whenever a request cycle completes.
- * @param {function} listener - Callback to run when the request cycle completes.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "complete", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when headers are sent by the remote server.
- *
- * @param {string} event - httpHeaders: triggered when headers are sent by the remote server.
- * @param {function} listener - Callback to run when the headers are sent by the remote server.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "httpHeaders", listener: (statusCode: number, headers: {[key: string]: string}, response: Response<D, E>, statusMessage: string) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when data is sent by the remote server.
- *
- * @param {string} event - httpData: triggered when data is sent by the remote server.
- * @param {function} listener - Callback to run when data is sent by the remote server.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "httpData", listener: (chunk: Buffer|Uint8Array, response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when the HTTP request has uploaded more data.
- *
- * @param {string} event - httpUploadProgress: triggered when the HTTP request has uploaded more data.
- * @param {function} listener - Callback to run when the HTTP request has uploaded more data.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "httpUploadProgress", listener: (progress: Progress, response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when the HTTP request has downloaded more data.
- *
- * @param {string} event - httpDownloadProgress: triggered when the HTTP request has downloaded more data.
- * @param {function} listener - Callback to run when the HTTP request has downloaded more data.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "httpDownloadProgress", listener: (progress: Progress, response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when the HTTP request failed.
- *
- * @param {string} event - httpError: triggered when the HTTP request failed.
- * @param {function} listener - Callback to run when the HTTP request failed.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "httpError", listener: (err: Error, response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when the server is finished sending data.
- *
- * @param {string} event - httpDone: triggered when the server is finished sending data.
- * @param {function} listener - Callback to run when the server is finished sending data.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- on(event: "httpDone", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when a request emits the specified event.
- *
- * @param {string} event - 'Name of a request event.'
- * @param {function} listener - Callback to run when the event is triggered on the request.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: string, listener: () => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when a request is being validated.
- *
- * @param {string} event - validate: triggered when a request is being validated.
- * @param {function} listener - Callback to run when the request is being validated.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "validate", listener: (request: Request<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when the request payload is being built.
- *
- * @param {string} event - build: triggered when the request payload is being built.
- * @param {function} listener - Callback to run when the request's payload is being built.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "build", listener: (request: Request<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when a request is being signed.
- *
- * @param {string} event - sign: triggered when a request is being signed.
- * @param {function} listener - Callback to run when the request is being signed.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "sign", listener: (request: Request<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when a request is ready to be sent.
- *
- * @param {string} event - send: triggered when a request is ready to be sent.
- * @param {function} listener - Callback to run when the request is ready to be sent.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "send", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when a request failed and might need to be retried or redirected.
- *
- * @param {string} event - retry: triggered when a request failed and might need to be retried or redirected.
- * @param {function} listener - Callback to run when the request failed and may be retried.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "retry", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered on all non-2xx requests so that listeners can extract error details from the response body.
- *
- * @param {string} event - extractError: triggered on all non-2xx requests so that listeners can extract error details from the response body.
- * @param {function} listener - Callback to run when the request failed.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "extractError", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered in successful requests to allow listeners to de-serialize the response body into response.data.
- *
- * @param {string} event - extractData: triggered in successful requests to allow listeners to de-serialize the response body into response.data.
- * @param {function} listener - Callback to run when the request succeeded.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "extractData", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when the request completed successfully.
- *
- * @param {string} event - success: triggered when the request completed successfully.
- * @param {function} listener - Callback to run when the request completed successfully.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "success", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when an error occurs at any point during the request.
- *
- * @param {string} event - error: triggered when an error occurs at any point during the request.
- * @param {function} listener - Callback to run when the request errors at any point.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "error", listener: (err: AWSError, response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered whenever a request cycle completes.
- *
- * @param {string} event - complete: triggered whenever a request cycle completes.
- * @param {function} listener - Callback to run when the request cycle completes.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "complete", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when headers are sent by the remote server.
- *
- * @param {string} event - httpHeaders: triggered when headers are sent by the remote server.
- * @param {function} listener - Callback to run when the headers are sent by the remote server.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "httpHeaders", listener: (statusCode: number, headers: {[key: string]: string}, response: Response<D, E>, statusMessage: string) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when data is sent by the remote server.
- *
- * @param {string} event - httpData: triggered when data is sent by the remote server.
- * @param {function} listener - Callback to run when data is sent by the remote server.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "httpData", listener: (chunk: Buffer|Uint8Array, response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when the HTTP request has uploaded more data.
- *
- * @param {string} event - httpUploadProgress: triggered when the HTTP request has uploaded more data.
- * @param {function} listener - Callback to run when the HTTP request has uploaded more data.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "httpUploadProgress", listener: (progress: Progress, response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when the HTTP request has downloaded more data.
- *
- * @param {string} event - httpDownloadProgress: triggered when the HTTP request has downloaded more data.
- * @param {function} listener - Callback to run when the HTTP request has downloaded more data.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "httpDownloadProgress", listener: (progress: Progress, response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when the HTTP request failed.
- *
- * @param {string} event - httpError: triggered when the HTTP request failed.
- * @param {function} listener - Callback to run when the HTTP request failed.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "httpError", listener: (err: Error, response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Adds a listener that is triggered when the server is finished sending data.
- *
- * @param {string} event - httpDone: triggered when the server is finished sending data.
- * @param {function} listener - Callback to run when the server is finished sending data.
- * @param {boolean} prepend - If set, prepends listener instead of appending.
- */
- onAsync(event: "httpDone", listener: (response: Response<D, E>) => void, prepend?: boolean): Request<D, E>;
- /**
- * Returns a 'thenable' promise.
- */
- promise(): Promise<PromiseResult<D, E>>
- /**
- * The time that the request started.
- */
- startTime: Date;
- /**
- * The raw HTTP request object containing request headers and body information sent by the service.
- */
- httpRequest: HttpRequest;
- }
- export type PromiseResult<D, E> = D & {$response: Response<D, E>};
- export interface Progress {
- loaded: number;
- total: number;
- }
|