1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.parseProxies = void 0;
|
9 | exports.parseProxy = parseProxy;
|
10 |
|
11 | var _err = _interopRequireDefault(require("@lskjs/err"));
|
12 |
|
13 | var _set = _interopRequireDefault(require("lodash/set"));
|
14 |
|
15 | var _createProxy = require("./createProxy");
|
16 |
|
17 | var setProxyValue = function setProxyValue(proxy, path, value) {
|
18 | return (0, _set["default"])(proxy, path, decodeURIComponent(value));
|
19 | };
|
20 |
|
21 | function parseProxy(str) {
|
22 | var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
23 | _ref$json = _ref.json,
|
24 | json = _ref$json === void 0 ? false : _ref$json,
|
25 | _ref$throws = _ref["throws"],
|
26 | _throws = _ref$throws === void 0 ? true : _ref$throws;
|
27 |
|
28 | if (typeof str !== 'string') return json ? (0, _createProxy.createProxy)(str).toJSON() : (0, _createProxy.createProxy)(str);
|
29 | var uri = str;
|
30 | if (!uri.includes('://')) uri = "http://".concat(uri);
|
31 | var url;
|
32 |
|
33 | try {
|
34 |
|
35 | url = new URL(uri);
|
36 | } catch (err) {
|
37 | if (!_throws) return null;
|
38 | throw err;
|
39 | }
|
40 |
|
41 | var params = Object.fromEntries(url.searchParams);
|
42 | var type = url.protocol ? url.protocol.substr(0, url.protocol.length - 1) : 'http';
|
43 | var _url = url,
|
44 | user = _url.username,
|
45 | password = _url.password,
|
46 | host = _url.hostname,
|
47 | port = _url.port;
|
48 | var proxy = {
|
49 | type: type,
|
50 | host: host,
|
51 | port: port
|
52 | };
|
53 | if (user) setProxyValue(proxy, 'user', user);
|
54 | if (password) setProxyValue(proxy, 'password', password);
|
55 | if (params.provider) setProxyValue(proxy, 'provider', params.provider);
|
56 |
|
57 | if (params.ip) setProxyValue(proxy, 'ip', params.ip);
|
58 | if (params.country) setProxyValue(proxy, 'tags.country', params.country);
|
59 | if (params.ipv) setProxyValue(proxy, 'tags.ipv', params.ipv);
|
60 | if (params.subtype) setProxyValue(proxy, 'tags.subtype', params.subtype);
|
61 |
|
62 |
|
63 | return json ? (0, _createProxy.createProxy)(proxy).toJSON() : (0, _createProxy.createProxy)(proxy);
|
64 | }
|
65 |
|
66 | var parseProxies = function parseProxies() {
|
67 | var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
68 | if (Array.isArray(str)) return str.map(function (p) {
|
69 | return parseProxy(p, {
|
70 | "throws": false
|
71 | });
|
72 | }).filter(Boolean);
|
73 | if (typeof str !== 'string') return [str];
|
74 | return str.trim().split(/[,\n]/).map(function (p) {
|
75 | return parseProxy(p, {
|
76 | "throws": false
|
77 | });
|
78 | }).filter(Boolean);
|
79 | };
|
80 |
|
81 | exports.parseProxies = parseProxies;
|
82 |
|
\ | No newline at end of file |