///
///
///
///
import { ClientRequest, IncomingMessage, OutgoingHttpHeaders } from "http";
import { RequestOptions } from "https";
import { UrlObject } from "url";
/**
* 发送一个 HTTP/HTTPS 请求
* @param url 要请求的地址
* @param options 附加选项
* @returns 返回本次请求对象,可以调用 `.abort()` 终止请求
*/
export declare function request(url: string | UrlObject | URL, options?: HTTPClientRequestOptions): HTTPClientRequest;
/** 表示 HTTP 客户端请求的附加选项 */
export interface HTTPClientRequestOptions extends Omit {
/**
* 请求的 HTTP 方法(全大写)
* @default "GET"
*/
method?: string;
/** 附加的 HTTP 请求头 */
headers?: OutgoingHttpHeaders;
/**
* 请求的代理字符串
* @default "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.0.0 Safari/537.36"
*/
userAgent?: string | null;
/**
* 请求内容的类型
* - "json": 请求头的 Content-Type 会被设置为 "application/json";请求的数据将按 JSON 格式化
* - "form": 请求头的 Content-Type 会被设置为 "application/x-www-form-urlencoded";请求的数据将按表单格式化
* - "multipart": 请求头的 Content-Type 会被设置为 "multipart/form-data";请求的数据将按含文件的表单格式化
* - "text": 请求头的 Content-Type 会被设置为 "text/plain"
* - 其它: 请求头的 Content-Type 会被设置为 dataType,请求的数据将原样发送
* @default "form"
*/
dataType?: "json" | "form" | "multipart" | "text" | string;
/** 请求的内容,可以是字符串、流或 JSON 对象 */
data?: any;
/**
* 响应服务端的 3XX 重定向的最大次数,如果为 0 则不重定向
* @default 10
*/
maxRedirects?: number;
/** 如果需要保存 Cookie 以便下一次请求提交,可以在两次请求时传入同一个 Cookie 容器对象 */
cookieJar?: CookieJar;
}
/** 表示一个 HTTP 客户端响应 */
export interface HTTPClientRequest extends ClientRequest, PromiseLike {
/** 获取请求的错误 */
error?: Error;
/** 获取服务端的响应 */
response?: HTTPClientResponse;
}
/** 表示一个 HTTP 客户端响应 */
export interface HTTPClientResponse extends IncomingMessage {
/** 获取响应的实际地址 */
urlObject?: UrlObject;
/** 获取响应的二进制数据 */
body?: Buffer;
/** 获取响应的文本数据 */
text?: string;
/** 获取响应的 JSON 数据 */
json?: any;
}
/** 表示一个 Cookie 容器 */
export declare class CookieJar {
/**
* 获取发送指定请求时提交的 Cookie 请求头
* @param url 要发送的地址
*/
getCookiesHeader(url: string | URL | UrlObject): string;
/**
* 从 HTTP 响应的 Set-Cookie 头更新 Cookie
* @param url 当前请求的地址
* @param header 响应的 Set-Cookie 头
* @param now 当前客户端时间
*/
setCookiesFromHeader(url: string | URL | UrlObject, header: string, now?: Date): void;
/** 所有 Cookies,存储所属的域到所属的路径到 Cookie 名到 Cookie 对象的映射关系 */
private readonly _cookies;
/**
* 获取属于某个地址的所有 Cookie
* @param url 所属的地址
* @param now 如果提供了当前时间,则过滤已过期的 Cookie
* @param noHttpOnly 是否过滤不能在客户端脚本获取的 Cookie
* @param noSecure 是否过滤只能在加密协议传输的 Cookie
*/
getCookies(url: string | URL | UrlObject, now?: Date, noHttpOnly?: boolean, noSecure?: boolean): HTTPCookie[];
/**
* 添加指定地址所属的 Cookie
* @param url 所属的地址
* @param cookie 要添加的 Cookie
* @param now 如果提供了当前时间,则删除已过期的 Cookie
*/
setCookie(url: string | URL | UrlObject, cookie: HTTPCookie, now?: Date): void;
/**
* 获取属于某个地址的指定名称的 Cookie 值,如果不存在则返回 `undefined`
* @param url 所属的地址
* @param name 要获取的 Cookie 名
* @param now 如果提供了当前时间,则过滤已过期的 Cookie
* @param noHttpOnly 是否过滤不能在客户端脚本获取的 Cookie
* @param noSecure 是否过滤只能在加密协议传输的 Cookie
*/
getCookie(url: string | URL | UrlObject, name: string, now?: Date, noHttpOnly?: boolean, noSecure?: boolean): string;
}
/** 表示一个 HTTP Cookie */
export interface HTTPCookie {
/** Cookie 的名字(不能包含:`( ) < > @ , ; : \ " / [ ] ? = { }`) */
name: string;
/** Cookie 的值 */
value: string;
/** Cookie 的过期时间 */
expires?: Date;
/** Cookie 所属的域 */
domain?: string;
/** Cookie 所属的路径 */
path?: string;
/** 是否禁止在客户端脚本中获取此 Cookie */
httpOnly?: boolean;
/** 是否只在安全协议下才能传输此 Cookie */
secure?: boolean;
/** Cookie 的同源策略 */
sameSite?: boolean;
}