31 lines
934 B
TypeScript
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;
|