You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			83 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
		
		
			
		
	
	
			83 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
| 
											9 months ago
										 | import { ApiPath } from "@/app/constant"; | ||
|  | import { NextRequest } from "next/server"; | ||
|  | import { handle as openaiHandler } from "../../openai"; | ||
|  | import { handle as azureHandler } from "../../azure"; | ||
|  | import { handle as googleHandler } from "../../google"; | ||
|  | import { handle as anthropicHandler } from "../../anthropic"; | ||
|  | import { handle as baiduHandler } from "../../baidu"; | ||
|  | import { handle as bytedanceHandler } from "../../bytedance"; | ||
|  | import { handle as alibabaHandler } from "../../alibaba"; | ||
|  | import { handle as moonshotHandler } from "../../moonshot"; | ||
|  | import { handle as stabilityHandler } from "../../stability"; | ||
|  | import { handle as iflytekHandler } from "../../iflytek"; | ||
|  | import { handle as deepseekHandler } from "../../deepseek"; | ||
|  | import { handle as siliconflowHandler } from "../../siliconflow"; | ||
|  | import { handle as xaiHandler } from "../../xai"; | ||
|  | import { handle as chatglmHandler } from "../../glm"; | ||
|  | import { handle as proxyHandler } from "../../proxy"; | ||
|  | 
 | ||
|  | 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.DeepSeek: | ||
|  |       return deepseekHandler(req, { params }); | ||
|  |     case ApiPath.XAI: | ||
|  |       return xaiHandler(req, { params }); | ||
|  |     case ApiPath.ChatGLM: | ||
|  |       return chatglmHandler(req, { params }); | ||
|  |     case ApiPath.SiliconFlow: | ||
|  |       return siliconflowHandler(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", | ||
|  | ]; |