mirror of
https://github.com/silkimen/cordova-plugin-advanced-http.git
synced 2026-04-24 00:00:03 +08:00
Merge branch 'binary_response'
# Conflicts: # test/e2e-specs.js
This commit is contained in:
@@ -62,6 +62,18 @@ const helpers = {
|
||||
}, done);
|
||||
}, done);
|
||||
}, done);
|
||||
},
|
||||
// adopted from: https://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/
|
||||
hashArrayBuffer: function (buffer) {
|
||||
var hash = 0;
|
||||
var byteArray = new Uint8Array(buffer);
|
||||
|
||||
for (var i = 0; i < byteArray.length; i++) {
|
||||
hash = ((hash << 5) - hash) + byteArray[i];
|
||||
hash |= 0; // Convert to 32bit integer
|
||||
}
|
||||
|
||||
return hash;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -682,6 +694,40 @@ const tests = [
|
||||
result.type.should.be.equal('rejected');
|
||||
should.equal(result.data.url, undefined);
|
||||
}
|
||||
},
|
||||
{
|
||||
description: 'should fetch binary correctly when response type is "arraybuffer"',
|
||||
expected: 'resolved: {"hash":-1032603775,"byteLength":35588}',
|
||||
func: function (resolve, reject) {
|
||||
var url = 'https://httpbin.org/image/jpeg';
|
||||
var options = { method: 'get', responseType: 'arraybuffer' };
|
||||
var success = function (response) {
|
||||
resolve({
|
||||
hash: helpers.hashArrayBuffer(response.data),
|
||||
byteLength: response.data.byteLength
|
||||
});
|
||||
};
|
||||
cordova.plugin.http.sendRequest(url, options, success, reject);
|
||||
},
|
||||
validationFunc: function (driver, result) {
|
||||
result.type.should.be.equal('resolved');
|
||||
result.data.hash.should.be.equal(-1032603775);
|
||||
result.data.byteLength.should.be.equal(35588);
|
||||
}
|
||||
},
|
||||
{
|
||||
description: 'should decode error body even if response type is "arraybuffer"',
|
||||
expected: 'rejected: {"status": 418, ...',
|
||||
func: function (resolve, reject) {
|
||||
var url = 'https://httpbin.org/status/418';
|
||||
var options = { method: 'get', responseType: 'arraybuffer' };
|
||||
cordova.plugin.http.sendRequest(url, options, resolve, reject);
|
||||
},
|
||||
validationFunc: function (driver, result) {
|
||||
result.type.should.be.equal('rejected');
|
||||
result.data.status.should.be.equal(418);
|
||||
result.data.error.should.be.equal("\n -=[ teapot ]=-\n\n _...._\n .' _ _ `.\n | .\"` ^ `\". _,\n \\_;`\"---\"`|//\n | ;/\n \\_ _/\n `\"\"\"`\n");
|
||||
}
|
||||
}
|
||||
// @TODO: not ready yet
|
||||
// {
|
||||
|
||||
Reference in New Issue
Block a user