GSI - Employe Self Service Mobile
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.
 
 
 
 
 

141 lines
5.9 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AppDistributionClient = exports.UploadReleaseResult = exports.IntegrationState = void 0;
const utils = require("../utils");
const operationPoller = require("../operation-poller");
const error_1 = require("../error");
const apiv2_1 = require("../apiv2");
const api_1 = require("../api");
var IntegrationState;
(function (IntegrationState) {
IntegrationState["AAB_INTEGRATION_STATE_UNSPECIFIED"] = "AAB_INTEGRATION_STATE_UNSPECIFIED";
IntegrationState["INTEGRATED"] = "INTEGRATED";
IntegrationState["PLAY_ACCOUNT_NOT_LINKED"] = "PLAY_ACCOUNT_NOT_LINKED";
IntegrationState["NO_APP_WITH_GIVEN_BUNDLE_ID_IN_PLAY_ACCOUNT"] = "NO_APP_WITH_GIVEN_BUNDLE_ID_IN_PLAY_ACCOUNT";
IntegrationState["APP_NOT_PUBLISHED"] = "APP_NOT_PUBLISHED";
IntegrationState["AAB_STATE_UNAVAILABLE"] = "AAB_STATE_UNAVAILABLE";
IntegrationState["PLAY_IAS_TERMS_NOT_ACCEPTED"] = "PLAY_IAS_TERMS_NOT_ACCEPTED";
})(IntegrationState = exports.IntegrationState || (exports.IntegrationState = {}));
var UploadReleaseResult;
(function (UploadReleaseResult) {
UploadReleaseResult["UPLOAD_RELEASE_RESULT_UNSPECIFIED"] = "UPLOAD_RELEASE_RESULT_UNSPECIFIED";
UploadReleaseResult["RELEASE_CREATED"] = "RELEASE_CREATED";
UploadReleaseResult["RELEASE_UPDATED"] = "RELEASE_UPDATED";
UploadReleaseResult["RELEASE_UNMODIFIED"] = "RELEASE_UNMODIFIED";
})(UploadReleaseResult = exports.UploadReleaseResult || (exports.UploadReleaseResult = {}));
class AppDistributionClient {
constructor() {
this.appDistroV2Client = new apiv2_1.Client({
urlPrefix: api_1.appDistributionOrigin,
apiVersion: "v1",
});
}
async getAabInfo(appName) {
const apiResponse = await this.appDistroV2Client.get(`/${appName}/aabInfo`);
return apiResponse.body;
}
async uploadRelease(appName, distribution) {
const client = new apiv2_1.Client({ urlPrefix: api_1.appDistributionOrigin });
const apiResponse = await client.request({
method: "POST",
path: `/upload/v1/${appName}/releases:upload`,
headers: {
"X-Goog-Upload-File-Name": distribution.getFileName(),
"X-Goog-Upload-Protocol": "raw",
"Content-Type": "application/octet-stream",
},
responseType: "json",
body: distribution.readStream(),
});
return apiResponse.body.name;
}
async pollUploadStatus(operationName) {
return operationPoller.pollOperation({
pollerName: "App Distribution Upload Poller",
apiOrigin: api_1.appDistributionOrigin,
apiVersion: "v1",
operationResourceName: operationName,
masterTimeout: 5 * 60 * 1000,
backoff: 1000,
maxBackoff: 10 * 1000,
});
}
async updateReleaseNotes(releaseName, releaseNotes) {
if (!releaseNotes) {
utils.logWarning("no release notes specified, skipping");
return;
}
utils.logBullet("updating release notes...");
const data = {
name: releaseName,
releaseNotes: {
text: releaseNotes,
},
};
const queryParams = { updateMask: "release_notes.text" };
try {
await this.appDistroV2Client.patch(`/${releaseName}`, data, { queryParams });
}
catch (err) {
throw new error_1.FirebaseError(`failed to update release notes with ${err === null || err === void 0 ? void 0 : err.message}`);
}
utils.logSuccess("added release notes successfully");
}
async distribute(releaseName, testerEmails = [], groupAliases = []) {
var _a, _b, _c;
if (testerEmails.length === 0 && groupAliases.length === 0) {
utils.logWarning("no testers or groups specified, skipping");
return;
}
utils.logBullet("distributing to testers/groups...");
const data = {
testerEmails,
groupAliases,
};
try {
await this.appDistroV2Client.post(`/${releaseName}:distribute`, data);
}
catch (err) {
let errorMessage = err.message;
const errorStatus = (_c = (_b = (_a = err === null || err === void 0 ? void 0 : err.context) === null || _a === void 0 ? void 0 : _a.body) === null || _b === void 0 ? void 0 : _b.error) === null || _c === void 0 ? void 0 : _c.status;
if (errorStatus === "FAILED_PRECONDITION") {
errorMessage = "invalid testers";
}
else if (errorStatus === "INVALID_ARGUMENT") {
errorMessage = "invalid groups";
}
throw new error_1.FirebaseError(`failed to distribute to testers/groups: ${errorMessage}`, {
exit: 1,
});
}
utils.logSuccess("distributed to testers/groups successfully");
}
async addTesters(projectName, emails) {
try {
await this.appDistroV2Client.request({
method: "POST",
path: `${projectName}/testers:batchAdd`,
body: { emails: emails },
});
}
catch (err) {
throw new error_1.FirebaseError(`Failed to add testers ${err}`);
}
utils.logSuccess(`Testers created successfully`);
}
async removeTesters(projectName, emails) {
let apiResponse;
try {
apiResponse = await this.appDistroV2Client.request({
method: "POST",
path: `${projectName}/testers:batchRemove`,
body: { emails: emails },
});
}
catch (err) {
throw new error_1.FirebaseError(`Failed to remove testers ${err}`);
}
return apiResponse.body;
}
}
exports.AppDistributionClient = AppDistributionClient;