import { join } from 'node:path'; import { createRouter } from '../../create-router'; import { DATA_PATH } from '../../data-path'; export const searxngRouter = createRouter(); const SEARXNG_FILE = join(DATA_PATH, 'searxng.json'); const DEFAULT_URL = 'https://searxng.home.pastilhas.eu'; export type SearxngConfig = { url: string; }; export async function readSearxngConfig(): Promise { try { const file = Bun.file(SEARXNG_FILE); if (!(await file.exists())) return { url: DEFAULT_URL }; return (await file.json()) as SearxngConfig; } catch { return { url: DEFAULT_URL }; } } async function writeSearxngConfig(config: SearxngConfig) { await Bun.write(SEARXNG_FILE, JSON.stringify(config, null, 2)); } searxngRouter.get('/', async (ctx) => { return ctx.json(await readSearxngConfig()); }); searxngRouter.put('/', async (ctx) => { const { url } = await ctx.req.json<{ url: string }>(); if (!url?.trim()) return ctx.json({ error: 'URL is required' }, 400); const config: SearxngConfig = { url: url.trim().replace(/\/+$/, '') }; await writeSearxngConfig(config); return ctx.json(config); });