snekfetch
Version:
Just do http requests without all that weird nastiness from other libs
41 lines (36 loc) • 1 kB
JavaScript
/* eslint-env browser */
function request(snek) {
snek.options.body = snek.options.data;
const type = snek.options.responseType === 'arraybuffer' ? 'arrayBuffer' : 'text';
return window.fetch(snek.options.url, snek.options)
.then((r) => r[type]().then((raw) => {
const headers = {};
for (const [k, v] of r.headers.entries()) {
headers[k.toLowerCase()] = v;
}
return {
raw,
headers,
statusCode: r.status,
statusText: r.statusText,
};
}));
}
module.exports = {
request,
shouldSendRaw: () => false,
METHODS: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'PATCH'],
Parent: Object,
FormData: window.FormData,
querystring: {
parse: (str) => {
const parsed = {};
for (const [k, v] of new window.URLSearchParams(str).entries()) {
parsed[k] = v;
}
return parsed;
},
stringify: (obj) => new window.URLSearchParams(obj).toString(),
},
};
;