Files
AzerothAI/app/api/bridge/ale/poll/route.ts
2026-09-25 22:57:11 +02:00

23 lines
1.2 KiB
TypeScript

import {classicMode} from '@/core/classic';
import { env } from 'cloudflare:workers';
import { requireAleBridge } from '@/core/ale-auth';
import { pollAleCommand } from '@/core/ale-store';
import { wrapAleCommand } from '@/core/ale';
import type { RuntimeConfig } from '@/core/types';
async function handlePoll(request:Request){
const config=env as unknown as RuntimeConfig;
try{
requireAleBridge(request,config);
const command=await pollAleCommand(env.DB!);
if(!command)return new Response(classicMode(config)?'null':'return',{status:200,headers:{'Content-Type':'text/plain; charset=utf-8','Cache-Control':'no-store'}});
return new Response(classicMode(config)?command.source:wrapAleCommand(command.id,command.source),{status:200,headers:{'Content-Type':'text/plain; charset=utf-8','Cache-Control':'no-store','X-AzerothAI-Command':command.id}});
}catch(e){
const message=e instanceof Error?e.message:'ALE bridge failure';
return Response.json({error:message},{status:message.startsWith('Unauthorized')?401:500});
}
}
export async function GET(request:Request){ return handlePoll(request); }
export async function POST(request:Request){ return handlePoll(request); }