Fix some fringe cases for specifying a default URL or URI

This commit is contained in:
Joe Skeen
2015-11-13 09:23:20 -07:00
parent 7f14e4361c
commit e3c46899aa
2 changed files with 60 additions and 26 deletions
+19
View File
@@ -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);
+41 -26
View File
@@ -16,35 +16,39 @@ declare module 'request' {
import fs = require('fs');
namespace request {
export interface RequestAPI<TRequest extends Request, TOptions extends OptionalOptions> {
defaults(options: OptionalUriUrl & TOptions): RequestAPI<TRequest, OptionalUriUrl & TOptions>;
export interface RequestAPI<TRequest extends Request,
TOptions extends CoreOptions,
TUriUrlOptions> {
defaults(options: TOptions): RequestAPI<TRequest, TOptions, RequiredUriUrl>;
defaults(options: RequiredUriUrl & TOptions): DefaultUriUrlRequestApi<TRequest, TOptions, OptionalUriUrl>;
(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<TRequest extends Request,
TOptions extends CoreOptions,
TUriUrlOptions>
extends RequestAPI<TRequest, TOptions, TUriUrlOptions> {
defaults(options: TOptions): DefaultUriUrlRequestApi<TRequest, TOptions, OptionalUriUrl>;
(): 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<request.Request, request.OptionalOptions>;
var request: request.RequestAPI<request.Request, request.CoreOptions, request.RequiredUriUrl>;
export = request;
}