Skip to content

Commit e58bee9

Browse files
committed
[go] support io.Reader response types in client decode
The Go generator emits *os.File for type: string / format: binary by default; callers can override that with --type-mappings to get io.Reader. The shared decode helper, however, only branches on *string, *os.File and **os.File — when the generated Execute method declares localVarReturnValue io.Reader, decode is called with v = *io.Reader, none of the existing assertions match and the call fails with "undefined response type". Add an *io.Reader branch right after the *string branch (mirroring the io.Reader-first preference in setBody) that wraps the already-buffered response bytes in a bytes.Reader. Bytes are pre-slurped by the caller for shared error/success handling, so a wrapping reader is the smallest correct fix. Regenerated the eleven affected Go samples.
1 parent 2114edc commit e58bee9

12 files changed

Lines changed: 48 additions & 0 deletions

File tree

modules/openapi-generator/src/main/resources/go/client.mustache

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,10 @@ func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err err
539539
*s = string(b)
540540
return nil
541541
}
542+
if r, ok := v.(*io.Reader); ok {
543+
*r = bytes.NewReader(b)
544+
return nil
545+
}
542546
if f, ok := v.(*os.File); ok {
543547
f, err = os.CreateTemp("", "HttpClientFile")
544548
if err != nil {

samples/client/echo_api/go-external-refs/client.go

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

samples/client/echo_api/go/client.go

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

samples/client/others/go/allof_multiple_ref_and_discriminator/client.go

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

samples/client/others/go/oneof-anyof-required/client.go

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

samples/client/others/go/oneof-discriminator-lookup/client.go

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

samples/client/petstore/go/go-petstore/client.go

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

samples/openapi3/client/extensions/x-auth-id-alias/go-experimental/client.go

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

samples/openapi3/client/petstore/go-petstore-generateMarshalJSON-false/client.go

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

samples/openapi3/client/petstore/go-petstore-withXml/client.go

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

0 commit comments

Comments
 (0)