--- a/client/src/api/APIClient.js Tue Jul 25 19:11:26 2017 +0200
+++ b/client/src/api/APIClient.js Fri Jul 28 19:40:35 2017 +0200
@@ -1,3 +1,5 @@
+import qs from 'qs';
+
class APIClient {
constructor(baseURL) {
this.baseURL = baseURL;
@@ -22,17 +24,28 @@
headers: headers,
};
+ let queryparams = '';
if (data) {
- options.body = JSON.stringify(data);
+ if(method !== 'HEAD' && method !== 'GET' && data) {
+ options.body = JSON.stringify(data);
+ }
+ else {
+ queryparams = "?"+qs.stringify(data);
+ }
}
// TODO : use URL-module to build URL
- return new Request(this.baseURL + uri, options);
+ return new Request(this.baseURL + uri + queryparams, options);
}
getToken = () => {
const state = this.store.getState();
- return state['token'];
+ return state.getIn(['authStatus', 'token']);
+ }
+
+ getClientId = () => {
+ const state = this.store.getState();
+ return state.getIn(['authStatus', 'clientId']);
}
hasToken = () => {
@@ -41,17 +54,32 @@
return token !== null && token !== '';
}
- createAuthorizedRequest = (method, uri, data) => {
+ hasClientId = () => {
+ const clientId = this.getClientId();
+ return clientId !== null && clientId !== '';
+ }
- var headers = new Headers(),
- token = this.getToken() || '';
+ createAuthorizedHeader = (headers) => {
+ const token = this.getToken() || '';
headers.append("Authorization", "JWT " + token);
+ return headers;
+ }
- return this.createRequest(method, uri, data, headers);
+ createClientIdHeader = (headers) => {
+ const clientId = this.getClientId() || '';
+ headers.append("Auditlog-Client", clientId);
+ return headers;
}
request = (method, uri, data) => {
- var req = this.hasToken() ? this.createAuthorizedRequest(method, uri, data) : this.createRequest(method, uri, data);
+ var headers = new Headers();
+ if(this.hasToken()) {
+ headers = this.createAuthorizedHeader(headers);
+ }
+ if(this.hasClientId()) {
+ headers = this.createClientIdHeader(headers);
+ }
+ var req = this.createRequest(method, uri, data, headers);
return this.fetch(req, { credentials: 'include' });
}
@@ -67,6 +95,10 @@
return this.request('PUT', uri, data);
}
+ delete = (uri, data) => {
+ return this.request('DELETE', uri, data);
+ }
+
fetch = (req) => {
return new Promise((resolve, reject) => {
fetch(req)
@@ -87,7 +119,11 @@
return resJsonPromise.then(data => resolve(data));
} else {
- return response.json().then(data => reject(data));
+ let errorResp = {
+ status: response.status,
+ statusText: response.statusText
+ }
+ return response.json().then(data => reject({...errorResp,data }));
}
})
.catch((error) => {