You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
807 B

  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. let csrfHeader = {};
  12. function 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. export default getState => axios.create({
  20. headers: Object.assign(csrfHeader, getState ? {
  21. 'Authorization': `Bearer ${getState().getIn(['meta', 'access_token'], '')}`,
  22. } : {}),
  23. transformResponse: [function (data) {
  24. try {
  25. return JSON.parse(data);
  26. } catch(Exception) {
  27. return data;
  28. }
  29. }],
  30. });