Skip to content

Commit 78ea1fe

Browse files
Moved template retrieval in-line (#1077)
1 parent 727ad07 commit 78ea1fe

File tree

1 file changed

+42
-50
lines changed
  • 2nd-gen/remote-config-diff/functions

1 file changed

+42
-50
lines changed

2nd-gen/remote-config-diff/functions/index.js

Lines changed: 42 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -22,62 +22,54 @@ const {onConfigUpdated} = require("firebase-functions/v2/remoteConfig");
2222
const logger = require("firebase-functions/logger");
2323
// The Firebase Admin SDK to obtain access tokens.
2424
const admin = require("firebase-admin");
25-
admin.initializeApp();
25+
const app = admin.initializeApp();
2626
const fetch = require("node-fetch");
2727
const jsonDiff = require("json-diff");
2828
// [END import]
2929

3030
// [START showconfigdiff]
31-
exports.showconfigdiff = onConfigUpdated((event) => {
32-
// Obtain the access token from the admin SDK
33-
return admin.credential.applicationDefault().getAccessToken()
34-
.then((accessTokenObj) => {
35-
return accessTokenObj.access_token;
36-
})
37-
.then((accessToken) => {
38-
// Get the version number from the event object
39-
const currentVersion = event.data.versionNumber;
40-
const templatePromises = [];
41-
templatePromises.push(getTemplate(currentVersion, accessToken));
42-
templatePromises.push(getTemplate(currentVersion - 1, accessToken));
43-
// Get the templates
44-
return Promise.all(templatePromises);
45-
})
46-
.then((results) => {
47-
const currentTemplate = results[0];
48-
const previousTemplate = results[1];
49-
// Figure out the differences of the templates
50-
const diff = jsonDiff.diffString(previousTemplate, currentTemplate);
51-
// Log the difference
52-
logger.log(diff);
31+
exports.showconfigdiff = onConfigUpdated(async (event) => {
32+
try {
33+
// Obtain the access token from the Admin SDK
34+
const accessTokenObj = await admin.credential.applicationDefault()
35+
.getAccessToken();
36+
const accessToken = accessTokenObj.access_token;
5337

54-
return null;
55-
}).catch((error) => {
56-
logger.error(error);
57-
return null;
58-
});
38+
// Get the version number from the event object
39+
const remoteConfigApi = "https://firebaseremoteconfig.googleapis.com/v1/" +
40+
`projects/${app.options.projectId}/remoteConfig`;
41+
const currentVersion = event.data.versionNumber;
42+
const prevVersion = currentVersion - 1;
43+
const templatePromises = [];
44+
templatePromises.push(fetch(
45+
remoteConfigApi,
46+
{
47+
method: "POST",
48+
body: new URLSearchParams([["versionNumber", currentVersion + ""]]),
49+
headers: {Authorization: "Bearer " + accessToken},
50+
},
51+
));
52+
templatePromises.push(fetch(
53+
remoteConfigApi,
54+
{
55+
method: "POST",
56+
body: new URLSearchParams([["versionNumber", prevVersion + ""]]),
57+
headers: {Authorization: "Bearer " + accessToken},
58+
},
59+
));
60+
61+
// Get the templates
62+
const responses = await Promise.all(templatePromises);
63+
const results = responses.map((r) => r.json());
64+
const currentTemplate = results[0];
65+
const previousTemplate = results[1];
66+
// Figure out the differences of the templates
67+
const diff = jsonDiff.diffString(previousTemplate, currentTemplate);
68+
// Log the difference
69+
logger.log(diff);
70+
} catch (error) {
71+
logger.error(error);
72+
}
5973
});
6074
// [END showconfigdiff]
61-
62-
// [START getTemplate]
63-
/**
64-
* Get a specific version of a Remote Config template
65-
* @param {number} version
66-
* @param {string} accessToken
67-
* @return {Promise<string>} the template as JSON
68-
*/
69-
async function getTemplate(version, accessToken) {
70-
const params = new URLSearchParams();
71-
params.append("versionNumber", version + "");
72-
const response = await fetch(
73-
"https://firebaseremoteconfig.googleapis.com/v1/projects/remote-config-function/remoteConfig",
74-
{
75-
method: "POST",
76-
body: params,
77-
headers: {Authorization: "Bearer " + accessToken},
78-
},
79-
);
80-
return response.json();
81-
}
82-
// [END getTemplate]
8375
// [END all]

0 commit comments

Comments
 (0)