Skip to content

Commit 9aeaed3

Browse files
fix: add x-go-name for server urls (#2304)
* fix: add x-go-name for server urls * Update pkg/codegen/server_urls.go do not swallow the extGoName error from automated review bot Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
1 parent 9ea3cc7 commit 9aeaed3

File tree

4 files changed

+37
-5
lines changed

4 files changed

+37
-5
lines changed

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: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,24 @@ 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+
customName, err := extParseGoFieldName(goNameExt)
30+
if err != nil {
31+
return "", fmt.Errorf("invalid value for %q: %w", extGoName, err)
32+
}
33+
if customName != "" {
34+
name = customName
35+
}
36+
}
37+
if name == "" {
38+
suffix := server.Description
39+
if suffix == "" {
40+
suffix = nameNormalizer(server.URL)
41+
}
42+
name = serverURLPrefix + UppercaseFirstCharacter(suffix)
43+
name = nameNormalizer(name)
3044
}
31-
name := serverURLPrefix + UppercaseFirstCharacter(suffix)
32-
name = nameNormalizer(name)
3345

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

0 commit comments

Comments
 (0)