mirror of
https://github.com/Kong/insomnia.git
synced 2026-10-10 23:42:46 -04:00
* Add Slack badge to README * Add Twitter badge * Appveyor badge * Fix badges again on README * Fix Twitter badge link * Simplify README.md * Migrate Travis secure items to Travis project settings (#198) * Remove docker linux build (using Travis now) (#199) * Fix travis build * Update Issue and PR templates (#200) * Add template for future pull requests * Format issue template like pull request template * Will not clear selected file if dialog is dismissed (#202) * #183, Body type "Text -> Other" reverts to previous body type (#193) * ISSUE#183 * Adding condition to check mime-type to other * Removing older changes for fixing issue. * Save full response to a file (#207) * Save full response to a file * Add a new button on the response preview pane * Save full response to file when button clicked * Update after PR comments * It's a Response, not a Request * Remove file extension requirement * Implement lazy tag rendering and some fixes (#211) * expanding to 3 decimals (#213) * Update PULL_REQUEST_TEMPLATE.md (#214) * Show build info in console (#216) * Add waiting message in dev mode while webpack compile happens * Switch license from GPL to AGPL (#221) * Default remote URLs to production * Don't use Curl's cookie handling (#220) * Some improvements to the response tag * Add tests for XPath response queries * Refactor conditional element syntax * Add option to toggle Menu Bar showing for Windows/Linux (#225) * Add option to toggle MenuBar showing on Windows/Linux * Extract Toggling Menu Bar functionality to App Container. Default show Menu Bar. Remove tip from Response Pane. * Finalize {% response ... %} Tag (#224) * Some improvements to the response tag * Add tests for XPath response queries * Refactor conditional element syntax * Update nunjucks-tags.js * Better Nunjucks Tag Editor (#234) * Helper to tokenize Nunjucks tag * More granular types * Add tag definitions * Improve editor to be more WYSIWYG * Fixed tests * Added raw response tag * A few improvements to tag editor enum * fix NTLM typo (#244) * Tweaks and fixes for next release (#245)
85 lines
2.1 KiB
JavaScript
85 lines
2.1 KiB
JavaScript
import 'whatwg-fetch';
|
|
import {parse as urlParse} from 'url';
|
|
import {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) {
|
|
const baseUrl = process.env.INSOMNIA_SYNC_URL || 'https://api.insomnia.rest';
|
|
return `${baseUrl}${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));
|
|
}
|