open / app.js
maltose1's picture
Upload 5 files
f290067 verified
import { serve } from "https://deno.land/std/http/server.ts";
const handler = async (request) => {
const url = new URL(request.url);
// Handle CORS preflight requests
if (request.method === "OPTIONS") {
return new Response(null, {
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "POST, GET, OPTIONS",
"Access-Control-Allow-Headers": "Content-Type, Authorization",
"Access-Control-Max-Age": "86400",
},
});
}
const TOKEN = Deno.env.get("TOKEN");
// Authentication check
if (TOKEN) {
const authHeader = request.headers.get("Authorization");
if (!authHeader || authHeader !== `Bearer ${TOKEN}`) {
return new Response("Unauthorized", {
status: 401,
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
},
});
}
}
// Handle /v1/models endpoint
if (url.pathname === "/v1/models" && request.method === "GET") {
const models = {
object: "list",
data: [
{
id: "deepseek-ai/DeepSeek-R1-0528-Turbo",
object: "model",
created: 1624980000,
owned_by: "deepseek-ai",
},
{
id: "deepseek-ai/DeepSeek-V3-0324-Turbo",
object: "model",
created: 1632000000,
owned_by: "deepseek-ai",
},
{
id: "deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
object: "model",
created: 1640000000,
owned_by: "deepseek-ai",
},
{
id: "zai-org/GLM-4.6",
object: "model",
created: 1720000000,
owned_by: "zai-org",
},
{
id: "moonshotai/Kimi-K2-Instruct",
object: "model",
created: 1721000000,
owned_by: "moonshotai",
},
{
id: "deepseek-ai/DeepSeek-V3.2-Exp",
object: "model",
created: 1722000000,
owned_by: "deepseek-ai",
},
{
id: "deepseek-ai/DeepSeek-V3.1-Terminus",
object: "model",
created: 1723000000,
owned_by: "deepseek-ai",
},
],
};
return new Response(JSON.stringify(models), {
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
},
});
}
// Handle chat completions
if (url.pathname === "/v1/chat/completions" && request.method === "POST") {
try {
const body = await request.json();
const headers = new Headers({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0",
"Accept": "text/event-stream",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Content-Type": "application/json",
"sec-ch-ua-platform": "Windows",
"X-Deepinfra-Source": "web-page",
"sec-ch-ua": '"Not(A:Brand";v="99", "Microsoft Edge";v="133", "Chromium";v="133"',
"sec-ch-ua-mobile": "?0",
"Origin": "https://deepinfra.com",
"Sec-Fetch-Site": "same-site",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Dest": "empty",
"Referer": "https://deepinfra.com/",
});
const response = await fetch("https://api.deepinfra.com/v1/openai/chat/completions", {
method: "POST",
headers: headers,
body: JSON.stringify(body),
});
return new Response(response.body, {
status: response.status,
statusText: response.statusText,
headers: {
"Access-Control-Allow-Origin": "*",
"Content-Type": response.headers.get("Content-Type") || "application/json",
},
});
} catch (error) {
return new Response(JSON.stringify({ error: error.message }), {
status: 500,
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
},
});
}
}
return new Response("Not Found", {
status: 404,
headers: {
"Access-Control-Allow-Origin": "*",
}
});
};
const port = Deno.env.get("PORT") ? parseInt(Deno.env.get("PORT")) : 7860;
console.log(`HTTP server running. Access it at: http://localhost:${port}/`);
serve(handler, { port });