Skip to content

Commit

Permalink
route.get() added
Browse files Browse the repository at this point in the history
  • Loading branch information
krutoo committed Feb 27, 2024
1 parent 9c69747 commit d03b38f
Showing 1 changed file with 23 additions and 3 deletions.
26 changes: 23 additions & 3 deletions src/server.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { Handler } from './types';

interface Route {
is(url: URL): boolean;
is(url: URL, request: Request): boolean;
handler: Handler;
}

Expand All @@ -10,7 +10,7 @@ export function router(...routes: Route[]): Handler {
const url = new URL(request.url);

for (const route of routes) {
if (route.is(url)) {
if (route.is(url, request)) {
return route.handler(request);
}
}
Expand All @@ -19,7 +19,10 @@ export function router(...routes: Route[]): Handler {
};
}

export function route(pattern: string | ((url: URL) => boolean), handler: Handler): Route {
export function route(
pattern: string | ((url: URL, request: Request) => boolean),
handler: Handler,
): Route {
if (typeof pattern === 'function') {
return {
is: pattern,
Expand All @@ -32,3 +35,20 @@ export function route(pattern: string | ((url: URL) => boolean), handler: Handle
handler,
};
}

route.get = (
pattern: string | ((url: URL, request: Request) => boolean),
handler: Handler,
): Route => {
if (typeof pattern === 'function') {
return {
is: pattern,
handler,
};
}

return {
is: (url, request) => request.method.toLowerCase() === 'get' && url.pathname === pattern,
handler,
};
};

0 comments on commit d03b38f

Please sign in to comment.