Skip to content

Commit 2f3ad87

Browse files
committed
cleanup basket
1 parent 35658f1 commit 2f3ad87

File tree

1 file changed

+106
-144
lines changed

1 file changed

+106
-144
lines changed

apps/basket/src/routes/basket.ts

Lines changed: 106 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -42,27 +42,25 @@ function saltAnonymousId(anonymousId: string, salt: string): string {
4242
.digest('hex');
4343
}
4444

45-
async function validateRequest(body: any, query: any, request: Request) {
45+
async function validateRequest(body: any, request: Request) {
4646
if (!validatePayloadSize(body, VALIDATION_LIMITS.PAYLOAD_MAX_SIZE)) {
4747
await logBlockedTraffic(
4848
request,
4949
body,
50-
query,
5150
'payload_too_large',
5251
'Validation Error'
5352
);
5453
return { error: { status: 'error', message: 'Payload too large' } };
5554
}
5655

5756
const clientId = sanitizeString(
58-
query.client_id,
57+
request.headers.get('client-id'),
5958
VALIDATION_LIMITS.SHORT_STRING_MAX_LENGTH
6059
);
6160
if (!clientId) {
6261
await logBlockedTraffic(
6362
request,
6463
body,
65-
query,
6664
'missing_client_id',
6765
'Validation Error'
6866
);
@@ -74,7 +72,6 @@ async function validateRequest(body: any, query: any, request: Request) {
7472
await logBlockedTraffic(
7573
request,
7674
body,
77-
query,
7875
'invalid_client_id',
7976
'Validation Error',
8077
undefined,
@@ -96,7 +93,6 @@ async function validateRequest(body: any, query: any, request: Request) {
9693
await logBlockedTraffic(
9794
request,
9895
body,
99-
query,
10096
'exceeded_event_limit',
10197
'Validation Error',
10298
undefined,
@@ -111,7 +107,6 @@ async function validateRequest(body: any, query: any, request: Request) {
111107
await logBlockedTraffic(
112108
request,
113109
body,
114-
query,
115110
'origin_not_authorized',
116111
'Security Check',
117112
undefined,
@@ -130,7 +125,6 @@ async function validateRequest(body: any, query: any, request: Request) {
130125
await logBlockedTraffic(
131126
request,
132127
body,
133-
query,
134128
botCheck.reason || 'unknown_bot',
135129
botCheck.category || 'Bot Detection',
136130
botCheck.botName,
@@ -445,7 +439,6 @@ async function checkDuplicate(
445439
async function logBlockedTraffic(
446440
request: Request,
447441
body: any,
448-
query: any,
449442
blockReason: string,
450443
blockCategory: string,
451444
botName?: string,
@@ -523,7 +516,11 @@ async function logBlockedTraffic(
523516
values: [blockedEvent],
524517
format: 'JSONEachRow',
525518
})
526-
.then(() => {})
519+
.then(() => {
520+
logger.info('Logged blocked traffic', {
521+
blockedEvent,
522+
});
523+
})
527524
.catch((err) => {
528525
logger.error('Failed to log blocked traffic', { error: err as Error });
529526
});
@@ -533,129 +530,101 @@ async function logBlockedTraffic(
533530
}
534531

535532
const app = new Elysia()
536-
.post(
537-
'/',
538-
async ({
539-
body,
540-
query,
541-
request,
542-
}: {
543-
body: any;
544-
query: any;
545-
request: Request;
546-
}) => {
547-
const validation = await validateRequest(body, query, request);
548-
if (!validation.success) {
549-
return validation.error;
550-
}
533+
.post('/', async ({ body, request }: { body: any; request: Request }) => {
534+
const validation = await validateRequest(body, request);
535+
if (!validation.success) {
536+
return validation.error;
537+
}
551538

552-
const { clientId, userAgent, ip } = validation;
539+
const { clientId, userAgent, ip } = validation;
553540

554-
const salt = await getDailySalt();
555-
if (body.anonymous_id) {
556-
body.anonymous_id = saltAnonymousId(body.anonymous_id, salt);
557-
}
541+
const salt = await getDailySalt();
542+
if (body.anonymous_id) {
543+
body.anonymous_id = saltAnonymousId(body.anonymous_id, salt);
544+
}
558545

559-
const eventType = body.type || 'track';
560-
561-
if (eventType === 'track') {
562-
const parseResult = analyticsEventSchema.safeParse(body);
563-
if (!parseResult.success) {
564-
console.error(
565-
'Blocked event schema errors:',
566-
parseResult.error.issues,
567-
'Payload:',
568-
body
569-
);
570-
await logBlockedTraffic(
571-
request,
572-
body,
573-
query,
574-
'invalid_schema',
575-
'Schema Validation',
576-
undefined,
577-
clientId
578-
);
579-
return {
580-
status: 'error',
581-
message: 'Invalid event schema',
582-
errors: parseResult.error.issues,
583-
};
584-
}
585-
insertTrackEvent(body, clientId, userAgent, ip);
586-
return { status: 'success', type: 'track' };
546+
const eventType = body.type || 'track';
547+
548+
if (eventType === 'track') {
549+
const parseResult = analyticsEventSchema.safeParse(body);
550+
if (!parseResult.success) {
551+
logger.error('Blocked event schema errors:', {
552+
issues: parseResult.error.issues,
553+
payload: body,
554+
});
555+
await logBlockedTraffic(
556+
request,
557+
body,
558+
'invalid_schema',
559+
'Schema Validation',
560+
undefined,
561+
clientId
562+
);
563+
return {
564+
status: 'error',
565+
message: 'Invalid event schema',
566+
errors: parseResult.error.issues,
567+
};
587568
}
569+
insertTrackEvent(body, clientId, userAgent, ip);
570+
return { status: 'success', type: 'track' };
571+
}
588572

589-
if (eventType === 'error') {
590-
const parseResult = errorEventSchema.safeParse(body);
591-
if (!parseResult.success) {
592-
console.error(
593-
'Blocked event schema errors:',
594-
parseResult.error.issues,
595-
'Payload:',
596-
body
597-
);
598-
await logBlockedTraffic(
599-
request,
600-
body,
601-
query,
602-
'invalid_schema',
603-
'Schema Validation',
604-
undefined,
605-
clientId
606-
);
607-
return {
608-
status: 'error',
609-
message: 'Invalid event schema',
610-
errors: parseResult.error.issues,
611-
};
612-
}
613-
insertError(body, clientId, userAgent, ip);
614-
return { status: 'success', type: 'error' };
573+
if (eventType === 'error') {
574+
const parseResult = errorEventSchema.safeParse(body);
575+
if (!parseResult.success) {
576+
logger.error('Blocked event schema errors:', {
577+
issues: parseResult.error.issues,
578+
payload: body,
579+
});
580+
await logBlockedTraffic(
581+
request,
582+
body,
583+
'invalid_schema',
584+
'Schema Validation',
585+
undefined,
586+
clientId
587+
);
588+
return {
589+
status: 'error',
590+
message: 'Invalid event schema',
591+
errors: parseResult.error.issues,
592+
};
615593
}
594+
insertError(body, clientId, userAgent, ip);
595+
return { status: 'success', type: 'error' };
596+
}
616597

617-
if (eventType === 'web_vitals') {
618-
const parseResult = webVitalsEventSchema.safeParse(body);
619-
if (!parseResult.success) {
620-
console.error(
621-
'Blocked event schema errors:',
622-
parseResult.error.issues,
623-
'Payload:',
624-
body
625-
);
626-
await logBlockedTraffic(
627-
request,
628-
body,
629-
query,
630-
'invalid_schema',
631-
'Schema Validation',
632-
undefined,
633-
clientId
634-
);
635-
return {
636-
status: 'error',
637-
message: 'Invalid event schema',
638-
errors: parseResult.error.issues,
639-
};
640-
}
641-
insertWebVitals(body, clientId, userAgent, ip);
642-
return { status: 'success', type: 'web_vitals' };
598+
if (eventType === 'web_vitals') {
599+
const parseResult = webVitalsEventSchema.safeParse(body);
600+
if (!parseResult.success) {
601+
logger.error('Blocked event schema errors:', {
602+
issues: parseResult.error.issues,
603+
payload: body,
604+
});
605+
await logBlockedTraffic(
606+
request,
607+
body,
608+
'invalid_schema',
609+
'Schema Validation',
610+
undefined,
611+
clientId
612+
);
613+
return {
614+
status: 'error',
615+
message: 'Invalid event schema',
616+
errors: parseResult.error.issues,
617+
};
643618
}
644-
645-
return { status: 'error', message: 'Unknown event type' };
619+
insertWebVitals(body, clientId, userAgent, ip);
620+
return { status: 'success', type: 'web_vitals' };
646621
}
647-
)
622+
623+
return { status: 'error', message: 'Unknown event type' };
624+
})
648625
.post(
649626
'/batch',
650-
async ({
651-
body,
652-
query,
653-
request,
654-
}: {
655-
body: any;
656-
query: any;
657-
request: Request;
658-
}) => {
627+
async ({ body, request }: { body: any; request: Request }) => {
659628
if (!Array.isArray(body)) {
660629
return {
661630
status: 'error',
@@ -667,7 +636,7 @@ const app = new Elysia()
667636
return { status: 'error', message: 'Batch too large' };
668637
}
669638

670-
const validation = await validateRequest(body, query, request);
639+
const validation = await validateRequest(body, request);
671640
if (!validation.success) {
672641
return { ...validation.error, batch: true };
673642
}
@@ -688,16 +657,13 @@ const app = new Elysia()
688657
if (eventType === 'track') {
689658
const parseResult = analyticsEventSchema.safeParse(event);
690659
if (!parseResult.success) {
691-
console.error(
692-
'Blocked event schema errors:',
693-
parseResult.error.issues,
694-
'Payload:',
695-
event
696-
);
660+
logger.error('Blocked event schema errors:', {
661+
issues: parseResult.error.issues,
662+
payload: event,
663+
});
697664
await logBlockedTraffic(
698665
request,
699666
event,
700-
query,
701667
'invalid_schema',
702668
'Schema Validation',
703669
undefined,
@@ -730,16 +696,14 @@ const app = new Elysia()
730696
if (eventType === 'error') {
731697
const parseResult = errorEventSchema.safeParse(event);
732698
if (!parseResult.success) {
733-
console.error(
734-
'Blocked event schema errors:',
735-
parseResult.error.issues,
736-
'Payload:',
737-
event
738-
);
699+
logger.error('Blocked event schema errors:', {
700+
issues: parseResult.error.issues,
701+
payload: event,
702+
event,
703+
});
739704
await logBlockedTraffic(
740705
request,
741706
event,
742-
query,
743707
'invalid_schema',
744708
'Schema Validation',
745709
undefined,
@@ -772,16 +736,14 @@ const app = new Elysia()
772736
if (eventType === 'web_vitals') {
773737
const parseResult = webVitalsEventSchema.safeParse(event);
774738
if (!parseResult.success) {
775-
console.error(
776-
'Blocked event schema errors:',
777-
parseResult.error.issues,
778-
'Payload:',
779-
event
780-
);
739+
logger.error('Blocked event schema errors:', {
740+
issues: parseResult.error.issues,
741+
payload: event,
742+
event,
743+
});
781744
await logBlockedTraffic(
782745
request,
783746
event,
784-
query,
785747
'invalid_schema',
786748
'Schema Validation',
787749
undefined,

0 commit comments

Comments
 (0)