Add @types/hapi__call and @types/hapi__subtext (#5574)

This commit is contained in:
Sebastian Malton authored and GitHub committed 2022-06-13 11:00:18 -04:00
1 parent 3058bea88f
commit 808875f491
6 files changed
+53 -22

No files matched your search

@@ -5,6 +5,8 @@
import { getInjectable } from "@ogre-tools/injectable";
import Subtext from "@hapi/subtext";
export type ParseRequest = typeof Subtext.parse;
const parseRequestInjectable = getInjectable({
id: "parse-http-request",
instantiate: () => Subtext.parse,
+4 -1
View File
@@ -32,7 +32,10 @@ describe("router", () => {
mockFs();
di.override(parseRequestInjectable, () => () => Promise.resolve({ payload: "some-payload" }));
di.override(parseRequestInjectable, () => () => Promise.resolve({
payload: "some-payload",
mime: "some-mime",
}));
di.override(directoryForUserDataInjectable, () => "some-directory-for-user-data");
di.override(kubectlBinaryNameInjectable, () => "kubectl");
di.override(kubectlDownloadingNormalizedArchInjectable, () => "amd64");
+12 -12
View File
@@ -10,21 +10,22 @@ import type { Cluster } from "../../common/cluster/cluster";
import { contentTypes } from "./router-content-types";
import type { LensApiRequest, LensApiResult, Route } from "./route";
import type { ServerIncomingMessage } from "../lens-proxy/lens-proxy";
import type { ParseRequest } from "./parse-request.injectable";
export interface RouterRequestOpts {
req: http.IncomingMessage;
res: http.ServerResponse;
cluster: Cluster | undefined;
params: any;
params: Partial<Record<string, string>>;
url: URL;
}
interface Dependencies {
parseRequest: (request: http.IncomingMessage, _: null, options: { parse: boolean; output: string }) => Promise<{ payload: any }>;
parseRequest: ParseRequest;
}
export class Router {
protected router = new Call.Router();
protected router = new Call.Router<ReturnType<typeof handleRoute>>();
constructor(routes: Route<unknown, string>[], private dependencies: Dependencies) {
routes.forEach(route => {
@@ -37,17 +38,16 @@ export class Router {
const path = url.pathname;
const method = req.method.toLowerCase();
const matchingRoute = this.router.route(method, path);
const routeFound = !matchingRoute.isBoom;
if (routeFound) {
const request = await this.getRequest({ req, res, cluster, url, params: matchingRoute.params });
await matchingRoute.route(request, res);
return true;
if (matchingRoute instanceof Error) {
return false;
}
return false;
const request = await this.getRequest({ req, res, cluster, url, params: matchingRoute.params });
await matchingRoute.route(request, res);
return true;
}
protected async getRequest(opts: RouterRequestOpts): Promise<LensApiRequest<string>> {
@@ -64,7 +64,7 @@ export class Router {
raw: {
req, res,
},
query: url.searchParams as never,
query: url.searchParams,
payload,
params,
};