diff --git a/request/request-tests.ts b/request/request-tests.ts index 2e878893b..1f638d864 100644 --- a/request/request-tests.ts +++ b/request/request-tests.ts @@ -31,6 +31,22 @@ var bodyArr: request.RequestPart[] = [{ body: value }]; +//Defaults tests +(() => { + const githubUrl = 'https://github.com'; + const defaultJarRequest = request.defaults({ jar: true }); + defaultJarRequest.get(githubUrl); + //defaultJarRequest(); //this line doesn't compile (and shouldn't) + const defaultUrlRequest = request.defaults({ url: githubUrl }); + defaultUrlRequest(); + defaultUrlRequest.get(); + const defaultBodyRequest = defaultUrlRequest.defaults({body: '{}', json: true}); + defaultBodyRequest.get(); + defaultBodyRequest.post(); + defaultBodyRequest.put(); +})(); + + // --- --- --- --- --- --- --- --- --- --- --- --- obj = req.toJSON(); @@ -526,6 +542,9 @@ var specialRequest = baseRequest.defaults({ headers: {special: 'special value'} }); +const urlRequest = specialRequest.defaults({url: 'https://github.com'}); +urlRequest({}, function(error, response, body) {console.log(body);}); + request.put(url); request.patch(url); request.post(url); diff --git a/request/request.d.ts b/request/request.d.ts index 39b81c95d..ce560b1c0 100644 --- a/request/request.d.ts +++ b/request/request.d.ts @@ -16,35 +16,39 @@ declare module 'request' { import fs = require('fs'); namespace request { - export interface RequestAPI { - defaults(options: OptionalUriUrl & TOptions): RequestAPI; + export interface RequestAPI { + defaults(options: TOptions): RequestAPI; + defaults(options: RequiredUriUrl & TOptions): DefaultUriUrlRequestApi; + (uri: string, options?: TOptions, callback?: RequestCallback): TRequest; (uri: string, callback?: RequestCallback): TRequest; - (options?: RequiredOptions & TOptions, callback?: RequestCallback): TRequest; + (options: TUriUrlOptions & TOptions, callback?: RequestCallback): TRequest; get(uri: string, options?: TOptions, callback?: RequestCallback): TRequest; get(uri: string, callback?: RequestCallback): TRequest; - get(options: RequiredOptions & TOptions, callback?: RequestCallback): TRequest; + get(options: TUriUrlOptions & TOptions, callback?: RequestCallback): TRequest; post(uri: string, options?: TOptions, callback?: RequestCallback): TRequest; post(uri: string, callback?: RequestCallback): TRequest; - post(options: RequiredOptions & TOptions, callback?: RequestCallback): TRequest; + post(options: TUriUrlOptions & TOptions, callback?: RequestCallback): TRequest; put(uri: string, options?: TOptions, callback?: RequestCallback): TRequest; put(uri: string, callback?: RequestCallback): TRequest; - put(options: RequiredOptions & TOptions, callback?: RequestCallback): TRequest; + put(options: TUriUrlOptions & TOptions, callback?: RequestCallback): TRequest; head(uri: string, options?: TOptions, callback?: RequestCallback): TRequest; head(uri: string, callback?: RequestCallback): TRequest; - head(options: RequiredOptions & TOptions, callback?: RequestCallback): TRequest; + head(options: TUriUrlOptions & TOptions, callback?: RequestCallback): TRequest; patch(uri: string, options?: TOptions, callback?: RequestCallback): TRequest; patch(uri: string, callback?: RequestCallback): TRequest; - patch(options: RequiredOptions & TOptions, callback?: RequestCallback): TRequest; + patch(options: TUriUrlOptions & TOptions, callback?: RequestCallback): TRequest; del(uri: string, options?: TOptions, callback?: RequestCallback): TRequest; del(uri: string, callback?: RequestCallback): TRequest; - del(options: RequiredOptions & TOptions, callback?: RequestCallback): TRequest; + del(options: TUriUrlOptions & TOptions, callback?: RequestCallback): TRequest; forever(agentOptions: any, optionsArg: any): TRequest; jar(): CookieJar; @@ -53,21 +57,22 @@ declare module 'request' { initParams: any; debug: boolean; } - - interface UriOptions { - uri: string; + + interface DefaultUriUrlRequestApi + extends RequestAPI { + defaults(options: TOptions): DefaultUriUrlRequestApi; + (): TRequest; + get(): TRequest; + post(): TRequest; + put(): TRequest; + head(): TRequest; + patch(): TRequest; + del(): TRequest; } - interface UrlOptions { - url: string; - } - - interface OptionalUriUrl { - uri?: string; - url?: string; - } - - interface OptionalOptions { + interface CoreOptions { baseUrl?: string; callback?: (error: any, response: http.IncomingMessage, body: any) => void; jar?: any; // CookieJar @@ -106,9 +111,19 @@ declare module 'request' { har?: HttpArchiveRequest; } - export type RequiredOptions = UriOptions | UrlOptions; - export type Options = RequiredOptions & OptionalOptions; - export type DefaultsOptions = OptionalUriUrl & OptionalOptions; + interface UriOptions { + uri: string; + } + interface UrlOptions { + url: string; + } + export type RequiredUriUrl = UriOptions | UrlOptions; + + interface OptionalUriUrl { + uri?: string; + url?: string; + } + export type Options = RequiredUriUrl & CoreOptions; export interface RequestCallback { (error: any, response: http.IncomingMessage, body: any): void; @@ -230,6 +245,6 @@ declare module 'request' { toString(): string; } } - var request: request.RequestAPI; + var request: request.RequestAPI; export = request; }