hono-passkit-webservice
Version:
Hono.dev integration for Apple Wallet web services
30 lines • 1.76 kB
JavaScript
import { Hono } from "hono";
import { RegisterEndpoint, } from "passkit-webservice-toolkit/v1/register.js";
import { UnregisterEndpoint } from "passkit-webservice-toolkit/v1/unregister.js";
import { HandlerNotFoundError } from "../../HandlerNotFoundError.js";
import { assertAuthorizationSchemeValid, assertTokenValid } from "./hooks.js";
export default function RegistrationRouter(opts) {
if (typeof (opts === null || opts === void 0 ? void 0 : opts.onRegister) !== "function") {
throw new HandlerNotFoundError("onRegister", "RegistrationRouter");
}
if (typeof opts.onUnregister !== "function") {
throw new HandlerNotFoundError("onUnregister", "RegistrationRouter");
}
const router = new Hono();
router.post(RegisterEndpoint.path, assertAuthorizationSchemeValid, assertTokenValid(opts.tokenVerifier), async (context) => {
const { deviceLibraryIdentifier, passTypeIdentifier, serialNumber } = context.req.param();
const { pushToken } = await context.req.json();
const registrationSuccessful = Boolean(await opts.onRegister(deviceLibraryIdentifier, passTypeIdentifier, serialNumber, pushToken));
const statusCode = (200 + Number(registrationSuccessful));
context.status(statusCode);
return context.body(null);
});
router.delete(UnregisterEndpoint.path, assertAuthorizationSchemeValid, assertTokenValid(opts.tokenVerifier), async (context) => {
const { deviceLibraryIdentifier, passTypeIdentifier, serialNumber } = context.req.param();
await opts.onUnregister(deviceLibraryIdentifier, passTypeIdentifier, serialNumber);
context.status(200);
return context.body(null);
});
return router;
}
//# sourceMappingURL=registration.js.map