fathom/assets/js/lib/client.js

48 lines
890 B
JavaScript
Raw Normal View History

'use strict';
var Client = {};
Client.request = function(resource, args) {
args = args || {};
2017-01-06 14:58:50 +00:00
args.credentials = 'same-origin'
args.headers = args.headers || {};
args.headers['Accept'] = 'application/json';
if( args.method && args.method === 'POST') {
args.headers['Content-Type'] = 'application/json';
if(args.data) {
if( typeof(args.data) !== "string") {
args.data = JSON.stringify(args.data)
}
args.body = args.data
delete args.data
}
}
return fetch(`/api/${resource}`, args)
.then(handleRequestErrors)
.then(parseJSON)
.then(parseData)
}
function parseJSON(r) {
return r.json()
}
function handleRequestErrors(r) {
if (!r.ok) {
throw new Error(r.statusText);
}
return r;
}
function parseData(d) {
if(d.Error) {
throw new Error(d.Error)
}
return d.Data
}
export default Client