Skip to content

Commit

Permalink
feat: support fromPlainHandler
Browse files Browse the repository at this point in the history
  • Loading branch information
pi0 committed Aug 8, 2023
1 parent 563313d commit bc2ca33
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
3 changes: 2 additions & 1 deletion src/adapters/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
export * from "./node";

export { type WebHandler, toWebHandler } from "./web";
export { type WebHandler, toWebHandler, fromWebHandler } from "./web";

export {
type PlainHandler,
type PlainRequest,
type PlainResponse,
toPlainHandler,
fromPlainHandler,
} from "./plain";
26 changes: 24 additions & 2 deletions src/adapters/plain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,12 @@ import { ServerResponse as NodeServerResponse } from "unenv/runtime/node/http/_r
import type { App } from "../app";
import type { HTTPMethod } from "../types";
import { createError, isError, sendError } from "../error";
import { H3Event, createEvent } from "../event";
import { splitCookiesString } from "../utils";
import { H3Event, createEvent, eventHandler } from "../event";
import {
setResponseHeader,
setResponseStatus,
splitCookiesString,
} from "../utils";

export interface PlainRequest {
_eventOverrides?: Partial<H3Event>;
Expand Down Expand Up @@ -33,6 +37,24 @@ export function toPlainHandler(app: App) {
return handler;
}

/** @experimental */
export function fromPlainHandler(handler: PlainHandler) {
return eventHandler(async (event) => {
const res = await handler({
method: event.method,
path: event.path,
headers: Object.fromEntries(event.headers.entries()),
body: event.rawBody,
context: event.context,
});
setResponseStatus(event, res.status, res.statusText);
for (const [key, value] of res.headers) {
setResponseHeader(event, key, value);
}
return res.body;
});
}

// --- Internal ---

export async function _handlePlainRequest(app: App, request: PlainRequest) {
Expand Down

0 comments on commit bc2ca33

Please sign in to comment.