mirror of
https://github.com/gnh1201/welsonjs.git
synced 2025-05-14 05:31:03 +00:00
Update http.js
This commit is contained in:
parent
ccc4b688b8
commit
f3628b9887
81
lib/http.js
81
lib/http.js
|
@ -4,6 +4,7 @@
|
||||||
var FILE = require("lib/file");
|
var FILE = require("lib/file");
|
||||||
var SHELL = require("lib/shell");
|
var SHELL = require("lib/shell");
|
||||||
var RAND = require("lib/rand");
|
var RAND = require("lib/rand");
|
||||||
|
var BASE64 = require("lib/base64");
|
||||||
|
|
||||||
var HTTPObject = function(engine) {
|
var HTTPObject = function(engine) {
|
||||||
this.interface = null;
|
this.interface = null;
|
||||||
|
@ -27,6 +28,12 @@ var HTTPObject = function(engine) {
|
||||||
|
|
||||||
this.cookie = null;
|
this.cookie = null;
|
||||||
this.states = [];
|
this.states = [];
|
||||||
|
this.variables = {
|
||||||
|
"uuidv4": RAND.uuidv4,
|
||||||
|
"base64json": function(v) {
|
||||||
|
return BASE64.encode(JSON.stringify(v));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
this.create = function() {
|
this.create = function() {
|
||||||
if (this.engine == "MSXML") {
|
if (this.engine == "MSXML") {
|
||||||
|
@ -271,11 +278,9 @@ var HTTPObject = function(engine) {
|
||||||
var parameters = {};
|
var parameters = {};
|
||||||
for (var k in this.parameters) {
|
for (var k in this.parameters) {
|
||||||
if (url.indexOf(':' + k) > -1) {
|
if (url.indexOf(':' + k) > -1) {
|
||||||
url = url.replace(':' + k, this.parameters[k]);
|
url = url.replace(':' + k, this.evaluate(this.parameters[k]));
|
||||||
} else if(this.parameters[k] == "{uuidv4}") {
|
|
||||||
parameters[k] = RAND.uuidv4(); // Generate UUID v4
|
|
||||||
} else {
|
} else {
|
||||||
parameters[k] = this.parameters[k];
|
parameters[k] = this.evaluate(this.parameters[k]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -335,7 +340,7 @@ var HTTPObject = function(engine) {
|
||||||
try {
|
try {
|
||||||
if (this.engine == "MSXML") {
|
if (this.engine == "MSXML") {
|
||||||
for (var key in this.headers) {
|
for (var key in this.headers) {
|
||||||
this.interface.setRequestHeader(key, this.headers[key]);
|
this.interface.setRequestHeader(key, this.evaluate(this.headers[key]));
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (this.method) {
|
switch (this.method) {
|
||||||
|
@ -361,17 +366,17 @@ var HTTPObject = function(engine) {
|
||||||
|
|
||||||
if (Object.keys(this.headers).length > 0) {
|
if (Object.keys(this.headers).length > 0) {
|
||||||
for (var key in this.headers) {
|
for (var key in this.headers) {
|
||||||
var value = this.headers[key];
|
var value = this.evaluate(this.headers[key]);
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
cmd.push("-H");
|
cmd.push("-H");
|
||||||
cmd.push(key + ": " + value);
|
cmd.push(key + ": " + value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.cookie != null) {
|
if (this.cookie != null) {
|
||||||
cmd.push("-b");
|
cmd.push("-b");
|
||||||
cmd.push(this.cookie);
|
cmd.push(this.evaluate(this.cookie));
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.push("-A");
|
cmd.push("-A");
|
||||||
|
@ -382,7 +387,7 @@ var HTTPObject = function(engine) {
|
||||||
cmd.push("-d");
|
cmd.push("-d");
|
||||||
cmd.push(this.requestBody);
|
cmd.push(this.requestBody);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add proxy: <[protocol://][user:password@]proxyhost[:port]>
|
// Add proxy: <[protocol://][user:password@]proxyhost[:port]>
|
||||||
if (this.proxy != null && this.proxy.enabled) {
|
if (this.proxy != null && this.proxy.enabled) {
|
||||||
cmd.push("-x");
|
cmd.push("-x");
|
||||||
|
@ -507,6 +512,64 @@ var HTTPObject = function(engine) {
|
||||||
this.popState = function() {
|
this.popState = function() {
|
||||||
return this.states.pop();
|
return this.states.pop();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.setVariable = function(k, v) {
|
||||||
|
this.variables[k] = v;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.setVariables = function(variables) {
|
||||||
|
try {
|
||||||
|
var variables = (typeof(variables) !== "undefined") ? variables : {};
|
||||||
|
for (var k in variables) this.setVariable(k, variables[k]);
|
||||||
|
} catch (e) {
|
||||||
|
console.error("HTTPObject.setVariables() -> ", e.message);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.evaluate = function(str) {
|
||||||
|
var str = String(str);
|
||||||
|
var Lpos = str.indexOf('{');
|
||||||
|
var Rpos = str.indexOf('}', Lpos + 1);
|
||||||
|
var s1 = [], s2 = null, s3, s4;
|
||||||
|
|
||||||
|
console.log("Before evaluated:", str);
|
||||||
|
|
||||||
|
while (Lpos > -1 && Rpos > -1) {
|
||||||
|
s1 = str.substring(Lpos + 1, Rpos).split(' ');
|
||||||
|
|
||||||
|
while (s1.length > 0) {
|
||||||
|
s3 = s1.pop();
|
||||||
|
|
||||||
|
console.log("*", s3);
|
||||||
|
|
||||||
|
if (s3 in this.variables) {
|
||||||
|
switch (typeof(this.variables[s3])) {
|
||||||
|
case "function":
|
||||||
|
s2 = this.variables[s3](s2);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "object":
|
||||||
|
s4 = this.variables[s3];
|
||||||
|
for (var k in s4) s4[k] = this.evaluate(s4[k]);
|
||||||
|
s2 = s4;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
s2 = this.variables[s3];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
str = str.substring(0, Lpos) + s2 + str.substring(Rpos + 1);
|
||||||
|
Lpos = str.indexOf('{');
|
||||||
|
Rpos = str.indexOf('}', Lpos + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("After evaluated:", str);
|
||||||
|
|
||||||
|
return str;
|
||||||
|
};
|
||||||
|
|
||||||
this.create();
|
this.create();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user