ogp-parser
Version:
This Package is Open Graph Parser.
75 lines • 2.9 kB
JavaScript
;
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