Skip to content

Commit 8ed8eca

Browse files
committed
fix: add x-go-name for server urls
1 parent c322d1a commit 8ed8eca

4 files changed

Lines changed: 33 additions & 5 deletions

File tree

‎examples/generate/serverurls/api.yaml‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,7 @@ servers:
4545
description: some lowercase name
4646
# there may be URLs on their own, without a `description`
4747
- url: http://localhost:443
48+
# x-go-name overrides the auto-generated Go name
49+
- url: https://api.example.com/v2
50+
description: Custom named server
51+
x-go-name: MyCustomAPIServer

‎examples/generate/serverurls/gen.go‎

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎examples/generate/serverurls/gen_test.go‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,9 @@ func TestServerUrlTheProductionAPIServer(t *testing.T) {
4646
assert.Equal(t, "https://demo.gigantic-server.com:8443/v2", serverUrl)
4747
})
4848
}
49+
50+
func TestXGoName(t *testing.T) {
51+
t.Run("x-go-name overrides the auto-generated server name", func(t *testing.T) {
52+
assert.Equal(t, "https://api.example.com/v2", MyCustomAPIServer)
53+
})
54+
}

‎pkg/codegen/server_urls.go‎

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,20 @@ func GenerateServerURLs(t *template.Template, spec *openapi3.T) (string, error)
2424
names := make(map[string]*openapi3.Server)
2525

2626
for _, server := range spec.Servers {
27-
suffix := server.Description
28-
if suffix == "" {
29-
suffix = nameNormalizer(server.URL)
27+
var name string
28+
if goNameExt, ok := server.Extensions[extGoName]; ok {
29+
if customName, err := extParseGoFieldName(goNameExt); err == nil && customName != "" {
30+
name = customName
31+
}
32+
}
33+
if name == "" {
34+
suffix := server.Description
35+
if suffix == "" {
36+
suffix = nameNormalizer(server.URL)
37+
}
38+
name = serverURLPrefix + UppercaseFirstCharacter(suffix)
39+
name = nameNormalizer(name)
3040
}
31-
name := serverURLPrefix + UppercaseFirstCharacter(suffix)
32-
name = nameNormalizer(name)
3341

3442
// if this is the only type with this name, store it
3543
if _, conflict := names[name]; !conflict {

0 commit comments

Comments
 (0)