Commit 3f46bea9 3f46bea98e430f565981d63b145e731f34bd0941 by Jason Funk

Add optional method and data parameters to the base64encode() method

1 parent 87e67426
......@@ -120,13 +120,15 @@
*
* NOTE: we cannot use window.btoa() for some strange reasons here.
*
* @param String url The url to download
* @return string Base64 encoded result
* @param String url The url to download
* @param String method The method to use, optional: default GET
* @param String data The data to send, optional
* @return string Base64 encoded result
*/
base64encode: function(url) {
return this.evaluate(function(url) {
return __utils__.getBase64(url);
}, { url: url });
base64encode: function(url,method,data) {
return this.evaluate(function(url,method,data) {
return __utils__.getBase64(url,method,data);
}, { url: url, method: method, data: data });
},
/**
......
......@@ -224,10 +224,12 @@
* contents.
*
* @param String url The resource url
* @param String method The request method, optional
* @param Object data The request data, optional
* @return String Base64 contents string
*/
this.getBase64 = function(url) {
return this.encode(this.getBinary(url));
this.getBase64 = function(url,method,data) {
return this.encode(this.getBinary(url,method,data));
};
/**
......@@ -235,14 +237,43 @@
* fails but log errors.
*
* @param String url
* @param String method
* @param Object data
* @return string
*/
this.getBinary = function(url) {
this.getBinary = function(url, method, data) {
try {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
if(method === undefined || ["GET","get","POST","post"].indexOf(method) == -1)
{
method = "GET";
}else{
method = method.toUpperCase();
}
xhr.open(method, url, false);
this.log("Using HTTP method: '" + method + "'", "debug");
xhr.overrideMimeType("text/plain; charset=x-user-defined");
xhr.send(null);
if(method == "POST")
{
if(data === undefined)
{
data_str = "";
}else{
data_str = "";
for(k in data)
{
if(typeof(k) == "string" && typeof(data[k]) == "string")
{
data_str += "&" + escape(k) + "=" + escape(data[k]);
}
}
data_str = data_str.substring(1);
}
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
}
this.log("Using request data: '" + data_str + "'", "debug");
xhr.send(method == "POST" ? data_str : null);
return xhr.responseText;
} catch (e) {
if (e.name === "NETWORK_ERR" && e.code === 101) {
......@@ -358,4 +389,4 @@
return out;
};
};
})(phantom);
\ No newline at end of file
})(phantom);
......