Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions internal/api/handlers/v0/registry_error.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package v0

import (
"context"
"errors"
"log"

"github.com/danielgtaylor/huma/v2"
)

// RegistryError maps registry errors to HTTP responses; client disconnects
// must not log as 500s.
func RegistryError(ctx context.Context, err error, logPrefix string, userMsg string) error {
if err == nil {
return nil
}
if errors.Is(err, context.Canceled) || errors.Is(ctx.Err(), context.Canceled) {
return huma.NewError(499, "Client closed request", err)
}
log.Printf("%s failed: %v", logPrefix, err)
return huma.Error500InternalServerError(userMsg)
}
7 changes: 2 additions & 5 deletions internal/api/handlers/v0/servers.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package v0
import (
"context"
"errors"
"log"
"net/http"
"net/url"
"reflect"
Expand Down Expand Up @@ -185,8 +184,7 @@ func RegisterServersEndpoints(api huma.API, pathPrefix string, registry service.
if err.Error() == errRecordNotFound || errors.Is(err, database.ErrNotFound) {
return nil, huma.Error404NotFound("Server not found")
}
log.Printf("get server details (%q/%q) failed: %v", serverName, version, err)
return nil, huma.Error500InternalServerError("Failed to get server details")
return nil, RegistryError(ctx, err, "get server details ("+serverName+"/"+version+")", "Failed to get server details")
}

return &Response[apiv0.ServerResponse]{
Expand Down Expand Up @@ -215,8 +213,7 @@ func RegisterServersEndpoints(api huma.API, pathPrefix string, registry service.
if err.Error() == errRecordNotFound || errors.Is(err, database.ErrNotFound) {
return nil, huma.Error404NotFound("Server not found")
}
log.Printf("get server versions (%q) failed: %v", serverName, err)
return nil, huma.Error500InternalServerError("Failed to get server versions")
return nil, RegistryError(ctx, err, "get server versions ("+serverName+")", "Failed to get server versions")
}

// Convert []*ServerResponse to []ServerResponse
Expand Down
Loading