feat(api): expose websocket and sse transport flags

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Virgil 2026-04-02 08:48:28 +00:00
parent 83d12d6024
commit 192f8331f2
4 changed files with 26 additions and 0 deletions

View file

@ -29,7 +29,9 @@ type SpecBuilder struct {
GraphQLPath string
GraphQLPlayground bool
WSPath string
WSEnabled bool
SSEPath string
SSEEnabled bool
TermsOfService string
ContactName string
ContactURL string
@ -104,9 +106,15 @@ func (sb *SpecBuilder) Build(groups []RouteGroup) ([]byte, error) {
if wsPath := strings.TrimSpace(sb.WSPath); wsPath != "" {
spec["x-ws-path"] = normaliseOpenAPIPath(wsPath)
}
if sb.WSEnabled {
spec["x-ws-enabled"] = true
}
if ssePath := strings.TrimSpace(sb.SSEPath); ssePath != "" {
spec["x-sse-path"] = normaliseOpenAPIPath(ssePath)
}
if sb.SSEEnabled {
spec["x-sse-enabled"] = true
}
if sb.PprofEnabled {
spec["x-pprof-enabled"] = true
}

View file

@ -68,7 +68,9 @@ func (e *Engine) OpenAPISpecBuilder() *SpecBuilder {
builder.GraphQLPath = transport.GraphQLPath
builder.GraphQLPlayground = transport.GraphQLPlayground
builder.WSPath = transport.WSPath
builder.WSEnabled = transport.WSEnabled
builder.SSEPath = transport.SSEPath
builder.SSEEnabled = transport.SSEEnabled
builder.PprofEnabled = transport.PprofEnabled
builder.ExpvarEnabled = transport.ExpvarEnabled

View file

@ -84,9 +84,15 @@ func TestEngine_Good_OpenAPISpecBuilderCarriesEngineMetadata(t *testing.T) {
if got := spec["x-ws-path"]; got != "/socket" {
t.Fatalf("expected x-ws-path=/socket, got %v", got)
}
if got := spec["x-ws-enabled"]; got != true {
t.Fatalf("expected x-ws-enabled=true, got %v", got)
}
if got := spec["x-sse-path"]; got != "/events" {
t.Fatalf("expected x-sse-path=/events, got %v", got)
}
if got := spec["x-sse-enabled"]; got != true {
t.Fatalf("expected x-sse-enabled=true, got %v", got)
}
if got := spec["x-pprof-enabled"]; got != true {
t.Fatalf("expected x-pprof-enabled=true, got %v", got)
}
@ -314,9 +320,15 @@ func TestEngine_Good_TransportConfigCarriesEngineMetadata(t *testing.T) {
if !cfg.GraphQLPlayground {
t.Fatal("expected GraphQL playground to be enabled")
}
if !cfg.WSEnabled {
t.Fatal("expected WebSocket to be enabled")
}
if cfg.WSPath != "/socket" {
t.Fatalf("expected ws path /socket, got %q", cfg.WSPath)
}
if !cfg.SSEEnabled {
t.Fatal("expected SSE to be enabled")
}
if cfg.SSEPath != "/events" {
t.Fatalf("expected sse path /events, got %q", cfg.SSEPath)
}

View file

@ -18,7 +18,9 @@ type TransportConfig struct {
GraphQLPath string
GraphQLEnabled bool
GraphQLPlayground bool
WSEnabled bool
WSPath string
SSEEnabled bool
SSEPath string
PprofEnabled bool
ExpvarEnabled bool
@ -41,6 +43,8 @@ func (e *Engine) TransportConfig() TransportConfig {
SwaggerEnabled: e.swaggerEnabled,
GraphQLEnabled: e.graphql != nil,
GraphQLPlayground: e.graphql != nil && e.graphql.playground,
WSEnabled: e.wsHandler != nil,
SSEEnabled: e.sseBroker != nil,
PprofEnabled: e.pprofEnabled,
ExpvarEnabled: e.expvarEnabled,
}