77 lines
2.3 KiB
TypeScript
77 lines
2.3 KiB
TypeScript
import type { NextRequest } from 'next/server';
|
|
import { ApiPath } from '@/app/constant';
|
|
import { handle as alibabaHandler } from '../../alibaba';
|
|
import { handle as anthropicHandler } from '../../anthropic';
|
|
import { handle as azureHandler } from '../../azure';
|
|
import { handle as baiduHandler } from '../../baidu';
|
|
import { handle as bytedanceHandler } from '../../bytedance';
|
|
import { handle as chatglmHandler } from '../../glm';
|
|
import { handle as googleHandler } from '../../google';
|
|
import { handle as iflytekHandler } from '../../iflytek';
|
|
import { handle as moonshotHandler } from '../../moonshot';
|
|
import { handle as openaiHandler } from '../../openai';
|
|
import { handle as proxyHandler } from '../../proxy';
|
|
import { handle as stabilityHandler } from '../../stability';
|
|
import { handle as xaiHandler } from '../../xai';
|
|
|
|
async function handle(
|
|
req: NextRequest,
|
|
{ params }: { params: { provider: string; path: string[] } },
|
|
) {
|
|
const apiPath = `/api/${params.provider}`;
|
|
console.log(`[${params.provider} Route] params `, params);
|
|
switch (apiPath) {
|
|
case ApiPath.Azure:
|
|
return azureHandler(req, { params });
|
|
case ApiPath.Google:
|
|
return googleHandler(req, { params });
|
|
case ApiPath.Anthropic:
|
|
return anthropicHandler(req, { params });
|
|
case ApiPath.Baidu:
|
|
return baiduHandler(req, { params });
|
|
case ApiPath.ByteDance:
|
|
return bytedanceHandler(req, { params });
|
|
case ApiPath.Alibaba:
|
|
return alibabaHandler(req, { params });
|
|
// case ApiPath.Tencent: using "/api/tencent"
|
|
case ApiPath.Moonshot:
|
|
return moonshotHandler(req, { params });
|
|
case ApiPath.Stability:
|
|
return stabilityHandler(req, { params });
|
|
case ApiPath.Iflytek:
|
|
return iflytekHandler(req, { params });
|
|
case ApiPath.XAI:
|
|
return xaiHandler(req, { params });
|
|
case ApiPath.ChatGLM:
|
|
return chatglmHandler(req, { params });
|
|
case ApiPath.OpenAI:
|
|
return openaiHandler(req, { params });
|
|
default:
|
|
return proxyHandler(req, { params });
|
|
}
|
|
}
|
|
|
|
export const GET = handle;
|
|
export const POST = handle;
|
|
|
|
export const runtime = 'edge';
|
|
export const preferredRegion = [
|
|
'arn1',
|
|
'bom1',
|
|
'cdg1',
|
|
'cle1',
|
|
'cpt1',
|
|
'dub1',
|
|
'fra1',
|
|
'gru1',
|
|
'hnd1',
|
|
'iad1',
|
|
'icn1',
|
|
'kix1',
|
|
'lhr1',
|
|
'pdx1',
|
|
'sfo1',
|
|
'sin1',
|
|
'syd1',
|
|
];
|