import config from '../config.js'; // api methods for get, post and put operations // as well as `getToken`, `createUser` and `endSession` const api = { // GET data from API get: (route, payload) => { const requestHeaders = new Headers(); let requestString = payload ? '?' : ''; const myInit = { headers: requestHeaders, method: 'get' }; requestString += payload ? Object.keys(payload).map( key => `${encodeURIComponent(key)}=${encodeURIComponent(payload[key])}` ).join('&') : ''; requestHeaders.append('Accept', 'application/json'); return fetch(config.api.url + route + requestString, myInit) .then(response => response.json()) .catch((error) => { throw error; }); }, // POST data to API post: (route, payload, token) => { const requestHeaders = new Headers(); const myInit = { headers: requestHeaders, method: 'post', body: JSON.stringify(payload) }; requestHeaders.append('Content-Type', 'application/json'); if (typeof token !== 'undefined') { requestHeaders.append('Authorization', `Bearer ${token}`); } return fetch(config.api.url + route, myInit) .then(response => response.json()) .catch((error) => { throw error; }); }, // PUT data to API put: (route, payload, token) => { const requestHeaders = new Headers(); const myInit = { headers: requestHeaders, method: 'put', body: JSON.stringify(payload) }; requestHeaders.append('Content-Type', 'application/json'); if (typeof token !== 'undefined') { requestHeaders.append('Authorization', `Bearer ${token}`); } return fetch(config.api.url + route, myInit) .catch((error) => { console.error(error); // eslint-disable-line }); }, // request token from API for current user getToken: () => { const requestHeaders = new Headers(); const myInit = { headers: requestHeaders, method: 'post', body: 'grant_type=password&username=jens.becker%40kf-interactive.com&password=P4ssw0rd%21' }; requestHeaders.append('Content-Type', 'application/x-www-form-urlencoded'); return fetch('https://www.adaptivetoolbox.net/risikoatlas/token', myInit) .then(response => response.json()) .then(json => json.access_token) .catch((error) => { throw error; }); } }; // create new user api.createUser = token => api.post('User/Create', {}, token); // end user session api.endSession = (userId, token) => api.put(`User/EndSession/${userId}`, {}, token); export default api;