- Added a new linting command for OpenAPI specifications in the package.json, improving code quality checks. - Updated frontend documentation to clarify component usage and structure, including detailed descriptions for `SettingsShell` and `Auth callback`. - Refactored agent-related API routes to streamline control-plane functionalities, consolidating multiple routes for better organization. - Improved error handling in the API to provide more informative responses for validation errors, enhancing user feedback during interactions. These changes enhance the overall development experience and improve the management of agents within the application.
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import type { FastifyPluginAsync } from 'fastify'
|
|
import { repos } from '@evofw/db'
|
|
import { AppError } from '../plugins/error-handler.js'
|
|
|
|
export const integrationsEvobgpRoutes: FastifyPluginAsync = async (app) => {
|
|
/** Proxy EvoBGP communities for UI autocomplete. */
|
|
app.get('/integrations/evobgp/communities', async () => {
|
|
const apiUrl = repos.getSetting(app.db, 'evobgp_api_url')
|
|
const token = repos.getSetting(app.db, 'evobgp_api_token')
|
|
if (!apiUrl || !token) {
|
|
throw new AppError(
|
|
'VALIDATION_ERROR',
|
|
'Настройте evobgp_api_url и evobgp_api_token',
|
|
400,
|
|
)
|
|
}
|
|
const base = apiUrl.replace(/\/$/, '')
|
|
const res = await fetch(`${base}/v1/communities?limit=200`, {
|
|
headers: {
|
|
Authorization: `Bearer ${token}`,
|
|
Accept: 'application/json',
|
|
},
|
|
signal: AbortSignal.timeout(20_000),
|
|
})
|
|
if (!res.ok) {
|
|
throw new AppError(
|
|
'UPSTREAM_ERROR',
|
|
`EvoBGP communities HTTP ${res.status}`,
|
|
502,
|
|
)
|
|
}
|
|
const data = (await res.json()) as {
|
|
items?: {
|
|
id?: string
|
|
community?: string
|
|
title?: string | null
|
|
}[]
|
|
}
|
|
const items = (data.items ?? [])
|
|
.filter((x) => x.id && x.community)
|
|
.map((x) => ({
|
|
id: x.id!,
|
|
community: x.community!,
|
|
title: x.title ?? null,
|
|
}))
|
|
return { items }
|
|
})
|
|
}
|