parse
Version:
Parse JavaScript SDK
70 lines • 1.82 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.polyfillFetch = polyfillFetch;
function parseResponse(res) {
var headers = res.header || {};
headers = Object.keys(headers).reduce(function (map, key) {
map[key.toLowerCase()] = headers[key];
return map;
}, {});
return {
status: res.statusCode,
json: function json() {
if (typeof res.data === 'object') {
return Promise.resolve(res.data);
}
var json = {};
try {
json = JSON.parse(res.data);
} catch (err) {
console.error(err);
}
return Promise.resolve(json);
},
headers: {
keys: function () {
return Object.keys(headers);
},
get: function (n) {
return headers[n.toLowerCase()];
},
has: function (n) {
return n.toLowerCase() in headers;
},
entries: function () {
var all = [];
for (var key in headers) {
if (headers[key]) {
all.push([key, headers[key]]);
}
}
return all;
}
}
};
}
function polyfillFetch() {
var typedGlobal = global;
if (typeof typedGlobal.fetch !== 'function') {
typedGlobal.fetch = function (url, options) {
var dataType = url.match(/\.(txt|json|html|txt|csv)/) ? 'text' : 'arraybuffer';
return new Promise(function (resolve, reject) {
wx.request({
url: url,
method: options.method || 'GET',
data: options.body,
header: options.headers,
dataType: dataType,
responseType: dataType,
success: function (response) {
return resolve(parseResponse(response));
},
fail: function (error) {
return reject(error);
}
});
});
};
}
}