import { JWT } from "google-auth-library";
import { getSecretValue } from "./utils/secrets-manager";
export async function getPlayStoreReview(
yesterdayDate: string,
appBundleId: string
) {
let result = [];
const key = JSON.parse(
await getSecretValue("key/googleReview", "ap-southeast-1")
);
const client = new JWT({
email: key.client_email,
key: key.private_key,
scopes: ["https://www.googleapis.com/auth/androidpublisher"],
});
let url = `https://www.googleapis.com/androidpublisher/v3/applications/${appBundleId}/reviews?maxResults=100`;
let res = await client.request({ url });
result = result.concat(
getYesterdayData(res.data["reviews"], yesterdayDate, appBundleId)
);
while (res.data["tokenPagination"]) {
const nextToken = res.data["tokenPagination"].nextPageToken;
url = `https://www.googleapis.com/androidpublisher/v3/applications/${appBundleId}/reviews?maxResults=100&token=${nextToken}`;
res = await client.request({ url });
result = result.concat(
getYesterdayData(res.data["reviews"], yesterdayDate, appBundleId)
);
}
return result;
}
const requestDate = (data: Date) => {
const date = ("0" + data.getDate()).slice(-2);
const month = ("0" + (data.getMonth() + 1)).slice(-2);
const year = data.getFullYear();
return year + "-" + month + "-" + date;
};
const getYesterdayData = (
data: JSON,
yesterdayDate: string,
appBundleId: string
) => {
let result = [];
for (const j in data) {
const seconds = Number(
data[j].comments[0].userComment.lastModified.seconds
);
const nanos = Number(data[j].comments[0].userComment.lastModified.nanos);
const date_ob = new Date((seconds * 1000000000 + nanos) / 1000000);
const reviewDate = requestDate(date_ob);
if (yesterdayDate == reviewDate) {
data[j]["appBundleId"] = appBundleId;
result = result.concat(data[j]);
}
}
return result;
};