UNPKG

ogp-parser

Version:

This Package is Open Graph Parser.

75 lines 2.9 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.request = void 0; var https_1 = __importDefault(require("https")); var REDIRECT_LOOP_LIMIT = 20; var httpRequest = function (url, options, count) { if (options === void 0) { options = {}; } if (count === void 0) { count = 0; } return new Promise(function (resolve, reject) { if (count > REDIRECT_LOOP_LIMIT) { return reject(new Error('Redirect Loop Error')); } var req = https_1.default.request(url, options, function (res) { var _a; var statusCode = (_a = res.statusCode) !== null && _a !== void 0 ? _a : 0; // Redirect if (statusCode >= 300 && statusCode < 400 && res.headers.location) { var originalUrl = new URL(url); var newUrl = new URL(res.headers.location, originalUrl.origin).toString(); httpRequest(newUrl, options, count + 1) .then(function (res) { return resolve(res); }) .catch(function (err) { return reject(err); }); return; } var data = ''; res.on('data', function (chunk) { data += chunk; }); res.on('end', function () { var _a; var responseData = { status: (_a = res.statusCode) !== null && _a !== void 0 ? _a : 0, headers: res.headers, text: data || undefined, data: undefined, config: __assign(__assign({}, options), { url: url }), }; try { responseData.data = JSON.parse(data); } catch (err) { } resolve(responseData); }); }); req.on('error', function (err) { reject(err); }); req.end(); }); }; exports.request = { get: function (url, options) { if (options === void 0) { options = {}; } return httpRequest(url, __assign(__assign({}, options), { method: 'get' })); }, post: function (url, options) { if (options === void 0) { options = {}; } return httpRequest(url, __assign(__assign({}, options), { method: 'post' })); }, }; //# sourceMappingURL=request.js.map