kibana-with-account
Version:
kibana-with-account is develop based kibana project
54 lines (44 loc) • 1.25 kB
JavaScript
/* global window, document */
var xhr = require('xhr');
var Qs = require('qs');
var Cookie = require('cookie');
var RedirectActions = require('../actions/Redirect');
module.exports = function jsonFetch(options, callback) {
var cookies = Cookie.parse(document.cookie);
var config = {
url: options.url,
method: options.method,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
};
if (cookies.crumb) {
config.headers['X-CSRF-Token'] = cookies.crumb;
}
config.headers['kbn-version'] = 'account-fetch';
if (options.query) {
config.url += '?' + Qs.stringify(options.query);
}
if (options.data) {
config.body = JSON.stringify(options.data);
}
xhr(config, function (err, response, body) {
if (err) {
callback(err);
}
else if (response.statusCode >= 200 && response.statusCode < 300) {
if (response.headers.hasOwnProperty('x-auth-required')) {
RedirectActions.saveReturnUrl();
window.location.href = '/login';
}
else {
callback(null, JSON.parse(body));
}
}
else {
var httpErr = new Error(response.rawRequest.statusText);
callback(httpErr, JSON.parse(body));
}
});
};