@ossiana/node-libcurl 1.0.9-alpha-3 → 1.0.9-alpha-5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/libcurl.d.ts +1 -1
- package/dist/requests.d.ts +12 -7
- package/dist/requests.js +73 -9
- package/dist/requests.js.map +1 -1
- package/dist/utils.js +6 -10
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/export.ts +0 -4
- package/src/fetch.ts +0 -68
- package/src/index.ts +0 -1
- package/src/libcurl.ts +0 -334
- package/src/requests.ts +0 -211
- package/src/utils.ts +0 -86
package/dist/libcurl.d.ts
CHANGED
|
@@ -42,7 +42,7 @@ export type LibCurlHeadersAttr = Map<string, string>;
|
|
|
42
42
|
export type LibCurlHeadersInfo = string | {
|
|
43
43
|
[key: string]: [value: string];
|
|
44
44
|
} | LibCurlHeadersAttr;
|
|
45
|
-
export type LibCurlBodyInfo = string | Uint8Array | URLSearchParams |
|
|
45
|
+
export type LibCurlBodyInfo = string | Uint8Array | URLSearchParams | object;
|
|
46
46
|
export type LibCurlMethodInfo = 'GET' | 'POST' | 'HEAD' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH';
|
|
47
47
|
export type LibCurlProxyWithAccountInfo = {
|
|
48
48
|
proxy: string;
|
package/dist/requests.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ interface requestsInitOption {
|
|
|
29
29
|
proxy?: requestsProxyInfo;
|
|
30
30
|
body?: requestsBodyInfo;
|
|
31
31
|
httpVersion?: requestsHttpVersionInfo;
|
|
32
|
+
verbose?: boolean;
|
|
32
33
|
timeout?: number;
|
|
33
34
|
instance?: LibCurl;
|
|
34
35
|
}
|
|
@@ -37,19 +38,22 @@ type requestsParamsInfo = URLSearchParams | string | {
|
|
|
37
38
|
};
|
|
38
39
|
interface requestsOption {
|
|
39
40
|
headers?: requestsHeadersInfo;
|
|
40
|
-
body?: requestsBodyInfo;
|
|
41
41
|
params?: requestsParamsInfo;
|
|
42
|
+
json?: object;
|
|
43
|
+
data?: requestsBodyInfo;
|
|
44
|
+
}
|
|
45
|
+
interface requestsStaticOption extends Omit<requestsInitOption, 'body' | 'instance'>, requestsOption {
|
|
42
46
|
}
|
|
43
47
|
export declare class requests {
|
|
44
48
|
private option;
|
|
45
49
|
constructor(option?: requestsInitOption);
|
|
46
50
|
static session(option?: requestsInitOption): requests;
|
|
47
|
-
static get(url: requestsURLInfo, requestOpt?:
|
|
48
|
-
static post(url: requestsURLInfo, requestOpt?:
|
|
49
|
-
static put(url: requestsURLInfo, requestOpt?:
|
|
50
|
-
static patch(url: requestsURLInfo, requestOpt?:
|
|
51
|
-
static trace(url: requestsURLInfo, requestOpt?:
|
|
52
|
-
static head(url: requestsURLInfo, requestOpt?:
|
|
51
|
+
static get(url: requestsURLInfo, requestOpt?: requestsStaticOption): Promise<requestsResponse>;
|
|
52
|
+
static post(url: requestsURLInfo, requestOpt?: requestsStaticOption): Promise<requestsResponse>;
|
|
53
|
+
static put(url: requestsURLInfo, requestOpt?: requestsStaticOption): Promise<requestsResponse>;
|
|
54
|
+
static patch(url: requestsURLInfo, requestOpt?: requestsStaticOption): Promise<requestsResponse>;
|
|
55
|
+
static trace(url: requestsURLInfo, requestOpt?: requestsStaticOption): Promise<requestsResponse>;
|
|
56
|
+
static head(url: requestsURLInfo, requestOpt?: requestsStaticOption): Promise<requestsResponse>;
|
|
53
57
|
get(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse>;
|
|
54
58
|
post(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse>;
|
|
55
59
|
put(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse>;
|
|
@@ -62,5 +66,6 @@ export declare class requests {
|
|
|
62
66
|
getCookiesMap(domain?: string, path?: string): LibCurlCookiesAttr;
|
|
63
67
|
deleteCookie(key: string, domain: string, path?: string): void;
|
|
64
68
|
private sendRequest;
|
|
69
|
+
private static sendRequestStaic;
|
|
65
70
|
}
|
|
66
71
|
export {};
|
package/dist/requests.js
CHANGED
|
@@ -44,7 +44,7 @@ class requests {
|
|
|
44
44
|
constructor(option = {}) {
|
|
45
45
|
var _a;
|
|
46
46
|
this.option = Object.assign({}, option);
|
|
47
|
-
const { cookies, timeout } = option;
|
|
47
|
+
const { cookies, timeout, verbose } = option;
|
|
48
48
|
const curl = (_a = this.option).instance || (_a.instance = new libcurl_1.LibCurl());
|
|
49
49
|
if (cookies) {
|
|
50
50
|
(0, utils_1.libcurlSetCookies)(curl, cookies, '.');
|
|
@@ -52,38 +52,41 @@ class requests {
|
|
|
52
52
|
if (timeout) {
|
|
53
53
|
curl.setTimeout(timeout, timeout);
|
|
54
54
|
}
|
|
55
|
+
if (verbose) {
|
|
56
|
+
curl.printInnerLogger();
|
|
57
|
+
}
|
|
55
58
|
}
|
|
56
59
|
static session(option = {}) {
|
|
57
60
|
return new requests(option);
|
|
58
61
|
}
|
|
59
62
|
static get(url, requestOpt) {
|
|
60
63
|
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
return requests.
|
|
64
|
+
return requests.sendRequestStaic('GET', url, requestOpt);
|
|
62
65
|
});
|
|
63
66
|
}
|
|
64
67
|
static post(url, requestOpt) {
|
|
65
68
|
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
-
return requests.
|
|
69
|
+
return requests.sendRequestStaic('POST', url, requestOpt);
|
|
67
70
|
});
|
|
68
71
|
}
|
|
69
72
|
static put(url, requestOpt) {
|
|
70
73
|
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
return requests.
|
|
74
|
+
return requests.sendRequestStaic('PUT', url, requestOpt);
|
|
72
75
|
});
|
|
73
76
|
}
|
|
74
77
|
static patch(url, requestOpt) {
|
|
75
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
-
return requests.
|
|
79
|
+
return requests.sendRequestStaic('PATCH', url, requestOpt);
|
|
77
80
|
});
|
|
78
81
|
}
|
|
79
82
|
static trace(url, requestOpt) {
|
|
80
83
|
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
-
return requests.
|
|
84
|
+
return requests.sendRequestStaic('TRACE', url, requestOpt);
|
|
82
85
|
});
|
|
83
86
|
}
|
|
84
87
|
static head(url, requestOpt) {
|
|
85
88
|
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
-
return requests.
|
|
89
|
+
return requests.sendRequestStaic('HEAD', url, requestOpt);
|
|
87
90
|
});
|
|
88
91
|
}
|
|
89
92
|
get(url, requestOpt) {
|
|
@@ -159,7 +162,10 @@ class requests {
|
|
|
159
162
|
sendRequest(method, url, requestOpt) {
|
|
160
163
|
return __awaiter(this, void 0, void 0, function* () {
|
|
161
164
|
const { instance: curl, redirect = false, proxy, httpVersion } = this.option;
|
|
162
|
-
const { headers,
|
|
165
|
+
const { headers, data, json, params } = requestOpt || {};
|
|
166
|
+
if (data && json) {
|
|
167
|
+
throw new libcurl_1.LibCurlError('both data and json exist');
|
|
168
|
+
}
|
|
163
169
|
const url_ = new URL(url);
|
|
164
170
|
if (params) {
|
|
165
171
|
assignURLSearchParam(url_.searchParams, new URLSearchParams(params));
|
|
@@ -177,10 +183,68 @@ class requests {
|
|
|
177
183
|
if (proxy) {
|
|
178
184
|
curl.setProxy(proxy);
|
|
179
185
|
}
|
|
180
|
-
|
|
186
|
+
let hasContentType = false;
|
|
187
|
+
if (data || json) {
|
|
188
|
+
const contentTypeFilter = (e) => e.some(e => e.toLocaleLowerCase() == 'content-type');
|
|
189
|
+
if (typeof headers == 'string') {
|
|
190
|
+
hasContentType = /content-type/i.test(headers);
|
|
191
|
+
}
|
|
192
|
+
else if (headers instanceof Map) {
|
|
193
|
+
hasContentType = contentTypeFilter([...headers.keys()]);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
hasContentType = contentTypeFilter(Object.keys(headers));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (json) {
|
|
200
|
+
if (!hasContentType) {
|
|
201
|
+
curl.setRequestHeader('Content-Type', 'application/json');
|
|
202
|
+
}
|
|
203
|
+
yield curl.send(json);
|
|
204
|
+
}
|
|
205
|
+
else if (data) {
|
|
206
|
+
let sendData = data;
|
|
207
|
+
if (!hasContentType) {
|
|
208
|
+
if (typeof data == 'string') {
|
|
209
|
+
curl.setRequestHeader('Content-Type', 'text/plain');
|
|
210
|
+
}
|
|
211
|
+
else if (data instanceof URLSearchParams) {
|
|
212
|
+
curl.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
|
213
|
+
}
|
|
214
|
+
else if (data instanceof Uint8Array) {
|
|
215
|
+
curl.setRequestHeader('Content-Type', 'application/octet-stream');
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
sendData = Object.keys(data).map((e) => {
|
|
219
|
+
const value = data[e];
|
|
220
|
+
const type = typeof value;
|
|
221
|
+
if (['object', 'boolean', 'number']) {
|
|
222
|
+
return [e, JSON.stringify(value)];
|
|
223
|
+
}
|
|
224
|
+
else if (type == 'undefined') {
|
|
225
|
+
return [e, ''];
|
|
226
|
+
}
|
|
227
|
+
else if (type == 'string') {
|
|
228
|
+
return [e, value];
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
throw new libcurl_1.LibCurlError(`data unkown type ${type}`);
|
|
232
|
+
}
|
|
233
|
+
})
|
|
234
|
+
.map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
|
|
235
|
+
.join('&');
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
yield curl.send(sendData);
|
|
239
|
+
}
|
|
181
240
|
return new requestsResponse(curl);
|
|
182
241
|
});
|
|
183
242
|
}
|
|
243
|
+
static sendRequestStaic(method, url, requestStaticOpt) {
|
|
244
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
245
|
+
return requests.session(requestStaticOpt).sendRequest(method, url, requestStaticOpt);
|
|
246
|
+
});
|
|
247
|
+
}
|
|
184
248
|
}
|
|
185
249
|
exports.requests = requests;
|
|
186
250
|
//# sourceMappingURL=requests.js.map
|
package/dist/requests.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../src/requests.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../src/requests.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.js
CHANGED
|
@@ -36,17 +36,13 @@ const getSubdomains = (domain) => {
|
|
|
36
36
|
return subdomainList;
|
|
37
37
|
};
|
|
38
38
|
const cookieOptFilter = (cookieOpt) => {
|
|
39
|
+
const domainArr = (cookieOpt === null || cookieOpt === void 0 ? void 0 : cookieOpt.domain) && getSubdomains(cookieOpt.domain);
|
|
39
40
|
return (e) => {
|
|
40
|
-
if (
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
if (cookieOpt.path) {
|
|
47
|
-
if (cookieOpt.path != e[2])
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
41
|
+
if (domainArr && !domainArr.find(t => e[0] === t))
|
|
42
|
+
return false;
|
|
43
|
+
if (cookieOpt === null || cookieOpt === void 0 ? void 0 : cookieOpt.path) {
|
|
44
|
+
if (cookieOpt.path != e[2])
|
|
45
|
+
return false;
|
|
50
46
|
}
|
|
51
47
|
return true;
|
|
52
48
|
};
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAEO,MAAM,kBAAkB,GAAkD,CAAC,OAAO,EAAE,EAAE;IACzF,MAAM,wBAAwB,GAAG,CAAC,CAAS,EAAE,EAAE;QAC3C,QAAQ,CAAC,EAAE;YACP,KAAK,MAAM;gBACP,OAAO,IAAI,CAAC;YAChB,KAAK,OAAO;gBACR,OAAO,KAAK,CAAC;YACjB;gBACI,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;SAC1C;IACL,CAAC,CAAA;IAMD,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAClC,IAAI,CAAC,EAAE,EAAE;YACL,SAAS;SACZ;QACD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5E,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;KAC/J;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAA;AAzBY,QAAA,kBAAkB,sBAyB9B;AAED,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,EAAE;IACrC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,aAAa,GAAG,EAAE,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9C,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC1B,aAAa,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;SACrC;KACJ;IACD,OAAO,aAAa,CAAC;AACzB,CAAC,CAAA;AAEM,MAAM,eAAe,GAAG,CAAC,SAAkC,EAAE,EAAE;IAClE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/export.ts
DELETED
package/src/fetch.ts
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { LibCurl, LibCurlBodyInfo, LibCurlMethodInfo, LibCurlHeadersInfo, LibCurlCookiesAttr, LibCurlHttpVersionInfo, LibCurlProxyInfo, LibCurlCookiesInfo } from "./libcurl";
|
|
2
|
-
import { libcurlSetCookies } from "./utils";
|
|
3
|
-
|
|
4
|
-
interface LibCurlRequestInfo {
|
|
5
|
-
method?: LibCurlMethodInfo;
|
|
6
|
-
headers?: LibCurlHeadersInfo;
|
|
7
|
-
body?: LibCurlBodyInfo;
|
|
8
|
-
redirect?: boolean;
|
|
9
|
-
cookies?: LibCurlCookiesInfo;
|
|
10
|
-
httpVersion?: LibCurlHttpVersionInfo;
|
|
11
|
-
openInnerLog?: boolean;
|
|
12
|
-
proxy?: LibCurlProxyInfo;
|
|
13
|
-
/**
|
|
14
|
-
* 传入LibCurl实例可以做持久化连接
|
|
15
|
-
*/
|
|
16
|
-
instance?: LibCurl;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
interface LibCurlResponseInfo {
|
|
20
|
-
status: () => number;
|
|
21
|
-
arraybuffer: () => Promise<ArrayBuffer>;
|
|
22
|
-
text: () => Promise<string>;
|
|
23
|
-
json: () => Promise<object>;
|
|
24
|
-
headers: () => Promise<string>;
|
|
25
|
-
cookies: () => Promise<string>;
|
|
26
|
-
cookiesMap: () => Promise<LibCurlCookiesAttr>;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export async function fetch(url: string | URL, request: LibCurlRequestInfo = {}): Promise<LibCurlResponseInfo> {
|
|
30
|
-
request.instance ||= new LibCurl();
|
|
31
|
-
const curl = request.instance;
|
|
32
|
-
const { method = "GET",
|
|
33
|
-
headers, redirect = false, httpVersion = 0,
|
|
34
|
-
openInnerLog = false, proxy, body, cookies } = request;
|
|
35
|
-
curl.open(method, url + '', true);
|
|
36
|
-
if (headers) {
|
|
37
|
-
curl.setRequestHeaders(headers);
|
|
38
|
-
}
|
|
39
|
-
if (redirect) {
|
|
40
|
-
curl.setRedirect(true);
|
|
41
|
-
}
|
|
42
|
-
if (httpVersion) {
|
|
43
|
-
curl.setHttpVersion(httpVersion);
|
|
44
|
-
}
|
|
45
|
-
if (openInnerLog) {
|
|
46
|
-
curl.printInnerLogger();
|
|
47
|
-
}
|
|
48
|
-
if (cookies) {
|
|
49
|
-
const { hostname } = new URL(url);
|
|
50
|
-
if (cookies) {
|
|
51
|
-
libcurlSetCookies(curl, cookies, hostname);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
if (proxy) {
|
|
55
|
-
curl.setProxy(proxy);
|
|
56
|
-
}
|
|
57
|
-
await curl.send(body);
|
|
58
|
-
return {
|
|
59
|
-
status: () => curl.getResponseStatus(),
|
|
60
|
-
arraybuffer: async () => curl.getResponseBody().buffer,
|
|
61
|
-
text: async () => curl.getResponseString(),
|
|
62
|
-
json: async () => curl.getResponseJson(),
|
|
63
|
-
headers: async () => curl.getResponseHeaders(),
|
|
64
|
-
cookies: async () => curl.getCookies(),
|
|
65
|
-
cookiesMap: async () => curl.getCookiesMap(),
|
|
66
|
-
} as LibCurlResponseInfo;
|
|
67
|
-
|
|
68
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './export'
|
package/src/libcurl.ts
DELETED
|
@@ -1,334 +0,0 @@
|
|
|
1
|
-
import bindings from 'bindings'
|
|
2
|
-
import { httpCookiesToArray, cookieOptFilter } from './utils';
|
|
3
|
-
|
|
4
|
-
const { BaoLibCurl } = bindings('bao_curl_node_addon');
|
|
5
|
-
|
|
6
|
-
export enum LibCurlHttpVersionInfo {
|
|
7
|
-
http1_1,
|
|
8
|
-
http2,
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
//Domain Secure Path CORS TimeStamp Name Value
|
|
12
|
-
export type LibCurlSetCookieOption = {
|
|
13
|
-
domain?: string;
|
|
14
|
-
// secure?: boolean;
|
|
15
|
-
path?: string;
|
|
16
|
-
// cors?: boolean;
|
|
17
|
-
name: string;
|
|
18
|
-
value: string;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export type LibCurlCookiesInfo = string | { [key: string]: string };
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
export type LibCurlGetCookiesOption = {
|
|
25
|
-
domain?: string;
|
|
26
|
-
path?: string;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export type LibCurlGetCookieOption = {
|
|
30
|
-
name: string;
|
|
31
|
-
domain: string;
|
|
32
|
-
path?: string;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export type LibCurlCookieAttrArray = [
|
|
36
|
-
domain: string, secure: boolean, path: string, cors: boolean, timestamp: number, name: string, value: string
|
|
37
|
-
]
|
|
38
|
-
|
|
39
|
-
export type LibCurlCookieAttrObject = {
|
|
40
|
-
domain: string, secure: boolean, path: string, cors: boolean, timestamp: number, value: string
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export type LibCurlCookiesAttr = Map<string, LibCurlCookieAttrObject>
|
|
44
|
-
|
|
45
|
-
export type LibCurlHeadersAttr = Map<string, string>
|
|
46
|
-
|
|
47
|
-
export type LibCurlHeadersInfo = string | { [key: string]: [value: string] } | LibCurlHeadersAttr
|
|
48
|
-
|
|
49
|
-
export type LibCurlBodyInfo = string | Uint8Array | URLSearchParams | any;
|
|
50
|
-
|
|
51
|
-
export type LibCurlMethodInfo = 'GET' | 'POST' | 'HEAD' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH'
|
|
52
|
-
|
|
53
|
-
export type LibCurlProxyWithAccountInfo = {
|
|
54
|
-
proxy: string;
|
|
55
|
-
username: string;
|
|
56
|
-
password: string;
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
export type LibCurlProxyInfo = string | LibCurlProxyWithAccountInfo;
|
|
60
|
-
|
|
61
|
-
export type LibCurlURLInfo = string | URL;
|
|
62
|
-
|
|
63
|
-
export class LibCurlError extends Error {
|
|
64
|
-
constructor(e: string) {
|
|
65
|
-
super(e)
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export class LibCurl {
|
|
70
|
-
private m_libCurl_impl_: any;
|
|
71
|
-
private m_isAsync_: boolean;
|
|
72
|
-
private m_isSending_: boolean;
|
|
73
|
-
constructor() {
|
|
74
|
-
this.m_libCurl_impl_ = new BaoLibCurl();
|
|
75
|
-
}
|
|
76
|
-
private checkSending(): void {
|
|
77
|
-
if (this.m_isSending_) {
|
|
78
|
-
throw new Error('the last request is sending, don\'t send one more request on one instance!')
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
public open(method: LibCurlMethodInfo, url: LibCurlURLInfo, async: boolean = true): void {
|
|
82
|
-
this.checkSending();
|
|
83
|
-
this.m_libCurl_impl_.open(method, url + '');
|
|
84
|
-
this.m_isAsync_ = async;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
public setRequestHeader(key: string, value: string): void {
|
|
88
|
-
this.checkSending();
|
|
89
|
-
this.m_libCurl_impl_.setRequestHeader(key, value);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
*
|
|
94
|
-
* @param headers
|
|
95
|
-
*/
|
|
96
|
-
public setRequestHeaders(headers: LibCurlHeadersInfo): void {
|
|
97
|
-
this.checkSending();
|
|
98
|
-
if (!headers) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
if (headers instanceof Map) {
|
|
102
|
-
headers.forEach((value, key) => this.m_libCurl_impl_.setRequestHeader(key, value))
|
|
103
|
-
} else if (typeof headers == 'string') {
|
|
104
|
-
this.m_libCurl_impl_.setRequestHeaders(headers);
|
|
105
|
-
} else if (typeof headers == 'object') {
|
|
106
|
-
Object.keys(headers).forEach((key) => {
|
|
107
|
-
const value = headers[key];
|
|
108
|
-
this.m_libCurl_impl_.setRequestHeader(key, value);
|
|
109
|
-
})
|
|
110
|
-
} else {
|
|
111
|
-
throw new TypeError('unkown type')
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
*
|
|
117
|
-
* @param proxy host:port sample:127.0.0.1:8888
|
|
118
|
-
* @param username
|
|
119
|
-
* @param password
|
|
120
|
-
*/
|
|
121
|
-
public setProxy(proxyOpt: LibCurlProxyInfo): void {
|
|
122
|
-
this.checkSending();
|
|
123
|
-
if (typeof proxyOpt == 'string') {
|
|
124
|
-
this.m_libCurl_impl_.setProxy(proxyOpt);
|
|
125
|
-
} else {
|
|
126
|
-
this.m_libCurl_impl_.setProxy(proxyOpt.proxy, proxyOpt.username, proxyOpt.password);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
*
|
|
132
|
-
* @param connectTime 连接上远程服务器的最长等待时间
|
|
133
|
-
* @param sendTime 发送最长等待时间
|
|
134
|
-
* sendTime时长包含connectTime 所以sendTime要大于connectTime
|
|
135
|
-
*/
|
|
136
|
-
public setTimeout(connectTime: number, sendTime: number): void {
|
|
137
|
-
this.checkSending();
|
|
138
|
-
if (connectTime > sendTime) {
|
|
139
|
-
throw new Error('连接时间大于发送等待时间.');
|
|
140
|
-
}
|
|
141
|
-
this.m_libCurl_impl_.setTimeout(connectTime, sendTime);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
*
|
|
146
|
-
* @param key
|
|
147
|
-
* @param value
|
|
148
|
-
* @param domain cookie作用域 sample: .baidu.com baike.baidu.com
|
|
149
|
-
*/
|
|
150
|
-
public setCookie(cookieOpt: LibCurlSetCookieOption): void {
|
|
151
|
-
this.checkSending();
|
|
152
|
-
this.m_libCurl_impl_.setCookie(cookieOpt.name, cookieOpt.value, cookieOpt.domain, cookieOpt.path);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
*
|
|
157
|
-
* @param cookieOpt
|
|
158
|
-
* @param domain cookie作用域 sample: .baidu.com baike.baidu.com
|
|
159
|
-
*/
|
|
160
|
-
public deleteCookie(cookieOpt: LibCurlGetCookieOption): void {
|
|
161
|
-
this.checkSending();
|
|
162
|
-
this.m_libCurl_impl_.deleteCookie(cookieOpt.name, cookieOpt.domain, cookieOpt.path || "/");
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* @param {LibCurlGetCookiesOption}cookieOpt
|
|
167
|
-
* @returns 返回所有Cookies sample:'a=b;c=d;'
|
|
168
|
-
*/
|
|
169
|
-
public getCookies(cookieOpt?: LibCurlGetCookiesOption): string {
|
|
170
|
-
this.checkSending();
|
|
171
|
-
const cookies_ = this.m_libCurl_impl_.getCookies();
|
|
172
|
-
return httpCookiesToArray(cookies_).filter(cookieOptFilter(cookieOpt)).map(e => `${e[5]}=${encodeURIComponent(e[6])}`).join(';');
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* @param {LibCurlGetCookiesOption}cookieOpt
|
|
177
|
-
* @returns 返回所有Cookie的Map
|
|
178
|
-
*/
|
|
179
|
-
public getCookiesMap(cookieOpt?: LibCurlGetCookiesOption): LibCurlCookiesAttr {
|
|
180
|
-
this.checkSending();
|
|
181
|
-
const cookies_ = this.m_libCurl_impl_.getCookies();
|
|
182
|
-
return httpCookiesToArray(cookies_).filter(cookieOptFilter(cookieOpt)).reduce((e: LibCurlCookiesAttr, t: LibCurlCookieAttrArray) => {
|
|
183
|
-
e.set(t[5], {
|
|
184
|
-
domain: t[0],
|
|
185
|
-
secure: t[1],
|
|
186
|
-
path: t[2],
|
|
187
|
-
cors: t[3],
|
|
188
|
-
timestamp: t[4],
|
|
189
|
-
value: t[6],
|
|
190
|
-
} as LibCurlCookieAttrObject)
|
|
191
|
-
return e;
|
|
192
|
-
}, new Map<string, LibCurlCookieAttrObject>());
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
*
|
|
197
|
-
* @param cookieOpt
|
|
198
|
-
* @returns 返回该cookieOpt对应的cookieValue
|
|
199
|
-
* sample:
|
|
200
|
-
*/
|
|
201
|
-
public getCookie(cookieOpt: LibCurlGetCookieOption): string {
|
|
202
|
-
this.checkSending();
|
|
203
|
-
return this.m_libCurl_impl_.getCookie(cookieOpt.name, cookieOpt.domain || "", cookieOpt.path || "");
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
*
|
|
208
|
-
* @returns 返回响应头
|
|
209
|
-
*/
|
|
210
|
-
public getResponseHeaders(): string {
|
|
211
|
-
this.checkSending();
|
|
212
|
-
return this.m_libCurl_impl_.getResponseHeaders();
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* @returns 返回响应头 Map
|
|
217
|
-
*/
|
|
218
|
-
public getResponseHeadersMap(): LibCurlHeadersAttr {
|
|
219
|
-
this.checkSending();
|
|
220
|
-
const headers_ = this.m_libCurl_impl_.getResponseHeaders();
|
|
221
|
-
return headers_.split('\r\n')
|
|
222
|
-
.slice(1)//HTTP/1.1 200 OK
|
|
223
|
-
.reduce((e: LibCurlHeadersAttr, t: string) => {
|
|
224
|
-
if (!t) {
|
|
225
|
-
return e;
|
|
226
|
-
}
|
|
227
|
-
const [key, value] = t.split(': ');
|
|
228
|
-
e.set(key, value);
|
|
229
|
-
return e;
|
|
230
|
-
}, new Map<string, string>());
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
*
|
|
235
|
-
* @returns 返回状态码
|
|
236
|
-
* sample: 200 403 404
|
|
237
|
-
*/
|
|
238
|
-
public getResponseStatus(): number {
|
|
239
|
-
this.checkSending();
|
|
240
|
-
return this.m_libCurl_impl_.getResponseStatus();
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* 重置curl 包括之前的所有设定
|
|
245
|
-
*/
|
|
246
|
-
public reset(): void {
|
|
247
|
-
this.checkSending();
|
|
248
|
-
this.m_libCurl_impl_.reset();
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
*
|
|
253
|
-
* @param isAllow 是否允许重定向
|
|
254
|
-
*/
|
|
255
|
-
public setRedirect(isAllow: boolean): void {
|
|
256
|
-
this.checkSending();
|
|
257
|
-
this.m_libCurl_impl_.setRedirect(isAllow);
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* 打印libcurl内部的 解析信息、连接信息、tls信息等等
|
|
262
|
-
*/
|
|
263
|
-
public printInnerLogger(): void {
|
|
264
|
-
this.checkSending();
|
|
265
|
-
this.m_libCurl_impl_.printInnerLogger();
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
*
|
|
270
|
-
* @param version
|
|
271
|
-
* 设置http版本号
|
|
272
|
-
*/
|
|
273
|
-
public setHttpVersion(version: LibCurlHttpVersionInfo): void {
|
|
274
|
-
this.checkSending();
|
|
275
|
-
this.m_libCurl_impl_.setHttpVersion(version);
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
/**
|
|
279
|
-
*
|
|
280
|
-
* @param body POST PUT PATCH时 发送的body
|
|
281
|
-
* 当body不为string或uint8array时 此函数将用JSON.stringify转换对象
|
|
282
|
-
*/
|
|
283
|
-
public send(body?: LibCurlBodyInfo): Promise<undefined> | undefined {
|
|
284
|
-
this.checkSending();
|
|
285
|
-
this.m_isSending_ = true;
|
|
286
|
-
if (this.m_isAsync_) {
|
|
287
|
-
return new Promise((resolve, reject) => {
|
|
288
|
-
const callback = (curlcode: number, curlcodeError: string) => {
|
|
289
|
-
this.m_isSending_ = false;
|
|
290
|
-
if (curlcode != 0) {
|
|
291
|
-
reject(new LibCurlError(curlcodeError));
|
|
292
|
-
} else {
|
|
293
|
-
resolve(void 0);
|
|
294
|
-
}
|
|
295
|
-
};
|
|
296
|
-
if (body) {
|
|
297
|
-
if (body instanceof URLSearchParams) {
|
|
298
|
-
this.m_libCurl_impl_.sendAsync(body + '', callback);
|
|
299
|
-
} else {
|
|
300
|
-
this.m_libCurl_impl_.sendAsync(body, callback);
|
|
301
|
-
}
|
|
302
|
-
} else {
|
|
303
|
-
this.m_libCurl_impl_.sendAsync(callback);
|
|
304
|
-
}
|
|
305
|
-
})
|
|
306
|
-
}
|
|
307
|
-
if (body) {
|
|
308
|
-
if (body instanceof URLSearchParams) {
|
|
309
|
-
this.m_libCurl_impl_.send(body + '');
|
|
310
|
-
} else {
|
|
311
|
-
this.m_libCurl_impl_.send(body);
|
|
312
|
-
}
|
|
313
|
-
} else {
|
|
314
|
-
this.m_libCurl_impl_.send();
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
public getResponseBody(): Uint8Array {
|
|
319
|
-
this.checkSending();
|
|
320
|
-
return this.m_libCurl_impl_.getResponseBody();
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
public getResponseString(): string {
|
|
324
|
-
this.checkSending();
|
|
325
|
-
return this.m_libCurl_impl_.getResponseString();
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
public getResponseJson(): Object {
|
|
329
|
-
this.checkSending();
|
|
330
|
-
return JSON.parse(this.getResponseString());
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
}
|
package/src/requests.ts
DELETED
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import { LibCurl, LibCurlBodyInfo, LibCurlCookiesAttr, LibCurlCookiesInfo, LibCurlHeadersAttr, LibCurlHeadersInfo, LibCurlMethodInfo, LibCurlProxyInfo, LibCurlHttpVersionInfo, LibCurlURLInfo } from "./libcurl"
|
|
2
|
-
import { libcurlSetCookies } from "./utils";
|
|
3
|
-
|
|
4
|
-
type requestsHttpVersionInfo = LibCurlHttpVersionInfo;
|
|
5
|
-
type requestsHeadersInfo = LibCurlHeadersInfo;
|
|
6
|
-
type requestsBodyInfo = LibCurlBodyInfo;
|
|
7
|
-
type requestsCookiesInfo = LibCurlCookiesInfo;
|
|
8
|
-
type requestsMethodInfo = LibCurlMethodInfo;
|
|
9
|
-
|
|
10
|
-
type requestsProxyInfo = LibCurlProxyInfo;
|
|
11
|
-
type requestsURLInfo = LibCurlURLInfo
|
|
12
|
-
|
|
13
|
-
interface requestsResponseImp {
|
|
14
|
-
readonly text: string;
|
|
15
|
-
readonly json: object;
|
|
16
|
-
readonly buffer: Uint8Array;
|
|
17
|
-
readonly headers: string;
|
|
18
|
-
readonly headersMap: LibCurlHeadersAttr;
|
|
19
|
-
readonly status: number;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
class requestsResponse implements requestsResponseImp {
|
|
23
|
-
private curl: LibCurl;
|
|
24
|
-
constructor(curl: LibCurl) {
|
|
25
|
-
this.curl = curl;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
public get text(): string {
|
|
29
|
-
return this.curl.getResponseString();
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
public get json(): object {
|
|
33
|
-
return this.curl.getResponseJson();
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public get buffer(): Uint8Array {
|
|
37
|
-
return this.curl.getResponseBody();
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
public get headers(): string {
|
|
41
|
-
return this.curl.getResponseHeaders();
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
public get headersMap(): LibCurlHeadersAttr {
|
|
45
|
-
return this.curl.getResponseHeadersMap();
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
public get status(): number {
|
|
49
|
-
return this.curl.getResponseStatus();
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
interface requestsInitOption {
|
|
56
|
-
redirect?: boolean;
|
|
57
|
-
cookies?: requestsCookiesInfo;
|
|
58
|
-
proxy?: requestsProxyInfo;
|
|
59
|
-
body?: requestsBodyInfo;
|
|
60
|
-
httpVersion?: requestsHttpVersionInfo;
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* 单位(秒)
|
|
64
|
-
*/
|
|
65
|
-
timeout?: number;
|
|
66
|
-
/**
|
|
67
|
-
* 传入LibCurl实例可以做持久化连接
|
|
68
|
-
*/
|
|
69
|
-
instance?: LibCurl;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
type requestsParamsInfo = URLSearchParams | string | { [key: string]: string };
|
|
73
|
-
|
|
74
|
-
interface requestsOption {
|
|
75
|
-
headers?: requestsHeadersInfo;
|
|
76
|
-
body?: requestsBodyInfo;
|
|
77
|
-
params?: requestsParamsInfo;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const assignURLSearchParam = (target: URLSearchParams, source: URLSearchParams) => {
|
|
81
|
-
source.forEach((value, key) => {
|
|
82
|
-
target.append(key, value);
|
|
83
|
-
})
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export class requests {
|
|
87
|
-
private option: requestsInitOption;
|
|
88
|
-
constructor(option: requestsInitOption = {}) {
|
|
89
|
-
this.option = { ...option };
|
|
90
|
-
const { cookies, timeout } = option;
|
|
91
|
-
const curl = this.option.instance ||= new LibCurl();
|
|
92
|
-
|
|
93
|
-
if (cookies) {
|
|
94
|
-
libcurlSetCookies(curl, cookies, '.');
|
|
95
|
-
}
|
|
96
|
-
if (timeout) {
|
|
97
|
-
curl.setTimeout(timeout, timeout);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
static session(option: requestsInitOption = {}): requests {
|
|
102
|
-
return new requests(option);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
//暂定6种常用方法
|
|
107
|
-
static async get(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse> {
|
|
108
|
-
return requests.session().sendRequest('GET', url, requestOpt);
|
|
109
|
-
}
|
|
110
|
-
static async post(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse> {
|
|
111
|
-
return requests.session().sendRequest('POST', url, requestOpt);
|
|
112
|
-
}
|
|
113
|
-
static async put(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse> {
|
|
114
|
-
return requests.session().sendRequest('PUT', url, requestOpt);
|
|
115
|
-
}
|
|
116
|
-
static async patch(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse> {
|
|
117
|
-
return requests.session().sendRequest('PATCH', url, requestOpt);
|
|
118
|
-
}
|
|
119
|
-
static async trace(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse> {
|
|
120
|
-
return requests.session().sendRequest('TRACE', url, requestOpt);
|
|
121
|
-
}
|
|
122
|
-
static async head(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse> {
|
|
123
|
-
return requests.session().sendRequest('HEAD', url, requestOpt);
|
|
124
|
-
}
|
|
125
|
-
async get(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse> {
|
|
126
|
-
return this.sendRequest('GET', url, requestOpt);
|
|
127
|
-
}
|
|
128
|
-
async post(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse> {
|
|
129
|
-
return this.sendRequest('POST', url, requestOpt);
|
|
130
|
-
}
|
|
131
|
-
async put(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse> {
|
|
132
|
-
return this.sendRequest('PUT', url, requestOpt);
|
|
133
|
-
}
|
|
134
|
-
async patch(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse> {
|
|
135
|
-
return this.sendRequest('PATCH', url, requestOpt);
|
|
136
|
-
}
|
|
137
|
-
async trace(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse> {
|
|
138
|
-
return this.sendRequest('TRACE', url, requestOpt);
|
|
139
|
-
}
|
|
140
|
-
async head(url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse> {
|
|
141
|
-
return this.sendRequest('HEAD', url, requestOpt);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
setCookie(key: string, value: string, domain: string = '', path: string = '') {
|
|
145
|
-
this.option.instance.setCookie({
|
|
146
|
-
name: key,
|
|
147
|
-
value,
|
|
148
|
-
domain,
|
|
149
|
-
path,
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
getCookie(key: string, domain?: string, path?: string): string {
|
|
154
|
-
return this.option.instance.getCookie({
|
|
155
|
-
name: key,
|
|
156
|
-
domain: domain || "",
|
|
157
|
-
path: path || "",
|
|
158
|
-
})
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
getCookies(domain?: string, path?: string): string {
|
|
162
|
-
if (arguments.length == 0) {
|
|
163
|
-
return this.option.instance.getCookies();
|
|
164
|
-
}
|
|
165
|
-
return this.option.instance.getCookies({
|
|
166
|
-
domain: domain || "",
|
|
167
|
-
path: path || "",
|
|
168
|
-
})
|
|
169
|
-
}
|
|
170
|
-
getCookiesMap(domain?: string, path?: string): LibCurlCookiesAttr {
|
|
171
|
-
if (arguments.length == 0) {
|
|
172
|
-
return this.option.instance.getCookiesMap();
|
|
173
|
-
}
|
|
174
|
-
return this.option.instance.getCookiesMap({
|
|
175
|
-
domain: domain || "",
|
|
176
|
-
path: path || "",
|
|
177
|
-
})
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
deleteCookie(key: string, domain: string, path?: string) {
|
|
181
|
-
this.option.instance.deleteCookie({
|
|
182
|
-
name: key,
|
|
183
|
-
domain: domain,
|
|
184
|
-
path: path || "/",
|
|
185
|
-
})
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
private async sendRequest(method: requestsMethodInfo, url: requestsURLInfo, requestOpt?: requestsOption): Promise<requestsResponse> {
|
|
189
|
-
const { instance: curl, redirect = false, proxy, httpVersion } = this.option;
|
|
190
|
-
const { headers, body, params } = requestOpt || {};
|
|
191
|
-
const url_ = new URL(url);
|
|
192
|
-
if (params) {
|
|
193
|
-
assignURLSearchParam(url_.searchParams, new URLSearchParams(params));
|
|
194
|
-
}
|
|
195
|
-
curl.open(method, url_, true);
|
|
196
|
-
if (headers) {
|
|
197
|
-
curl.setRequestHeaders(headers);
|
|
198
|
-
}
|
|
199
|
-
if (redirect) {
|
|
200
|
-
curl.setRedirect(true);
|
|
201
|
-
}
|
|
202
|
-
if (httpVersion) {
|
|
203
|
-
curl.setHttpVersion(httpVersion);
|
|
204
|
-
}
|
|
205
|
-
if (proxy) {
|
|
206
|
-
curl.setProxy(proxy);
|
|
207
|
-
}
|
|
208
|
-
await curl.send(body);
|
|
209
|
-
return new requestsResponse(curl);
|
|
210
|
-
}
|
|
211
|
-
}
|
package/src/utils.ts
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { LibCurl, LibCurlCookieAttrArray, LibCurlCookiesInfo, LibCurlGetCookiesOption } from "./libcurl";
|
|
2
|
-
|
|
3
|
-
export const httpCookiesToArray: (cookies: string) => LibCurlCookieAttrArray[] = (cookies) => {
|
|
4
|
-
const stringBooleanToJsBoolean = (e: string) => {
|
|
5
|
-
switch (e) {
|
|
6
|
-
case 'TRUE':
|
|
7
|
-
return true;
|
|
8
|
-
case 'FALSE':
|
|
9
|
-
return false;
|
|
10
|
-
default:
|
|
11
|
-
throw new Error(`unkonw type ${e}`)
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
/*
|
|
15
|
-
* Domain Secure Path CORS TimeStamp Name Value
|
|
16
|
-
* sample: .127.0.0.1 TRUE / FALSE 3000000000 a b
|
|
17
|
-
* .127.0.0.1 TRUE /api FALSE 3000000000 c d
|
|
18
|
-
*/
|
|
19
|
-
const cookies_ = [];
|
|
20
|
-
for (const it of cookies.split('\n')) {
|
|
21
|
-
if (!it) {
|
|
22
|
-
continue;
|
|
23
|
-
}
|
|
24
|
-
const [domain, secure, path, cors, timestamp, name, value] = it.split('\t');
|
|
25
|
-
cookies_.push([domain.replace(/#HttpOnly_/i, ''), stringBooleanToJsBoolean(secure), path, stringBooleanToJsBoolean(cors), parseInt(timestamp), name, value])
|
|
26
|
-
}
|
|
27
|
-
return cookies_;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const getSubdomains = (domain: string) => {
|
|
31
|
-
const subdomains = domain.split('.');
|
|
32
|
-
const subdomainList = [];
|
|
33
|
-
|
|
34
|
-
for (let i = 0; i < subdomains.length - 1; i++) {
|
|
35
|
-
const domain_ = subdomains.slice(i).join('.');
|
|
36
|
-
subdomainList.push(domain_);
|
|
37
|
-
if (!domain_.startsWith('.')) {
|
|
38
|
-
subdomainList.push(`.${domain_}`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return subdomainList;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export const cookieOptFilter = (cookieOpt: LibCurlGetCookiesOption) => {
|
|
45
|
-
return (e: LibCurlCookieAttrArray) => {
|
|
46
|
-
if (cookieOpt) {
|
|
47
|
-
if (cookieOpt.domain) {
|
|
48
|
-
const domainArr = getSubdomains(cookieOpt.domain);
|
|
49
|
-
if (!domainArr.find(t => e[0]))
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
if (cookieOpt.path) {
|
|
53
|
-
if (cookieOpt.path != e[2])
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
export const libcurlSetCookies = (curl: LibCurl, cookies: LibCurlCookiesInfo, domain: string) => {
|
|
63
|
-
if (typeof cookies == 'string') {
|
|
64
|
-
cookies.replace(/\s+/g, '')
|
|
65
|
-
.split(';')
|
|
66
|
-
.reverse()//保证顺序不颠倒
|
|
67
|
-
.map(e => e.split('=', 2))
|
|
68
|
-
.forEach(([key, value]) => {
|
|
69
|
-
curl.setCookie({
|
|
70
|
-
name: key,
|
|
71
|
-
value,
|
|
72
|
-
domain,
|
|
73
|
-
path: '/',
|
|
74
|
-
})
|
|
75
|
-
});
|
|
76
|
-
} else {
|
|
77
|
-
Object.keys(cookies).forEach(key => {
|
|
78
|
-
curl.setCookie({
|
|
79
|
-
name: key,
|
|
80
|
-
value: cookies[key],
|
|
81
|
-
domain,
|
|
82
|
-
path: '/',
|
|
83
|
-
});
|
|
84
|
-
})
|
|
85
|
-
}
|
|
86
|
-
}
|