2016-12-08 12:27:19 +01:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var Client = {};
|
|
|
|
Client.request = function(resource, args) {
|
|
|
|
args = args || {};
|
2017-01-06 15:58:50 +01:00
|
|
|
args.credentials = 'same-origin'
|
2016-12-08 18:44:49 +01:00
|
|
|
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
|
|
|
|
}
|
|
|
|
}
|
2016-12-08 12:27:19 +01:00
|
|
|
|
2017-01-13 12:47:21 +01:00
|
|
|
return fetch(`/api/${resource}`, args)
|
2018-05-02 14:52:52 +02:00
|
|
|
.then(handleRequestErrors)
|
2017-01-13 12:47:21 +01:00
|
|
|
.then(parseJSON)
|
2018-05-02 14:52:52 +02:00
|
|
|
.then(parseData)
|
2017-01-13 12:47:21 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function parseJSON(r) {
|
|
|
|
return r.json()
|
|
|
|
}
|
|
|
|
|
2018-05-02 14:52:52 +02:00
|
|
|
function handleRequestErrors(r) {
|
|
|
|
if (!r.ok) {
|
|
|
|
throw new Error(r.statusText);
|
|
|
|
}
|
|
|
|
return r;
|
|
|
|
}
|
|
|
|
|
|
|
|
function parseData(d) {
|
2017-01-13 12:47:21 +01:00
|
|
|
if(d.Error) {
|
|
|
|
throw new Error(d.Error)
|
|
|
|
}
|
2016-12-08 12:27:19 +01:00
|
|
|
|
2017-01-13 12:47:21 +01:00
|
|
|
return d.Data
|
2016-12-08 12:27:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
export default Client
|