28 lines
633 B
TypeScript
28 lines
633 B
TypeScript
import { connection } from "next/server";
|
|
|
|
import {
|
|
AdminAuthorizationError,
|
|
requireAdmin,
|
|
} from "@/lib/auth/server";
|
|
import {
|
|
createRedisEventResponse,
|
|
eventsUnavailableResponse,
|
|
} from "@/lib/events/redis-stream";
|
|
|
|
export async function GET(request: Request) {
|
|
await connection();
|
|
try {
|
|
await requireAdmin();
|
|
} catch (cause) {
|
|
if (cause instanceof AdminAuthorizationError) {
|
|
return Response.json({ error: "unauthorized" }, { status: 401 });
|
|
}
|
|
throw cause;
|
|
}
|
|
try {
|
|
return await createRedisEventResponse("admin", request.signal);
|
|
} catch {
|
|
return eventsUnavailableResponse();
|
|
}
|
|
}
|