internal/adminapi/connector_event_diagnostic_handler.go
Rama main · réplica de lectura del repositorio original.
package adminapi
import (
"context"
"net/http"
"strconv"
"strings"
"github.com/yeomyeonggeori/blueclaw/internal/connectors"
)
type ConnectorEventDiagnosticRepository interface {
ListConnectorEventDiagnostics(context.Context, connectors.EventDiagnosticFilter) ([]connectors.EventDiagnostic, error)
}
type ConnectorEventDiagnosticHandler struct {
Repository ConnectorEventDiagnosticRepository
}
func (handler ConnectorEventDiagnosticHandler) HandleList(responseWriter http.ResponseWriter, request *http.Request) {
if handler.Repository == nil {
http.Error(responseWriter, "connector event diagnostics are unavailable", http.StatusServiceUnavailable)
return
}
diagnostics, errorValue := handler.Repository.ListConnectorEventDiagnostics(request.Context(), connectorEventDiagnosticFilter(request))
if errorValue != nil {
http.Error(responseWriter, errorValue.Error(), http.StatusInternalServerError)
return
}
writeJSON(responseWriter, http.StatusOK, diagnostics)
}
func connectorEventDiagnosticFilter(request *http.Request) connectors.EventDiagnosticFilter {
query := request.URL.Query()
return connectors.EventDiagnosticFilter{
Platform: strings.TrimSpace(query.Get("platform")),
ConversationID: strings.TrimSpace(query.Get("conversationID")),
MessageID: strings.TrimSpace(query.Get("messageID")),
Limit: connectorEventDiagnosticLimit(query.Get("limit")),
}
}
func connectorEventDiagnosticLimit(value string) int {
limit, errorValue := strconv.Atoi(strings.TrimSpace(value))
if errorValue != nil {
return 20
}
if limit <= 0 {
return 20
}
if limit > 50 {
return 50
}
return limit
}