@logi.one/rest-client
Version:
This is a free, ultra-lightweight and easy to use rest client for node.js supporting JSON requests and streams with no external dependencies.
48 lines (47 loc) • 2.06 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.postJSON = exports.putJSON = exports.deleteJSON = exports.getJSON = void 0;
const fetch_1 = require("./fetch");
function getJSON(url, options) {
return requestJSON('GET', url, options);
}
exports.getJSON = getJSON;
function deleteJSON(url, options) {
return requestJSON('DELETE', url, options);
}
exports.deleteJSON = deleteJSON;
function putJSON(url, options) {
return requestJSON('PUT', url, options);
}
exports.putJSON = putJSON;
function postJSON(url, options) {
return requestJSON('POST', url, options);
}
exports.postJSON = postJSON;
function requestJSON(method, url, options = {}) {
return __awaiter(this, void 0, void 0, function* () {
options.headers = options.headers || {};
options.headers.Accept = 'application/json';
if (options.body) {
options.headers['Content-Type'] = 'application/json';
if (typeof options.body !== 'string') {
options.body = JSON.stringify(options.body);
}
}
const result = yield (0, fetch_1.request)(method, url, options);
const contentType = result.headers.get('content-type');
if (contentType && contentType.startsWith('application/json')) {
return result.json();
}
return result.text();
});
}
;