You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.3 KiB
57 lines
2.3 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.getProjectAdminSdkConfigOrCached = exports.constructDefaultAdminSdkConfig = void 0;
|
|
const api_1 = require("../api");
|
|
const apiv2 = require("../apiv2");
|
|
const configstore_1 = require("../configstore");
|
|
const error_1 = require("../error");
|
|
const logger_1 = require("../logger");
|
|
const constants_1 = require("./constants");
|
|
const _CONFIGSTORE_KEY = "adminsdkconfig";
|
|
function constructDefaultAdminSdkConfig(projectId) {
|
|
return {
|
|
projectId: projectId,
|
|
databaseURL: process.env.DATABASE_URL || `https://${projectId}.firebaseio.com`,
|
|
storageBucket: process.env.STORAGE_BUCKET_URL || `${projectId}.appspot.com`,
|
|
};
|
|
}
|
|
exports.constructDefaultAdminSdkConfig = constructDefaultAdminSdkConfig;
|
|
async function getProjectAdminSdkConfigOrCached(projectId) {
|
|
if (constants_1.Constants.isDemoProject(projectId)) {
|
|
return constructDefaultAdminSdkConfig(projectId);
|
|
}
|
|
try {
|
|
const config = await getProjectAdminSdkConfig(projectId);
|
|
setCacheAdminSdkConfig(projectId, config);
|
|
return config;
|
|
}
|
|
catch (e) {
|
|
logger_1.logger.debug(`Failed to get Admin SDK config for ${projectId}, falling back to cache`, e);
|
|
return getCachedAdminSdkConfig(projectId);
|
|
}
|
|
}
|
|
exports.getProjectAdminSdkConfigOrCached = getProjectAdminSdkConfigOrCached;
|
|
async function getProjectAdminSdkConfig(projectId) {
|
|
const apiClient = new apiv2.Client({
|
|
auth: true,
|
|
apiVersion: "v1beta1",
|
|
urlPrefix: api_1.firebaseApiOrigin,
|
|
});
|
|
try {
|
|
const res = await apiClient.get(`projects/${projectId}/adminSdkConfig`);
|
|
return res.body;
|
|
}
|
|
catch (err) {
|
|
throw new error_1.FirebaseError(`Failed to get Admin SDK for Firebase project ${projectId}. ` +
|
|
"Please make sure the project exists and your account has permission to access it.", { exit: 2, original: err });
|
|
}
|
|
}
|
|
function setCacheAdminSdkConfig(projectId, config) {
|
|
const allConfigs = configstore_1.configstore.get(_CONFIGSTORE_KEY) || {};
|
|
allConfigs[projectId] = config;
|
|
configstore_1.configstore.set(_CONFIGSTORE_KEY, allConfigs);
|
|
}
|
|
function getCachedAdminSdkConfig(projectId) {
|
|
const allConfigs = configstore_1.configstore.get(_CONFIGSTORE_KEY) || {};
|
|
return allConfigs[projectId];
|
|
}
|