UNPKG

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