UNPKG

siliconflow-serverless-client

Version:

![@siliconflow/siliconflow-js npm package](https://img.shields.io/npm/v/@siliconflow/siliconflow-js?color=%25237527D7&label=@siliconflow/siliconflow-js&style=flat-square)

59 lines (54 loc) 1.96 kB
import { type NextRequest, NextResponse } from "next/server"; import type { NextApiHandler } from "next/types"; import { DEFAULT_PROXY_ROUTE, fromHeaders, handleRequest } from "./index"; /** * The default Next API route for the siliconflow.com client proxy. */ export const PROXY_ROUTE = DEFAULT_PROXY_ROUTE; /** * The Next API route handler for the siliconflow.com client proxy. * Use it with the /pages router in Next.js. * * @param request the Next API request object. * @param response the Next API response object. * @returns a promise that resolves when the request is handled. */ export const handler: NextApiHandler = async (request, response) => { return handleRequest({ id: "nextjs-page-router", method: request.method || "POST", respondWith: (status, data) => response.status(status).json(data), getHeaders: () => request.headers, getHeader: (name) => request.headers[name], sendHeader: (name, value) => response.setHeader(name, value), getBody: async () => JSON.stringify(request.body), }); }; /** * The Next API route handler for the siliconflow.com client proxy on App Router apps. * * @param request the Next API request object. * @returns a promise that resolves when the request is handled. */ async function routeHandler(request: NextRequest) { // eslint-disable-next-line @typescript-eslint/no-explicit-any const responseHeaders: Record<string, any> = {}; return await handleRequest({ id: "nextjs-app-router", method: request.method, respondWith: (status, data) => NextResponse.json(data, { status, headers: responseHeaders, }), getHeaders: () => fromHeaders(request.headers), getHeader: (name) => request.headers.get(name), sendHeader: (name, value) => (responseHeaders[name] = value), getBody: async () => request.text(), }); } export const route = { handler: routeHandler, GET: routeHandler, POST: routeHandler, };