1234567891011121314151617181920212223242526272829303132333435363738 |
- import { parseStatus, parseJSON, userFeedback, userFeedbackError } from './response';
- import { config } from 'grav-config';
- let raw;
- let request = function(url, options = {}, callback = () => true) {
- if (typeof options === 'function') {
- callback = options;
- options = {};
- }
- if (options.method && options.method === 'post') {
- let data = new FormData();
- options.body = Object.assign({ 'admin-nonce': config.admin_nonce }, options.body || {});
- Object.keys(options.body).map((key) => data.append(key, options.body[key]));
- options.body = data;
- }
- options = Object.assign({
- credentials: 'same-origin',
- headers: {
- 'Accept': 'application/json'
- }
- }, options);
- return fetch(url, options)
- .then((response) => {
- raw = response;
- return response;
- })
- .then(parseStatus)
- .then(parseJSON)
- .then(userFeedback)
- .then((response) => callback(response, raw))
- .catch(userFeedbackError);
- };
- export default request;
|