api.js 998 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import axios from 'axios';
  2. import LinkHeader from 'http-link-header';
  3. import ready from './ready';
  4. export const getLinks = response => {
  5. const value = response.headers.link;
  6. if (!value) {
  7. return { refs: [] };
  8. }
  9. return LinkHeader.parse(value);
  10. };
  11. const csrfHeader = {};
  12. const setCSRFHeader = () => {
  13. const csrfToken = document.querySelector('meta[name=csrf-token]');
  14. if (csrfToken) {
  15. csrfHeader['X-CSRF-Token'] = csrfToken.content;
  16. }
  17. };
  18. ready(setCSRFHeader);
  19. const authorizationHeaderFromState = getState => {
  20. const accessToken = getState && getState().getIn(['meta', 'access_token'], '');
  21. if (!accessToken) {
  22. return {};
  23. }
  24. return {
  25. 'Authorization': `Bearer ${accessToken}`,
  26. };
  27. };
  28. export default getState => axios.create({
  29. headers: {
  30. ...csrfHeader,
  31. ...authorizationHeaderFromState(getState),
  32. },
  33. transformResponse: [function (data) {
  34. try {
  35. return JSON.parse(data);
  36. } catch(Exception) {
  37. return data;
  38. }
  39. }],
  40. });