import type {Context} from "hono"; import {z, ZodError} from "zod"; // Define the request body schema const requestSchema = z.object({ ip: z.string().optional(), endpoint: z.string(), action: z.string().optional(), lastBody: z.string().optional(), stats: z.string().optional(), }); type ApiHitData = z.infer; export const apiHit = async ( c: Context, data: ApiHitData ): Promise<{success: boolean; data?: ApiHitData; errors?: any[]}> => { // console.log(data); try { // Extract IP from request headers or connection info const forwarded = c.req.header("host"); //console.log(forwarded); // Validate the data const checkData = { ip: forwarded!, endpoint: data?.endpoint, lastBody: data?.lastBody, action: data?.action, stats: data?.stats, }; const validatedData = requestSchema.parse(checkData); // Proceed with the validated data return {success: true, data: validatedData}; } catch (error) { // Explicitly check if the error is an instance of ZodError if (error instanceof ZodError) { // console.log({success: false, errors: error.errors}); return {success: false, errors: error.errors}; } // Catch other unexpected errors return {success: false, errors: [{message: "An unknown error occurred"}]}; } };