express-passkit-webservice
Version:
Express.js integration for Apple Wallet web services
43 lines • 1.75 kB
JavaScript
import { json, Router } from "express";
import { ListEndpoint, } from "passkit-webservice-toolkit/v1/list.js";
import { HandlerNotFoundError } from "../../HandlerNotFoundError.js";
export default function ListRouter(opts) {
if (typeof (opts === null || opts === void 0 ? void 0 : opts.onListRetrieve) !== "function") {
throw new HandlerNotFoundError("onListRetrieve", "ListPlugin");
}
const router = Router({ caseSensitive: true });
router.use(json());
router.get(ListEndpoint.path, async (request, response) => {
const { deviceLibraryIdentifier, passTypeIdentifier } = request.params;
const filters = {
passesUpdatedSince: undefined,
};
if (request.query.passesUpdatedSince) {
filters.passesUpdatedSince = request.query.passesUpdatedSince;
}
const retrieve = await opts.onListRetrieve(deviceLibraryIdentifier, passTypeIdentifier, filters);
if (!retrieve) {
response.status(204).send();
return;
}
if (!("serialNumbers" in retrieve) ||
!Array.isArray(retrieve["serialNumbers"])) {
response
.status(500)
.send("'serialNumbers' property is missing in 'onListRetrieve' response or is not an array.");
return;
}
if (!("lastUpdated" in retrieve)) {
response
.status(500)
.send("'lastUpdated' property is missing in 'onListRetrieve' response.");
return;
}
response
.header("Content-Type", "application/json")
.status(200)
.send(JSON.stringify(retrieve));
});
return router;
}
//# sourceMappingURL=list.js.map