adonis-passkit-webservice
Version:
AdonisJS integration for Apple Wallet web services
43 lines • 1.86 kB
JavaScript
import router from "@adonisjs/core/services/router";
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");
}
return () => {
router.get(ListEndpoint.path, async ({ request, response, params }) => {
const { deviceLibraryIdentifier, passTypeIdentifier } = params;
const filters = {
passesUpdatedSince: undefined,
};
const queryString = request.qs();
if (queryString.passesUpdatedSince) {
filters.passesUpdatedSince = queryString.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));
});
};
}
//# sourceMappingURL=list.js.map