From 54bc1e29574908093390d9b502f4e53498449b21 Mon Sep 17 00:00:00 2001 From: David Ludwig Date: Tue, 20 Apr 2021 00:02:16 -0500 Subject: [PATCH] Forward middleware parameters to requests with propert types --- src/server/services/WebServer/requests/Request.ts | 11 ++++++----- src/server/services/WebServer/requests/index.ts | 8 +++++--- .../services/WebServer/routes/RouteRegisterFactory.ts | 2 +- src/server/services/WebServer/routes/api.ts | 1 - 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/server/services/WebServer/requests/Request.ts b/src/server/services/WebServer/requests/Request.ts index 3c59247..a2cf89e 100644 --- a/src/server/services/WebServer/requests/Request.ts +++ b/src/server/services/WebServer/requests/Request.ts @@ -1,11 +1,12 @@ import { FastifyRequest, FastifyReply } from "fastify"; +import { MiddlewareRequest } from "../middleware"; -export default class Request +export default class Request { /** * Handle the incoming request */ - public async handle(request: FastifyRequest, reply: FastifyReply) { + public async handle(request: MiddlewareRequest, reply: FastifyReply) { if (!this.isAuthorized(request)) { reply.status(403); return { @@ -34,21 +35,21 @@ export default class Request /** * Check if the user is authorized to make this request */ - public isAuthorized(request: FastifyRequest) { + public isAuthorized(request: MiddlewareRequest) { return true; } /** * Check the format of the given request */ - public checkFormat(request: FastifyRequest) { + public checkFormat(request: MiddlewareRequest) { return true; } /** * Validate the request and return any errors */ - public async validate(request: FastifyRequest): Promise { + public async validate(request: MiddlewareRequest): Promise { return undefined; } } diff --git a/src/server/services/WebServer/requests/index.ts b/src/server/services/WebServer/requests/index.ts index 77c8cee..8fcaaf5 100644 --- a/src/server/services/WebServer/requests/index.ts +++ b/src/server/services/WebServer/requests/index.ts @@ -1,9 +1,11 @@ import Request from "./Request"; -import { HandlerMethodWithMiddleware } from "../middleware"; +import { MiddlewareRequest } from "../middleware"; +import { FastifyReply } from "fastify"; -type RequestConstructor = new () => Request; +type RequestConstructor = new () => Request; +export type RouteMiddlewareHandler = (request: MiddlewareRequest, reply: FastifyReply) => Promise | void; -export default function handle(requests: RequestConstructor[], handle: HandlerMethodWithMiddleware): HandlerMethodWithMiddleware +export default function handle(requests: RequestConstructor[], handle: RouteMiddlewareHandler): RouteMiddlewareHandler { return async (fastifyRequest, fastifyReply) => { // Request parsing diff --git a/src/server/services/WebServer/routes/RouteRegisterFactory.ts b/src/server/services/WebServer/routes/RouteRegisterFactory.ts index f81add8..dffb2f2 100644 --- a/src/server/services/WebServer/routes/RouteRegisterFactory.ts +++ b/src/server/services/WebServer/routes/RouteRegisterFactory.ts @@ -7,7 +7,7 @@ import WebServer from ".."; export type RouteFactory = never> = ((factory: RouteRegisterFactory) => void) | ((factory: RouteRegisterFactory, app: Application) => void); -export default class RouteRegisterFactory = never> +export default class RouteRegisterFactory = MiddlewareMethod> { /** * The application instance diff --git a/src/server/services/WebServer/routes/api.ts b/src/server/services/WebServer/routes/api.ts index 1ce33cd..1bb41c0 100644 --- a/src/server/services/WebServer/routes/api.ts +++ b/src/server/services/WebServer/routes/api.ts @@ -1,7 +1,6 @@ import Application from "@server/Application"; import SeekerIpc from "@server/services/SeekerIpc"; import MovieSearch from "@server/services/MovieSearch"; -import RequestImdbMovieRequest from "../requests/RequestImdbMovieRequest"; import { auth } from "../middleware/auth"; import RouteRegisterFactory from "./RouteRegisterFactory"; import handle from "../requests";