@heroku/applink
Version:
Applink SDK for Heroku Apps.
37 lines (36 loc) • 1.36 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.HttpRequestUtil = exports.uuidGenerator = exports.HttpResponseError = void 0;
const node_crypto_1 = require("node:crypto");
const package_json_1 = __importDefault(require("../../package.json"));
class HttpResponseError extends Error {
constructor(response) {
super(`HTTP Error Response: ${response.status}: ${response.statusText}`);
this.response = response;
}
}
exports.HttpResponseError = HttpResponseError;
exports.uuidGenerator = {
generate: () => (0, node_crypto_1.randomUUID)(),
};
class HttpRequestUtil {
async request(url, opts, json = true) {
const mergedOpts = {
...opts,
headers: {
"User-Agent": `${package_json_1.default.name}/${package_json_1.default.version}`,
"X-Request-Id": exports.uuidGenerator.generate(),
...(opts?.headers ?? {}),
},
};
const response = await fetch(url, mergedOpts);
if (!response.ok) {
throw new HttpResponseError(response);
}
return json ? response.json() : response;
}
}
exports.HttpRequestUtil = HttpRequestUtil;