UNPKG

@heroku/applink

Version:

Applink SDK for Heroku Apps.

37 lines (36 loc) 1.36 kB
"use strict"; 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;