diff --git a/src/index.ts b/src/index.ts index dc1a478..0c148d8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -80,14 +80,6 @@ app.use( // DO Apps doesn't send a X-Forwarded-Proto header, so we simply need to make a blanket trust app.set("trust proxy", true); -function asyncHandler(fn: any) { - return (req: express.Request, res: express.Response, next: express.NextFunction) => { - return Promise.resolve(fn(req, res, next)).catch(next); - }; -} - -const asyncAuthGuard = asyncHandler(authenticated); - app.get("/", (req, res) => { return res.status(200).send("OK"); }); @@ -101,8 +93,8 @@ app.get("/healthz", (req, res) => { app.get( "/me", - asyncAuthGuard, - asyncHandler(async (req: express.Request, res: express.Response) => { + authenticated, + async (req: express.Request, res: express.Response) => { const idToken = req.session?.id_token; const { sub, iss, exp, aud, iat, jti, nbf } = jose.decodeJwt(idToken); @@ -115,32 +107,32 @@ app.get( } return res.json({ ...user, sub }); - }), + }, ); -app.get("/releases", asyncHandler(Releases.Retrieve)); +app.get("/releases", Releases.Retrieve); app.get( "/releases/system_recovery/latest", - asyncHandler(Releases.RetrieveLatestSystemRecovery), + Releases.RetrieveLatestSystemRecovery, ); -app.get("/releases/app/latest", asyncHandler(Releases.RetrieveLatestApp)); +app.get("/releases/app/latest", Releases.RetrieveLatestApp); -app.get("/devices", asyncAuthGuard, asyncHandler(Devices.List)); -app.get("/devices/:id", asyncAuthGuard, asyncHandler(Devices.Retrieve)); -app.post("/devices/token", asyncHandler(Devices.Token)); -app.put("/devices/:id", asyncAuthGuard, asyncHandler(Devices.Update)); -app.delete("/devices/:id", asyncHandler(Devices.Delete)); +app.get("/devices", authenticated, Devices.List); +app.get("/devices/:id", authenticated, Devices.Retrieve); +app.post("/devices/token", Devices.Token); +app.put("/devices/:id", authenticated, Devices.Update); +app.delete("/devices/:id", Devices.Delete); -app.post("/webrtc/session", asyncAuthGuard, asyncHandler(Webrtc.CreateSession)); -app.post("/webrtc/ice_config", asyncAuthGuard, asyncHandler(Webrtc.CreateIceCredentials)); +app.post("/webrtc/session", authenticated, Webrtc.CreateSession); +app.post("/webrtc/ice_config", authenticated, Webrtc.CreateIceCredentials); app.post( "/webrtc/turn_activity", - asyncAuthGuard, - asyncHandler(Webrtc.CreateTurnActivity), + authenticated, + Webrtc.CreateTurnActivity, ); -app.post("/oidc/google", asyncHandler(OIDC.Google)); -app.get("/oidc/callback_o", asyncHandler(OIDC.Callback)); +app.post("/oidc/google", OIDC.Google); +app.get("/oidc/callback_o", OIDC.Callback); app.get("/oidc/callback", (req, res) => { /* * We set the session cookie in the /oidc/google route as a part of 302 redirect to the OIDC login page @@ -187,10 +179,10 @@ app.get("/oidc/callback", (req, res) => { app.post( "/logout", - asyncHandler((req: express.Request, res: express.Response) => { + (req: express.Request, res: express.Response) => { req.session = null; return res.json({ message: "Logged out" }); - }), + } ); // Error-handling middleware @@ -200,7 +192,7 @@ app.use( req: express.Request, res: express.Response, next: express.NextFunction, - ) => { + ): void => { const isProduction = process.env.NODE_ENV === "production"; const statusCode = err instanceof HttpError ? err.status : 500;