123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.ProjectManagement = void 0;
- const error_1 = require("../utils/error");
- const utils = require("../utils/index");
- const validator = require("../utils/validator");
- const android_app_1 = require("./android-app");
- const ios_app_1 = require("./ios-app");
- const project_management_api_request_internal_1 = require("./project-management-api-request-internal");
- const app_metadata_1 = require("./app-metadata");
- class ProjectManagement {
-
- constructor(app) {
- this.app = app;
- if (!validator.isNonNullObject(app) || !('options' in app)) {
- throw new error_1.FirebaseProjectManagementError('invalid-argument', 'First argument passed to admin.projectManagement() must be a valid Firebase app '
- + 'instance.');
- }
- this.requestHandler = new project_management_api_request_internal_1.ProjectManagementRequestHandler(app);
- }
-
- listAndroidApps() {
- return this.listPlatformApps('android', 'listAndroidApps()');
- }
-
- listIosApps() {
- return this.listPlatformApps('ios', 'listIosApps()');
- }
-
- androidApp(appId) {
- return new android_app_1.AndroidApp(appId, this.requestHandler);
- }
-
- iosApp(appId) {
- return new ios_app_1.IosApp(appId, this.requestHandler);
- }
-
- shaCertificate(shaHash) {
- return new android_app_1.ShaCertificate(shaHash);
- }
-
- createAndroidApp(packageName, displayName) {
- return this.getResourceName()
- .then((resourceName) => {
- return this.requestHandler.createAndroidApp(resourceName, packageName, displayName);
- })
- .then((responseData) => {
- (0, project_management_api_request_internal_1.assertServerResponse)(validator.isNonNullObject(responseData), responseData, 'createAndroidApp()\'s responseData must be a non-null object.');
- (0, project_management_api_request_internal_1.assertServerResponse)(validator.isNonEmptyString(responseData.appId), responseData, '"responseData.appId" field must be present in createAndroidApp()\'s response data.');
- return new android_app_1.AndroidApp(responseData.appId, this.requestHandler);
- });
- }
-
- createIosApp(bundleId, displayName) {
- return this.getResourceName()
- .then((resourceName) => {
- return this.requestHandler.createIosApp(resourceName, bundleId, displayName);
- })
- .then((responseData) => {
- (0, project_management_api_request_internal_1.assertServerResponse)(validator.isNonNullObject(responseData), responseData, 'createIosApp()\'s responseData must be a non-null object.');
- (0, project_management_api_request_internal_1.assertServerResponse)(validator.isNonEmptyString(responseData.appId), responseData, '"responseData.appId" field must be present in createIosApp()\'s response data.');
- return new ios_app_1.IosApp(responseData.appId, this.requestHandler);
- });
- }
-
- listAppMetadata() {
- return this.getResourceName()
- .then((resourceName) => {
- return this.requestHandler.listAppMetadata(resourceName);
- })
- .then((responseData) => {
- return this.getProjectId()
- .then((projectId) => {
- return this.transformResponseToAppMetadata(responseData, projectId);
- });
- });
- }
-
- setDisplayName(newDisplayName) {
- return this.getResourceName()
- .then((resourceName) => {
- return this.requestHandler.setDisplayName(resourceName, newDisplayName);
- });
- }
- transformResponseToAppMetadata(responseData, projectId) {
- this.assertListAppsResponseData(responseData, 'listAppMetadata()');
- if (!responseData.apps) {
- return [];
- }
- return responseData.apps.map((appJson) => {
- (0, project_management_api_request_internal_1.assertServerResponse)(validator.isNonEmptyString(appJson.appId), responseData, '"apps[].appId" field must be present in the listAppMetadata() response data.');
- (0, project_management_api_request_internal_1.assertServerResponse)(validator.isNonEmptyString(appJson.platform), responseData, '"apps[].platform" field must be present in the listAppMetadata() response data.');
- const metadata = {
- appId: appJson.appId,
- platform: app_metadata_1.AppPlatform[appJson.platform] || app_metadata_1.AppPlatform.PLATFORM_UNKNOWN,
- projectId,
- resourceName: appJson.name,
- };
- if (appJson.displayName) {
- metadata.displayName = appJson.displayName;
- }
- return metadata;
- });
- }
- getResourceName() {
- return this.getProjectId()
- .then((projectId) => {
- return `projects/${projectId}`;
- });
- }
- getProjectId() {
- if (this.projectId) {
- return Promise.resolve(this.projectId);
- }
- return utils.findProjectId(this.app)
- .then((projectId) => {
-
- if (!validator.isNonEmptyString(projectId)) {
- throw new error_1.FirebaseProjectManagementError('invalid-project-id', 'Failed to determine project ID. Initialize the SDK with service account credentials, or '
- + 'set project ID as an app option. Alternatively, set the GOOGLE_CLOUD_PROJECT '
- + 'environment variable.');
- }
- this.projectId = projectId;
- return this.projectId;
- });
- }
-
- listPlatformApps(platform, callerName) {
- return this.getResourceName()
- .then((resourceName) => {
- return (platform === 'android') ?
- this.requestHandler.listAndroidApps(resourceName)
- : this.requestHandler.listIosApps(resourceName);
- })
- .then((responseData) => {
- this.assertListAppsResponseData(responseData, callerName);
- if (!responseData.apps) {
- return [];
- }
- return responseData.apps.map((appJson) => {
- (0, project_management_api_request_internal_1.assertServerResponse)(validator.isNonEmptyString(appJson.appId), responseData, `"apps[].appId" field must be present in the ${callerName} response data.`);
- if (platform === 'android') {
- return new android_app_1.AndroidApp(appJson.appId, this.requestHandler);
- }
- else {
- return new ios_app_1.IosApp(appJson.appId, this.requestHandler);
- }
- });
- });
- }
- assertListAppsResponseData(responseData, callerName) {
- (0, project_management_api_request_internal_1.assertServerResponse)(validator.isNonNullObject(responseData), responseData, `${callerName}'s responseData must be a non-null object.`);
- if (responseData.apps) {
- (0, project_management_api_request_internal_1.assertServerResponse)(validator.isArray(responseData.apps), responseData, `"apps" field must be present in the ${callerName} response data.`);
- }
- }
- }
- exports.ProjectManagement = ProjectManagement;
|