diff --git a/src/js/core.js b/src/js/core.js index 82d46ee..3f1d3a6 100644 --- a/src/js/core.js +++ b/src/js/core.js @@ -168,7 +168,12 @@ exports.exit = function(code) {/*{{{*/ exports.empty = function (v) {//{{{ if (!v) { return true; + } else if (casting.is_object(v) && Object.keys(v).length === 0) { + return true; + } else if (casting.is_array(v) && v.length === 0) { + return true; } + return false; }//}}} diff --git a/src/js/curl.js b/src/js/curl.js index acbd492..164ea80 100644 --- a/src/js/curl.js +++ b/src/js/curl.js @@ -23,16 +23,20 @@ function reformatCurlData(curl) {//{{{ pos = url.indexOf("?"); if (pos != -1) { urlParam = url.substring(pos + 1); - param = core.parse_str(urlParam); formatCurl.url = url.substring(0, pos); - if (casting.is_string(curl.param)) { - param2 = core.parse_str(curl.param); - } else if (casting.is_object(curl.param)) { - param2 = curl.param; + if (typeof(curl.param) === "undefined" || core.empty(curl.param)) { + formatCurl.param = urlParam; + } else { + param = core.parse_str(urlParam); + if (casting.is_string(curl.param)) { + param2 = core.parse_str(curl.param); + } else if (casting.is_object(curl.param)) { + param2 = curl.param; + } + formatCurl.param = phplikeArray.array_merge(param, param2); } - formatCurl.param = phplikeArray.array_merge(param, param2); } return formatCurl; diff --git a/tests/core.js b/tests/core.js index f1b6f4f..e7bed03 100644 --- a/tests/core.js +++ b/tests/core.js @@ -36,6 +36,16 @@ describe('Test function: empty', function() {//{{{ assert.equal(false, is); }); + it('empty object is empty', function() { + var str = {}; + var is = php.empty(str); + assert.equal(true, is); + }); + it('empty array is empty', function() { + var str = []; + var is = php.empty(str); + assert.equal(true, is); + }); });//}}} diff --git a/tests/curl.js b/tests/curl.js index 5121f72..25dbb13 100644 --- a/tests/curl.js +++ b/tests/curl.js @@ -197,6 +197,18 @@ describe('Test method: reformatCurlData', function() {//{{{ }); + it('Keep parameter "%26" for oauth', function() { + var c = phplikeMod.curl_init(); + var url = "http://www.google.com.tw/?a=b&a1=cc%26"; + c.url = url; + var res = phplikeMod.reformatCurlData(c); + assert.equal("http://www.google.com.tw/", res['url']); + assert.equal("a=b&a1=cc%26", res['param']); + + + + }); + });//}}} describe('Test method: responseHeaderToHash', function() {