forked from dienianindya/gsi_ess_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.
53 lines
1.8 KiB
53 lines
1.8 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.EmulatorHubClient = void 0;
|
|
const hub_1 = require("./hub");
|
|
const error_1 = require("../error");
|
|
const apiv2_1 = require("../apiv2");
|
|
class EmulatorHubClient {
|
|
constructor(projectId) {
|
|
this.projectId = projectId;
|
|
this.locator = hub_1.EmulatorHub.readLocatorFile(projectId);
|
|
}
|
|
foundHub() {
|
|
return this.locator !== undefined;
|
|
}
|
|
getStatus() {
|
|
return this.tryOrigins(async (client, origin) => {
|
|
await client.get("/");
|
|
return origin;
|
|
});
|
|
}
|
|
async tryOrigins(task) {
|
|
const origins = this.assertLocator().origins;
|
|
let err = undefined;
|
|
for (const origin of origins) {
|
|
try {
|
|
const apiClient = new apiv2_1.Client({ urlPrefix: origin, auth: false });
|
|
return await task(apiClient, origin);
|
|
}
|
|
catch (e) {
|
|
if (!err) {
|
|
err = e;
|
|
}
|
|
}
|
|
}
|
|
throw err !== null && err !== void 0 ? err : new Error("Cannot find working hub origin. Tried:" + origins.join(" "));
|
|
}
|
|
async getEmulators() {
|
|
const res = await this.tryOrigins((client) => client.get(hub_1.EmulatorHub.PATH_EMULATORS));
|
|
return res.body;
|
|
}
|
|
async postExport(options) {
|
|
const origin = await this.getStatus();
|
|
const apiClient = new apiv2_1.Client({ urlPrefix: origin, auth: false });
|
|
await apiClient.post(hub_1.EmulatorHub.PATH_EXPORT, options);
|
|
}
|
|
assertLocator() {
|
|
if (this.locator === undefined) {
|
|
throw new error_1.FirebaseError(`Cannot contact the Emulator Hub for project ${this.projectId}`);
|
|
}
|
|
return this.locator;
|
|
}
|
|
}
|
|
exports.EmulatorHubClient = EmulatorHubClient;
|