Files
lstV2/server/globalUtils/apiHits.ts

48 lines
1.4 KiB
TypeScript

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<typeof requestSchema>;
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"}]};
}
};