mirror of
https://github.com/Kong/insomnia
synced 2024-11-08 14:49:53 +00:00
8c0d87168e
* Most things are working * Cookies and lots of improvements * Hoist regex * Appveyor test * Fix appveyor file * Remove yarn * Test deps * Fix * Remove all git deps * fix * Fix * Add cash rm * Fix command * Fix * Production * try * fix * fix? * Done * Remove cache * tweak * Shortcut * Fix * Attempt * try * Try clone depth * Try again * back to shallow_clone * Some debugging * Another try * Try something else * Another * try curl only * Another * fix * Update node-gyp * Try again * Try * Again * Some pruning * Back to the start * Again * try config * Reorder test * Try without cache * Update dep * Try again * remove shallow_clone * don't run tests * Implement CA fetching * Fix * Use CAs * Fix? * test * Remove build dir * Fix dir path? * Try again * Aagain * Try * Change dep * Add comment * Invalidate cache * Remove yarn * Fix cookie expiry * fixed tests * Some modal fixes and unrelated stuff * Debounce autocomplete * Got client certificates working * Fixed binary files * Fixed cookies * Got proxy and debug info working * Got CA certs working * Update appveyor build * Fixed cookie date parsing and overlay z-index * Test updates * Autocomplete to bulk header editor * Small CSS tweak
88 lines
2.2 KiB
JavaScript
88 lines
2.2 KiB
JavaScript
import 'whatwg-fetch';
|
|
import {parse as urlParse} from 'url';
|
|
import {isDevelopment, getClientString} from './constants';
|
|
import * as session from '../sync/session';
|
|
|
|
let commandListeners = [];
|
|
export function onCommand (callback) {
|
|
commandListeners.push(callback);
|
|
}
|
|
|
|
export function offCommand (callback) {
|
|
commandListeners = commandListeners.filter(l => l !== callback);
|
|
}
|
|
|
|
export function post (path, obj) {
|
|
return _fetch('POST', path, obj);
|
|
}
|
|
|
|
export function get (path, sessionId = null) {
|
|
return _fetch('GET', path, null, sessionId);
|
|
}
|
|
|
|
export function del (path, sessionId = null) {
|
|
return _fetch('DELETE', path, null, sessionId);
|
|
}
|
|
|
|
export function put (path, sessionId = null) {
|
|
return _fetch('PUT', path, null, sessionId);
|
|
}
|
|
|
|
export function rawFetch (...args) {
|
|
return window.fetch(...args);
|
|
}
|
|
|
|
async function _fetch (method, path, json, sessionId = null) {
|
|
const config = {
|
|
method: method,
|
|
headers: new window.Headers()
|
|
};
|
|
|
|
// Set some client information
|
|
config.headers.set('X-Insomnia-Client', getClientString());
|
|
|
|
if (json) {
|
|
config.body = JSON.stringify(json, null, 2);
|
|
config.headers.set('Content-Type', 'application/json');
|
|
}
|
|
|
|
sessionId = sessionId || session.getCurrentSessionId();
|
|
if (sessionId) {
|
|
config.headers.set('X-Session-Id', sessionId);
|
|
}
|
|
|
|
const response = await window.fetch(_getUrl(path), config);
|
|
const uri = response.headers.get('x-insomnia-command');
|
|
uri && _notifyCommandListeners(uri);
|
|
|
|
if (!response.ok) {
|
|
const err = new Error(`Response ${response.status} for ${path}`);
|
|
err.message = await response.text();
|
|
err.statusCode = response.status;
|
|
throw err;
|
|
}
|
|
|
|
if (response.headers.get('content-type') === 'application/json') {
|
|
return response.json();
|
|
} else {
|
|
return response.text();
|
|
}
|
|
}
|
|
|
|
function _getUrl (path) {
|
|
if (isDevelopment()) {
|
|
return `http://localhost:8000${path}`;
|
|
} else {
|
|
return `https://api.insomnia.rest${path}`;
|
|
}
|
|
}
|
|
|
|
function _notifyCommandListeners (uri) {
|
|
const parsed = urlParse(uri, true);
|
|
|
|
const command = `${parsed.hostname}${parsed.pathname}`;
|
|
const args = JSON.parse(JSON.stringify(parsed.query));
|
|
|
|
commandListeners.map(fn => fn(command, args));
|
|
}
|