mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 16:00:32 +00:00
add request code
This commit is contained in:
@@ -69,8 +69,47 @@ export class NotificationService {
|
|||||||
this.reloadAPNsTokenIfTimePassed();
|
this.reloadAPNsTokenIfTimePassed();
|
||||||
const url = this.getAPNsFullUrlToUse(deviceId);
|
const url = this.getAPNsFullUrlToUse(deviceId);
|
||||||
|
|
||||||
// Send the fetch request
|
const shuttle = await this.repository.getShuttleById(shuttleId);
|
||||||
|
const stop = await this.repository.getStopById(stopId);
|
||||||
|
const eta = await this.repository.getEtaForShuttleAndStopId(shuttleId, stopId);
|
||||||
|
// TODO: add more specific errors
|
||||||
|
if (!shuttle) {
|
||||||
|
throw new Error("The shuttle given by the provided shuttleID doesn't exist.");
|
||||||
|
}
|
||||||
|
if (!stop) {
|
||||||
|
throw new Error("The shuttle given by the provided stopId doesn't exist.");
|
||||||
|
}
|
||||||
|
// TODO: account for cases where ETA may not exist due to "data race" with ApiBasedRepositoryLoader
|
||||||
|
if (!eta) {
|
||||||
|
throw new Error("There is no ETA for this shuttle/stop.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send the fetch request
|
||||||
|
const bundleId = process.env.APNS_BUNDLE_ID;
|
||||||
|
if (typeof bundleId !== "string") {
|
||||||
|
throw new Error("APNS_BUNDLE_ID environment variable is not set correctly");
|
||||||
|
}
|
||||||
|
|
||||||
|
const headers = {
|
||||||
|
authorization: `bearer ${this.apnsToken}`,
|
||||||
|
"apns-push-type": "alert",
|
||||||
|
"apns-expiration": "0",
|
||||||
|
"apns-priority": "10",
|
||||||
|
"apns-topic": bundleId,
|
||||||
|
};
|
||||||
|
const response = await fetch(url, {
|
||||||
|
method: "POST",
|
||||||
|
headers,
|
||||||
|
body: JSON.stringify({
|
||||||
|
aps: {
|
||||||
|
alert: {
|
||||||
|
title: "Shuttle is arriving",
|
||||||
|
body: `Shuttle is approaching ${stop.name} in ${Math.ceil(eta.secondsRemaining / 60)} minutes.`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
const json = await response.json();
|
||||||
|
|
||||||
// Check whether it was successful
|
// Check whether it was successful
|
||||||
// Return the result
|
// Return the result
|
||||||
|
|||||||
Reference in New Issue
Block a user