Ka-Note/ka-note/server/src/routes/calendar.ts

31 lines
934 B
TypeScript

import { Hono } from 'hono';
import type { AuthEnv } from '../middleware/auth.js';
import { getCalendarEvents } from '../lib/graph-service.js';
const calendar = new Hono<AuthEnv>();
const DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
calendar.get('/events', async (c) => {
const date = c.req.query('date') ?? '';
if (!DATE_RE.test(date)) {
return c.json({ error: 'date param required (YYYY-MM-DD)' }, 400);
}
const auth = c.get('auth');
if (!auth.email) {
return c.json({ error: 'graph_unavailable', detail: 'No email in auth context (API key or dev-bypass)' }, 502);
}
try {
const events = await getCalendarEvents(auth.email, date);
return c.json(events);
} catch (err) {
console.error('[calendar] Graph error:', err instanceof Error ? err.message : err);
return c.json({ error: 'graph_unavailable', detail: err instanceof Error ? err.message : String(err) }, 502);
}
});
export default calendar;