From ed1f9c94b7eee4b7b50905417813f9f5f88f5168 Mon Sep 17 00:00:00 2001 From: Liooo Date: Sun, 6 Oct 2024 15:06:56 +0900 Subject: [PATCH] fix(gen): set Explode:false for multipart arrays --- gen/_template/request_decode.tmpl | 3 ++- internal/integration/test_form/oas_request_decoders_gen.go | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/gen/_template/request_decode.tmpl b/gen/_template/request_decode.tmpl index 97a65d42d..db1cfbc9d 100644 --- a/gen/_template/request_decode.tmpl +++ b/gen/_template/request_decode.tmpl @@ -235,7 +235,8 @@ func (s *{{ if $op.WebhookInfo }}Webhook{{ end }}Server) decode{{ $op.Name }}Req cfg := uri.QueryParameterDecodingConfig{ Name: {{ quote $p.Spec.Name }}, Style: uri.QueryStyle{{ capitalize $p.Spec.Style.String }}, - Explode: {{ if $p.Spec.Explode }}true{{ else }}false{{ end }}, + {{- /* NOTE: set Explode to false for multipart form arrays, see: https://github.com/ogen-go/ogen/pull/1323 */}} + Explode: {{ if and ($p.Spec.Explode) (ne $p.Type.Kind "array") }}true{{ else }}false{{ end }}, {{- if isObjectParam $p }} Fields: {{ paramObjectFields $p.Type }}, {{- end }} diff --git a/internal/integration/test_form/oas_request_decoders_gen.go b/internal/integration/test_form/oas_request_decoders_gen.go index d7b32b0fc..4f992d2ee 100644 --- a/internal/integration/test_form/oas_request_decoders_gen.go +++ b/internal/integration/test_form/oas_request_decoders_gen.go @@ -418,7 +418,7 @@ func (s *Server) decodeTestFormURLEncodedRequest(r *http.Request) ( cfg := uri.QueryParameterDecodingConfig{ Name: "array", Style: uri.QueryStyleForm, - Explode: true, + Explode: false, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error { @@ -636,7 +636,7 @@ func (s *Server) decodeTestMultipartRequest(r *http.Request) ( cfg := uri.QueryParameterDecodingConfig{ Name: "array", Style: uri.QueryStyleForm, - Explode: true, + Explode: false, } if err := q.HasParam(cfg); err == nil { if err := q.DecodeParam(cfg, func(d uri.Decoder) error {