31 lines
948 B
TypeScript
31 lines
948 B
TypeScript
import { auth } from '@/auth';
|
|
import { NextRequest, NextResponse } from 'next/server';
|
|
import { checkService, type ServiceCheckResult } from '@/src/lib/monitor/check-service';
|
|
import { serviceSchema } from '@/src/lib/config/schema';
|
|
|
|
function jsonError(message: string, status: number) {
|
|
return NextResponse.json({ error: message }, { status });
|
|
}
|
|
|
|
export async function POST(request: NextRequest) {
|
|
const session = await auth();
|
|
if (!session) {
|
|
return jsonError('Unauthorized', 401);
|
|
}
|
|
|
|
try {
|
|
const body = await request.json();
|
|
const service = serviceSchema.parse(body);
|
|
const result: ServiceCheckResult = await checkService(service);
|
|
|
|
return NextResponse.json(result);
|
|
} catch (error) {
|
|
console.error('Error testing service:', error);
|
|
|
|
if (error instanceof Error) {
|
|
return jsonError(`Failed to test service: ${error.message}`, 400);
|
|
}
|
|
|
|
return jsonError('Failed to test service', 500);
|
|
}
|
|
}
|