diff -r 34a75bd8d0b9 -r d48946d164c6 client/src/api/APIClient.js --- 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) => {