Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import superagent from 'superagent';
- import superagentSerializer from 'superagent-serializer';
- import es6Promise from 'es6-promise';
- import superagentPromise from 'superagent-promise';
- import prefix from 'superagent-prefix';
- superagentSerializer(superagent, 'camel');
- const promise = Promise || es6Promise.Promise;
- const agent = superagentPromise(superagent, promise);
- const useHost = host => (request) => {
- if (host) {
- request.use(prefix(host));
- }
- return request;
- };
- /* eslint-disable no-param-reassign */
- const setCsrfToken = token => (request) => {
- if (!token) {
- token = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
- }
- request.set('X-CSRF-Token', token);
- return request;
- };
- class Request {
- constructor(options = { host: '/' }) {
- this.options = options;
- }
- fetch(url, query) {
- return this.method('get', url).type('json').query(query);
- }
- create(url, data) {
- return this.method('post', url).send({ data });
- }
- update(url, data) {
- return this.method('put', url).send({ data });
- }
- delete(url) {
- return this.method('delete', url);
- }
- method(method, url) {
- return agent[method](url)
- .withCredentials()
- .accept('json')
- .use(useHost(this.options.host))
- .use(setCsrfToken());
- }
- }
- /* eslint no-undef: "off" */
- const currentOptions = {
- host: `//api.${document.location.host}`,
- };
- export default new Request(currentOptions);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement