Browse Source

Forward middleware parameters to requests with propert types

master
David Ludwig 4 years ago
parent
commit
54bc1e2957
4 changed files with 12 additions and 10 deletions
  1. +6
    -5
      src/server/services/WebServer/requests/Request.ts
  2. +5
    -3
      src/server/services/WebServer/requests/index.ts
  3. +1
    -1
      src/server/services/WebServer/routes/RouteRegisterFactory.ts
  4. +0
    -1
      src/server/services/WebServer/routes/api.ts

+ 6
- 5
src/server/services/WebServer/requests/Request.ts View File

@ -1,11 +1,12 @@
import { FastifyRequest, FastifyReply } from "fastify";
import { MiddlewareRequest } from "../middleware";
export default class Request
export default class Request<T = unknown>
{
/**
* Handle the incoming request
*/
public async handle(request: FastifyRequest, reply: FastifyReply) {
public async handle(request: MiddlewareRequest<T>, 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<T>) {
return true;
}
/**
* Check the format of the given request
*/
public checkFormat(request: FastifyRequest) {
public checkFormat(request: MiddlewareRequest<T>) {
return true;
}
/**
* Validate the request and return any errors
*/
public async validate(request: FastifyRequest): Promise<any|undefined> {
public async validate(request: MiddlewareRequest<T>): Promise<any|undefined> {
return undefined;
}
}


+ 5
- 3
src/server/services/WebServer/requests/index.ts View File

@ -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<T> = new () => Request<T>;
export type RouteMiddlewareHandler<T> = (request: MiddlewareRequest<T>, reply: FastifyReply) => Promise<void> | void;
export default function handle<T>(requests: RequestConstructor[], handle: HandlerMethodWithMiddleware<T>): HandlerMethodWithMiddleware<T>
export default function handle<T>(requests: RequestConstructor<T>[], handle: RouteMiddlewareHandler<T>): RouteMiddlewareHandler<T>
{
return async (fastifyRequest, fastifyReply) => {
// Request parsing


+ 1
- 1
src/server/services/WebServer/routes/RouteRegisterFactory.ts View File

@ -7,7 +7,7 @@ import WebServer from "..";
export type RouteFactory<M extends MiddlewareMethod<any> = never> = ((factory: RouteRegisterFactory<M>) => void)
| ((factory: RouteRegisterFactory<M>, app: Application) => void);
export default class RouteRegisterFactory<M extends MiddlewareMethod<any> = never>
export default class RouteRegisterFactory<M extends MiddlewareMethod<any> = MiddlewareMethod<void>>
{
/**
* The application instance


+ 0
- 1
src/server/services/WebServer/routes/api.ts View File

@ -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";


Loading…
Cancel
Save