@@ -2,7 +2,42 @@ import { SFContentTypeEnum } from "@/gen/search_filters_pb";
22import { encodeContentSearchFiltersParam } from "@/lib/util/binaryData" ;
33import { type NextRequest , NextResponse , type ProxyConfig } from "next/server" ;
44
5+ const deploymentEnv =
6+ process . env . PRX_ENVIRONMENT || process . env . NODE_ENV || "development" ;
7+
8+ function logger (
9+ request : NextRequest ,
10+ response : NextResponse | Response ,
11+ requestedAt : Temporal . Instant ,
12+ ) {
13+ const requestUrl = request . nextUrl . clone ( ) ;
14+ const now = Temporal . Now . instant ( ) ;
15+ const responseDuration = now . since ( requestedAt ) ;
16+
17+ console . log ( "Proxy Logger" , {
18+ totalTime : responseDuration . milliseconds ,
19+ request : {
20+ path : requestUrl . pathname ,
21+ searchParams : requestUrl . searchParams . toString ( ) ,
22+ method : request . method ,
23+ headers : request . headers
24+ . entries ( )
25+ // biome-ignore lint/performance/noAccumulatingSpread: Fine for now.
26+ . reduce ( ( acc , [ k , v ] ) => ( { ...acc , [ k ] : v } ) , { } ) ,
27+ } ,
28+ response : {
29+ status : response . status ,
30+ statusText : response . statusText ,
31+ headers : response . headers
32+ . entries ( )
33+ // biome-ignore lint/performance/noAccumulatingSpread: Fine for now.
34+ . reduce ( ( acc , [ k , v ] ) => ( { ...acc , [ k ] : v } ) , { } ) ,
35+ } ,
36+ } ) ;
37+ }
38+
539export async function proxy ( request : NextRequest ) {
40+ const requestedAt = Temporal . Now . instant ( ) ;
641 const url = request . nextUrl . clone ( ) ;
742
843 /**
@@ -17,7 +52,11 @@ export async function proxy(request: NextRequest) {
1752 url . searchParams . set ( "sf" , sf ) ;
1853 url . searchParams . delete ( "v" ) ;
1954
20- return NextResponse . redirect ( url ) ;
55+ const response = NextResponse . redirect ( url ) ;
56+
57+ logger ( request , response , requestedAt ) ;
58+
59+ return response ;
2160 }
2261
2362 /**
@@ -33,7 +72,11 @@ export async function proxy(request: NextRequest) {
3372
3473 url . pathname = newPath ;
3574
36- return NextResponse . redirect ( url ) ;
75+ const response = NextResponse . redirect ( url ) ;
76+
77+ logger ( request , response , requestedAt ) ;
78+
79+ return response ;
3780 }
3881
3982 /**
@@ -52,13 +95,17 @@ export async function proxy(request: NextRequest) {
5295 }
5396
5497 if ( ! isImageUrlOk ) {
55- return Response . json (
98+ const response = Response . json (
5699 {
57100 success : false ,
58101 message : `Source image not accessible: ${ imageApiUrl } ` ,
59102 } ,
60103 { status : 422 } ,
61104 ) ;
105+
106+ logger ( request , response , requestedAt ) ;
107+
108+ return response ;
62109 }
63110 }
64111
@@ -136,6 +183,10 @@ export async function proxy(request: NextRequest) {
136183 }
137184 }
138185
186+ if ( deploymentEnv !== "development" ) {
187+ logger ( request , response , requestedAt ) ;
188+ }
189+
139190 return response ;
140191}
141192
0 commit comments