12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- const apiv2_1 = require("../apiv2");
- const api_1 = require("../api");
- const proxy_1 = require("./proxy");
- const error_1 = require("../error");
- const logger_1 = require("../logger");
- const projectUtils_1 = require("../projectUtils");
- const cloudRunCache = {};
- const apiClient = new apiv2_1.Client({ urlPrefix: api_1.cloudRunApiOrigin, apiVersion: "v1" });
- async function getCloudRunUrl(rewrite, projectId) {
- var _a;
- const alreadyFetched = cloudRunCache[`${rewrite.run.region}/${rewrite.run.serviceId}`];
- if (alreadyFetched) {
- return Promise.resolve(alreadyFetched);
- }
- const path = `/projects/${projectId}/locations/${rewrite.run.region || "us-central1"}/services/${rewrite.run.serviceId}`;
- try {
- logger_1.logger.info(`[hosting] Looking up Cloud Run service "${path}" for its URL`);
- const res = await apiClient.get(path);
- const url = (_a = res.body.status) === null || _a === void 0 ? void 0 : _a.url;
- if (!url) {
- throw new error_1.FirebaseError("Cloud Run URL doesn't exist in response.");
- }
- cloudRunCache[`${rewrite.run.region}/${rewrite.run.serviceId}`] = url;
- return url;
- }
- catch (err) {
- throw new error_1.FirebaseError(`Error looking up URL for Cloud Run service: ${err}`, {
- original: err,
- });
- }
- }
- function default_1(options) {
- return async (rewrite) => {
- if (!rewrite.run) {
- return (0, proxy_1.errorRequestHandler)('Cloud Run rewrites must have a valid "run" field.');
- }
- if (!rewrite.run.serviceId) {
- return (0, proxy_1.errorRequestHandler)("Cloud Run rewrites must supply a service ID.");
- }
- if (!rewrite.run.region) {
- rewrite.run.region = "us-central1";
- }
- logger_1.logger.info(`[hosting] Cloud Run rewrite ${JSON.stringify(rewrite)} triggered`);
- const textIdentifier = `Cloud Run service "${rewrite.run.serviceId}" for region "${rewrite.run.region}"`;
- return getCloudRunUrl(rewrite, (0, projectUtils_1.needProjectId)(options))
- .then((url) => (0, proxy_1.proxyRequestHandler)(url, textIdentifier))
- .catch(proxy_1.errorRequestHandler);
- };
- }
- exports.default = default_1;
|