1- import { handlers } from "@/app/auth" // Referring to the auth.ts we just created
2- export const { GET , POST } = handlers
1+ import { handlers } from "@/app/auth"
2+ import { NextResponse } from 'next/server'
3+ import { NextRequest } from 'next/server'
4+ import { getProxyConfig } from "@/proxy-config"
5+
6+ const TIMEOUT_DURATION = 60000 ;
7+
8+ // 定义超时 Promise 的类型
9+ type TimeoutPromise = Promise < never >
10+
11+ export async function GET ( request : NextRequest ) : Promise < Response > {
12+ try {
13+ const { isEnabled } = getProxyConfig ( ) ;
14+
15+ if ( isEnabled ) {
16+ // 使用超时机制
17+ const timeoutPromise : TimeoutPromise = new Promise ( ( _ , reject ) =>
18+ setTimeout ( ( ) => reject ( new Error ( 'Request timeout' ) ) , TIMEOUT_DURATION )
19+ ) ;
20+ const response = await Promise . race ( [ handlers . GET ( request ) , timeoutPromise ] ) ;
21+ return response instanceof Response ? response : NextResponse . json ( response ) ;
22+ } else {
23+ // 不使用超时机制
24+ const response = await handlers . GET ( request ) ;
25+ return response instanceof Response ? response : NextResponse . json ( response ) ;
26+ }
27+ } catch ( error ) {
28+ console . error ( 'Auth GET Error:' , error ) ;
29+ return NextResponse . json (
30+ {
31+ error : 'Authentication error' ,
32+ details : error instanceof Error ? error . message : 'Unknown error' ,
33+ timestamp : new Date ( ) . toISOString ( )
34+ } ,
35+ { status : 500 }
36+ ) ;
37+ }
38+ }
39+
40+ export async function POST ( request : NextRequest ) : Promise < Response > {
41+ try {
42+ const { isEnabled } = getProxyConfig ( ) ;
43+
44+ if ( isEnabled ) {
45+ // 使用超时机制
46+ const timeoutPromise : TimeoutPromise = new Promise ( ( _ , reject ) =>
47+ setTimeout ( ( ) => reject ( new Error ( 'Request timeout' ) ) , TIMEOUT_DURATION )
48+ ) ;
49+ const response = await Promise . race ( [ handlers . POST ( request ) , timeoutPromise ] ) ;
50+ return response instanceof Response ? response : NextResponse . json ( response ) ;
51+ } else {
52+ // 不使用超时机制
53+ const response = await handlers . POST ( request ) ;
54+ return response instanceof Response ? response : NextResponse . json ( response ) ;
55+ }
56+ } catch ( error ) {
57+ console . error ( 'Auth POST Error:' , error ) ;
58+ return NextResponse . json (
59+ {
60+ error : 'Authentication error' ,
61+ details : error instanceof Error ? error . message : 'Unknown error' ,
62+ timestamp : new Date ( ) . toISOString ( )
63+ } ,
64+ { status : 500 }
65+ ) ;
66+ }
67+ }
0 commit comments