UNPKG

@heroku-cli/command

Version:
56 lines (55 loc) 2.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ParticleboardClient = void 0; const tslib_1 = require("tslib"); const url = tslib_1.__importStar(require("node:url")); const deps_1 = tslib_1.__importDefault(require("./deps")); const request_id_1 = require("./request-id"); const vars_1 = require("./vars"); class ParticleboardClient { constructor(config) { this.config = config; this.config = config; const particleboardUrl = new url.URL(vars_1.vars.particleboardUrl); const self = this; const envParticleboardHeaders = JSON.parse(process.env.HEROKU_PARTICLEBOARD_HEADERS || '{}'); const particleboardOpts = { headers: Object.assign({ accept: 'application/vnd.heroku+json; version=3', 'user-agent': `heroku-cli/${self.config.version} ${self.config.platform}` }, envParticleboardHeaders), host: particleboardUrl.hostname, port: particleboardUrl.port, protocol: particleboardUrl.protocol, }; this.http = class ParticleboardHTTPClient extends deps_1.default.HTTP.HTTP.create(particleboardOpts) { static async request(url, opts = {}) { opts.headers = opts.headers || {}; opts.headers[request_id_1.requestIdHeader] = request_id_1.RequestId.create() && request_id_1.RequestId.headerValue; if (!Object.keys(opts.headers).some(h => h.toLowerCase() === 'authorization')) { opts.headers.authorization = `Bearer ${self.auth}`; } const response = await super.request(url, opts); this.trackRequestIds(response); return response; } static trackRequestIds(response) { const responseRequestIdHeader = response.headers[request_id_1.requestIdHeader] || response.headers[request_id_1.requestIdHeader.toLocaleLowerCase()]; if (responseRequestIdHeader) { const requestIds = Array.isArray(responseRequestIdHeader) ? responseRequestIdHeader : responseRequestIdHeader.split(','); request_id_1.RequestId.track(...requestIds); } } }; } get auth() { return this._auth; } set auth(token) { this._auth = token; } get defaults() { return this.http.defaults; } get(url, options = {}) { return this.http.get(url, options); } } exports.ParticleboardClient = ParticleboardClient;