Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import superagent from 'superagent';
  2. import superagentSerializer from 'superagent-serializer';
  3.  
  4. import es6Promise from 'es6-promise';
  5. import superagentPromise from 'superagent-promise';
  6. import prefix from 'superagent-prefix';
  7.  
  8. superagentSerializer(superagent, 'camel');
  9.  
  10. const promise = Promise || es6Promise.Promise;
  11. const agent = superagentPromise(superagent, promise);
  12.  
  13. const useHost = host => (request) => {
  14.   if (host) {
  15.     request.use(prefix(host));
  16.   }
  17.  
  18.   return request;
  19. };
  20.  
  21. /* eslint-disable no-param-reassign */
  22. const setCsrfToken = token => (request) => {
  23.   if (!token) {
  24.     token = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
  25.   }
  26.  
  27.   request.set('X-CSRF-Token', token);
  28.   return request;
  29. };
  30.  
  31. class Request {
  32.   constructor(options = { host: '/' }) {
  33.     this.options = options;
  34.   }
  35.  
  36.   fetch(url, query) {
  37.     return this.method('get', url).type('json').query(query);
  38.   }
  39.  
  40.   create(url, data) {
  41.     return this.method('post', url).send({ data });
  42.   }
  43.  
  44.   update(url, data) {
  45.     return this.method('put', url).send({ data });
  46.   }
  47.  
  48.   delete(url) {
  49.     return this.method('delete', url);
  50.   }
  51.  
  52.   method(method, url) {
  53.     return agent[method](url)
  54.       .withCredentials()
  55.       .accept('json')
  56.       .use(useHost(this.options.host))
  57.       .use(setCsrfToken());
  58.   }
  59. }
  60. /* eslint no-undef: "off" */
  61. const currentOptions = {
  62.   host: `//api.${document.location.host}`,
  63. };
  64.  
  65. export default new Request(currentOptions);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement