@mopinion/survey
Version:
Collect customer feedback with the Mopinion survey library
69 lines (68 loc) • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = request;
function request(url, options) {
options = options || {};
var request = new XMLHttpRequest();
var task = new Promise(function (resolve, reject) {
var _keys = [];
var all = [];
var headers = {};
var _response = function response() {
return {
ok: (request.status / 100 | 0) == 2,
statusText: request.statusText,
status: request.status,
url: request.responseURL,
text: function text() {
return Promise.resolve(request.responseText);
},
json: function json() {
return Promise.resolve(request.responseText).then(JSON.parse);
},
blob: function blob() {
return Promise.resolve(new Blob([request.response]));
},
clone: _response,
headers: {
keys: function keys() {
return _keys;
},
entries: function entries() {
return all;
},
get: function get(n) {
return headers[n.toLowerCase()];
},
has: function has(n) {
return n.toLowerCase() in headers;
}
}
};
};
request.open(options.method || 'get', url, true);
request.onload = function () {
request.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm, function (m, key, value) {
_keys.push(key = key.toLowerCase());
all.push([key, value]);
headers[key] = headers[key] ? "".concat(headers[key], ",").concat(value) : value;
});
resolve(_response());
};
request.onerror = reject;
request.withCredentials = options.credentials == 'include';
for (var i in options.headers) {
request.setRequestHeader(i, options.headers[i]);
}
request.send(options.body || null);
});
return {
promise: task,
abort: function abort() {
return request.abort();
}
};
}
//# sourceMappingURL=request.js.map