client/src/api/APIClient.js
changeset 129 d48946d164c6
parent 97 69eaef18b01b
child 134 be36eed5e6e0
--- 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) => {