UNPKG

onesky-fetch

Version:

Fetch and upload translation files from www.oneskyapp.com working in node.js and browser apps.

76 lines (59 loc) 1.84 kB
'use strict'; var _http = require('http'); var _http2 = _interopRequireDefault(_http); var _url = require('url'); var _url2 = _interopRequireDefault(_url); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function get() {} function post() {} // this is a very very basic fetch implementation // to make it work in a node.js environment, without any // dependency on 3rd party packages module.exports = function (urlString, fetchOptions) { var urlObject = _url2.default.parse(urlString); var options = { hostname: urlObject.hostname, port: urlObject.port, path: urlObject.path, agent: false // create a new agent just for this one request }; if (fetchOptions) { if (fetchOptions.headers) { options.headers = fetchOptions.headers; } options.method = fetchOptions.method ? fetchOptions.method : 'GET'; } return new Promise(function (resolve, reject) { var request = _http2.default.request(options, function (response) { if (response.statusCode > 299) { reject(response.statusMessage); return; } var str = ''; response.on('data', function (chunk) { str += chunk; }); response.on('end', function () { var jsObject = null; try { jsObject = JSON.parse(str); } catch (e) { // this is just to make eslint happy jsObject = null; } var json = function json() { return Promise.resolve(jsObject); }; var text = function text() { return Promise.resolve(str); }; var fetchResponse = { json: json, text: text }; resolve(fetchResponse); }); }); if (fetchOptions.body) { request.write(fetchOptions.body); } request.end(); }); };