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.
35 lines
1.4 KiB
35 lines
1.4 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.updateRules = void 0;
|
|
const apiv2_1 = require("./apiv2");
|
|
const database_1 = require("./management/database");
|
|
const error_1 = require("./error");
|
|
const api_1 = require("./database/api");
|
|
const utils = require("./utils");
|
|
async function updateRules(projectId, instance, src, options = {}) {
|
|
const queryParams = {};
|
|
if (options.dryRun) {
|
|
queryParams.dryRun = "true";
|
|
}
|
|
const downstreamOptions = { instance: instance, project: projectId };
|
|
await (0, database_1.populateInstanceDetails)(downstreamOptions);
|
|
if (!downstreamOptions.instanceDetails) {
|
|
throw new error_1.FirebaseError(`Could not get instance details`, { exit: 2 });
|
|
}
|
|
const origin = utils.getDatabaseUrl((0, api_1.realtimeOriginOrCustomUrl)(downstreamOptions.instanceDetails.databaseUrl), instance, "");
|
|
const client = new apiv2_1.Client({ urlPrefix: origin });
|
|
const response = await client.request({
|
|
method: "PUT",
|
|
path: ".settings/rules.json",
|
|
queryParams,
|
|
body: src,
|
|
resolveOnHTTPError: true,
|
|
});
|
|
if (response.status === 400) {
|
|
throw new error_1.FirebaseError(`Syntax error in database rules:\n\n${response.body.error}`);
|
|
}
|
|
else if (response.status > 400) {
|
|
throw new error_1.FirebaseError("Unexpected error while deploying database rules.", { exit: 2 });
|
|
}
|
|
}
|
|
exports.updateRules = updateRules;
|