Skip to content

Commit fba5a1d

Browse files
authored
fix: list of stringified json marshaling (#82)
1 parent 5b57605 commit fba5a1d

File tree

3 files changed

+59
-5
lines changed

3 files changed

+59
-5
lines changed

examples/go/unit/unit_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,3 +163,39 @@ func TestArrayTypeParam(t *testing.T) {
163163
twilio := openapi.NewApiServiceWithClient(testClient)
164164
twilio.CreateCallRecording("CA1234", &params)
165165
}
166+
167+
func TestObjectArrayTypeParam(t *testing.T) {
168+
item1 := map[string]interface{}{
169+
"key1": "value1",
170+
"key2": 2,
171+
}
172+
item2 := map[string]interface{}{
173+
"key1": "value3",
174+
"key2": 4,
175+
}
176+
testObjectArrayParam := []map[string]interface{}{item1, item2}
177+
params := openapi.CreateCredentialAwsParams{}
178+
params.SetTestObjectArray(testObjectArrayParam)
179+
180+
expectedData := url.Values{}
181+
for _, item := range testObjectArrayParam {
182+
obj, _ := json.Marshal(item)
183+
expectedData.Add("TestObjectArray", string(obj))
184+
}
185+
186+
mockCtrl := gomock.NewController(t)
187+
testClient := NewMockBaseClient(mockCtrl)
188+
testClient.EXPECT().SendRequest(
189+
gomock.Any(),
190+
gomock.Any(),
191+
gomock.Any(),
192+
gomock.Any()).
193+
DoAndReturn(func(method string, rawURL string, data url.Values,
194+
headers map[string]interface{}) (*http.Response, error) {
195+
assert.Equal(t, expectedData, data)
196+
return &http.Response{Body: ioutil.NopCloser(bytes.NewReader(nil))}, nil
197+
},
198+
)
199+
twilio := openapi.NewApiServiceWithClient(testClient)
200+
twilio.CreateCredentialAws(&params)
201+
}

examples/twilio_api_v2010.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,11 @@ paths:
287287
- consumer-checking
288288
- consumer-savings
289289
- commercial-checking
290+
TestObjectArray:
291+
description: test array of object transformation
292+
items:
293+
type: object
294+
type: array
290295
required:
291296
- Credentials
292297
title: CreateCredentialAwsRequest

src/main/resources/twilio-go/api.mustache

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,26 @@ func (c *ApiService) {{{nickname}}}({{#allParams}}{{#required}}{{paramName}} {{{
5858
{{^isHeaderParam}}
5959
if params != nil && params.{{paramName}} != nil {
6060
{{#isFreeFormObject}}
61-
v, err := json.Marshal(params.{{paramName}})
61+
{{#isArray}}
62+
for _, item := range *params.{{paramName}} {
63+
v, err := json.Marshal(item)
6264
63-
if err != nil {
64-
return nil, err
65-
}
65+
if err != nil {
66+
return nil, err
67+
}
68+
69+
data.Add("{{{baseName}}}", string(v))
70+
}
71+
{{/isArray}}
72+
{{^isArray}}
73+
v, err := json.Marshal(params.{{paramName}})
6674

67-
data.Set("{{{baseName}}}", string(v))
75+
if err != nil {
76+
return nil, err
77+
}
78+
79+
data.Set("{{{baseName}}}", string(v))
80+
{{/isArray}}
6881
{{/isFreeFormObject}}
6982
{{^isFreeFormObject}}
7083
{{#isArray}}

0 commit comments

Comments
 (0)