@luminati-io/luminati-proxy
Version:
A configurable local proxy for brightdata.com
53 lines (47 loc) • 1.55 kB
JavaScript
// LICENSE_CODE ZON
; /*jslint node:true, browser:true, es6:true*/
(function(){
var define;
var is_node = typeof module=='object' && module.exports;
if (!is_node)
define = self.define;
else
define = require('../../../util/require_node.js').define(module, '../');
define(['/util/url.js', '/util/escape.js'], function(zurl, zescape){
var E = {};
class Urlp {
constructor(opt){
this.update(opt);
}
update(opt){
if (!opt || typeof opt=='string')
opt = {url: opt};
this.url = opt.url||window&&window.location.href;
Object.assign(this, zurl.parse(this.url));
let qs = zurl.qs_parse(this.query||'');
let hs = zurl.qs_parse((this.hash||'').substr(1));
if (!opt.validate)
return void Object.assign(this, {qs, hs});
this.qs = {};
this.hs = {};
for (let p in opt.validate.qs||opt.validate)
this.qs[p] = validate(qs[p], opt.validate[p]);
for (let p in opt.validate.hs||{})
this.hs[p] = validate(hs[p], opt.validate[p]);
}
uri(){
return zescape.uri(this.pathname, this.qs, this.hs);
}
}
E.Urlp = Urlp;
let validate = (param, type)=>{
if (type=='email' && zurl.is_valid_email(param||''))
return param;
if (type=='number' && !isNaN(+param))
return +param;
if (type=='token' && typeof param == 'string' && !param.includes(' '))
return param;
if (type=='bool' && (!param || param == 1))
return !!param;
};
return E; }); }());