import * as plugins from '../plugins.js'; /** * TypedRequest controller for type-safe RPC endpoint */ @plugins.smartserve.Route('/typedrequest') export class TypedRequestController { private typedRouter: plugins.typedrequest.TypedRouter; constructor(typedRouter: plugins.typedrequest.TypedRouter) { this.typedRouter = typedRouter; } @plugins.smartserve.Post('') async handleTypedRequest(ctx: plugins.smartserve.IRequestContext): Promise { try { const response = await this.typedRouter.routeAndAddResponse(ctx.body as plugins.typedrequestInterfaces.ITypedRequest); return new Response(plugins.smartjson.stringify(response), { status: 200, headers: { 'Content-Type': 'application/json', }, }); } catch (error) { return new Response(JSON.stringify({ error: 'Invalid request' }), { status: 400, headers: { 'Content-Type': 'application/json', }, }); } } @plugins.smartserve.Head('') async handleTypedRequestHead(): Promise { // HEAD request for online checking from service worker return new Response(null, { status: 200, headers: { 'Content-Type': 'application/json', }, }); } }