UNPKG

2.78 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.parseProxies = void 0;
9exports.parseProxy = parseProxy;
10
11var _err = _interopRequireDefault(require("@lskjs/err"));
12
13var _set = _interopRequireDefault(require("lodash/set"));
14
15var _createProxy = require("./createProxy");
16
17var setProxyValue = function setProxyValue(proxy, path, value) {
18 return (0, _set["default"])(proxy, path, decodeURIComponent(value));
19};
20
21function 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 // eslint-disable-next-line prefer-const
35 url = new URL(uri);
36 } catch (err) {
37 if (!_throws) return null;
38 throw err; // throw new Err(err, { uri });
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); // if (params.provider) set(proxy, 'tags.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); // proxy.uri = createUri(proxy);
61 // proxy.key = createKey(proxy);
62
63 return json ? (0, _createProxy.createProxy)(proxy).toJSON() : (0, _createProxy.createProxy)(proxy);
64}
65
66var 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
81exports.parseProxies = parseProxies;
82//# sourceMappingURL=parseProxies.js.map
\No newline at end of file