/// import * as stream from 'stream'; import * as http from 'http'; import * as https from 'https'; import * as url from 'url'; export interface UrlLibCallback { (err: any, data: Buffer | object, res: http.IncomingMessage): void; } export interface UrlLibResponse { data: Buffer | object; res: http.IncomingMessage; } export interface UrlLibHeaders { [k: string]: string; } export declare type UrlLibDataType = "text" | "json"; export declare type UrlLibMethod = "GET" | "POST" | "PUT" | "DELETE"; export interface UrlLibOptions { /** Request method, defaults to GET. Could be GET, POST, DELETE or PUT. Alias 'type'. **/ method?: UrlLibMethod; /** Data to be sent. Will be stringify automatically. **/ data?: object; /** Force convert data to query string. **/ dataAsQueryString?: boolean; /** Manually set the content of payload. If set, data will be ignored. **/ content?: string | Buffer; /** Stream to be pipe to the remote. If set, data and content will be ignored. **/ stream?: stream.Readable; /** A writable stream to be piped by the response stream. Responding data will be write to this stream and callback will be called with data set null after finished writing. **/ writeStream?: stream.Writable; /** consume the writeStream, invoke the callback after writeStream close. **/ consumeWriteStream?: [true]; /** Type of request data. Could be json. If it's json, will auto set Content-Type: application/json header. **/ contentType?: string; /** urllib default use querystring to stringify form data which don't support nested object, will use qs instead of querystring to support nested object by set this option to true. **/ nestedQuerystring?: boolean; /** Type of response data. Could be text or json. If it's text, the callbacked data would be a String. If it's json, the data of callback would be a parsed JSON Object and will auto set Accept: application/json header. Default callbacked data would be a Buffer. **/ dataType?: string; /** Fix the control characters (U+0000 through U+001F) before JSON parse response. Default is false. **/ fixJSONCtlChars?: boolean; /** Request headers. **/ headers?: UrlLibHeaders; /** Request timeout in milliseconds for connecting phase and response receiving phase. Defaults to exports.TIMEOUT, both are 5s. You can use timeout: 5000 to tell urllib use same timeout on two phase or set them seperately such as timeout: [3000, 5000], which will set connecting timeout to 3s and response 5s. **/ timeout?: number | [number, number]; /** username:password used in HTTP Basic Authorization. **/ auth?: string; /** username:password used in HTTP Digest Authorization. **/ digestAuth?: string; /** HTTP Agent object. Set false if you does not use agent. **/ agent?: http.Agent; /** HTTPS Agent object. Set false if you does not use agent. **/ httpsAgent?: https.Agent; /** An array of strings or Buffers of trusted certificates. If this is omitted several well known "root" CAs will be used, like VeriSign. These are used to authorize connections. Notes: This is necessary only if the server uses the self-signed certificate **/ ca?: string | Buffer | string[] | Buffer[]; /** If true, the server certificate is verified against the list of supplied CAs. An 'error' event is emitted if verification fails. Default: true. **/ rejectUnauthorized?: boolean; /** A string or Buffer containing the private key, certificate and CA certs of the server in PFX or PKCS12 format. **/ pfx?: string | Buffer; /** A string or Buffer containing the private key of the client in PEM format. Notes: This is necessary only if using the client certificate authentication **/ key?: string | Buffer; /** A string or Buffer containing the certificate key of the client in PEM format. Notes: This is necessary only if using the client certificate authentication **/ cert?: string | Buffer; /** A string of passphrase for the private key or pfx. **/ passphrase?: string; /** A string describing the ciphers to use or exclude. **/ ciphers?: string; /** The SSL method to use, e.g. SSLv3_method to force SSL version 3. **/ secureProtocol?: string; /** follow HTTP 3xx responses as redirects. defaults to false. **/ followRedirect?: boolean; /** The maximum number of redirects to follow, defaults to 10. **/ maxRedirects?: number; /** Format the redirect url by your self. Default is url.resolve(from, to). **/ formatRedirectUrl?: () => void; /** Before request hook, you can change every thing here. **/ beforeRequest?: () => void; /** let you get the res object when request connected, default false. alias customResponse **/ streaming?: boolean; /** Accept gzip response content and auto decode it, default is false. **/ gzip?: boolean; /** Enable timing or not, default is false. **/ timing?: boolean; } export interface UrlLibRequestFn { (url: string | url.Url, options: UrlLibOptions, callback: UrlLibCallback): void; (url: string | url.Url, callback: UrlLibCallback): void; (url: string | url.Url, options?: UrlLibOptions): Promise; } export interface UrlLib { request: UrlLibRequestFn; }