api.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import config from '../config.js';
  2. // api methods for get, post and put operations
  3. // as well as `getToken`, `createUser` and `endSession`
  4. const api = {
  5. // GET data from API
  6. get: (route, payload) => {
  7. const requestHeaders = new Headers();
  8. let requestString = payload ? '?' : '';
  9. const myInit = {
  10. headers: requestHeaders,
  11. method: 'get'
  12. };
  13. requestString += payload ? Object.keys(payload).map(
  14. key => `${encodeURIComponent(key)}=${encodeURIComponent(payload[key])}`
  15. ).join('&') : '';
  16. requestHeaders.append('Accept', 'application/json');
  17. return fetch(config.api.url + route + requestString, myInit)
  18. .then(response => response.json())
  19. .catch((error) => {
  20. throw error;
  21. });
  22. },
  23. // POST data to API
  24. post: (route, payload, token) => {
  25. const requestHeaders = new Headers();
  26. const myInit = {
  27. headers: requestHeaders,
  28. method: 'post',
  29. body: JSON.stringify(payload)
  30. };
  31. requestHeaders.append('Content-Type', 'application/json');
  32. if (typeof token !== 'undefined') {
  33. requestHeaders.append('Authorization', `Bearer ${token}`);
  34. }
  35. return fetch(config.api.url + route, myInit)
  36. .then(response => response.json())
  37. .catch((error) => {
  38. throw error;
  39. });
  40. },
  41. // PUT data to API
  42. put: (route, payload, token) => {
  43. const requestHeaders = new Headers();
  44. const myInit = {
  45. headers: requestHeaders,
  46. method: 'put',
  47. body: JSON.stringify(payload)
  48. };
  49. requestHeaders.append('Content-Type', 'application/json');
  50. if (typeof token !== 'undefined') {
  51. requestHeaders.append('Authorization', `Bearer ${token}`);
  52. }
  53. return fetch(config.api.url + route, myInit)
  54. .catch((error) => {
  55. console.error(error); // eslint-disable-line
  56. });
  57. },
  58. // request token from API for current user
  59. getToken: () => {
  60. const requestHeaders = new Headers();
  61. const myInit = {
  62. headers: requestHeaders,
  63. method: 'post',
  64. body: `grant_type=password&username=${config.api.user}&password=${config.api.pwd}`
  65. };
  66. requestHeaders.append('Content-Type', 'application/x-www-form-urlencoded');
  67. return fetch('https://www.adaptivetoolbox.net/risikoatlas/token', myInit)
  68. .then(response => response.json())
  69. .then(json => json.access_token)
  70. .catch((error) => {
  71. throw error;
  72. });
  73. }
  74. };
  75. // create new user
  76. api.createUser = token => api.post('User/Create', {}, token);
  77. // end user session
  78. api.endSession = (userId, token) => api.put(`User/EndSession/${userId}`, {}, token);
  79. export default api;