Skip to content

Commit dc69138

Browse files
antihaxwing328
authored andcommitted
Go: Return error body with >= 300 errors (#7192)
* Report better errors * update tests
1 parent ad7a820 commit dc69138

File tree

9 files changed

+72
-69
lines changed

9 files changed

+72
-69
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/GoClientCodegen.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,7 @@ public GoClientCodegen() {
111111
importMapping = new HashMap<String, String>();
112112
importMapping.put("time.Time", "time");
113113
importMapping.put("*os.File", "os");
114-
importMapping.put("os", "io/ioutil");
115-
114+
116115
cliOptions.clear();
117116
cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "Go package name (convention: lowercase).")
118117
.defaultValue("swagger"));

modules/swagger-codegen/src/main/resources/go/api.mustache

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package {{packageName}}
33

44
{{#operations}}
55
import (
6+
"io/ioutil"
67
"net/url"
78
"net/http"
89
"strings"
@@ -212,7 +213,8 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx context.Context{{#hasParams}
212213
}
213214
defer localVarHttpResponse.Body.Close()
214215
if localVarHttpResponse.StatusCode >= 300 {
215-
return {{#returnType}}successPayload, {{/returnType}}localVarHttpResponse, reportError(localVarHttpResponse.Status)
216+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
217+
return {{#returnType}}successPayload, {{/returnType}}localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
216218
}
217219
{{#returnType}}
218220

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
package petstore
1212

1313
import (
14+
"io/ioutil"
1415
"net/url"
1516
"net/http"
1617
"strings"
@@ -80,7 +81,8 @@ func (a *AnotherFakeApiService) TestSpecialTags(ctx context.Context, body Client
8081
}
8182
defer localVarHttpResponse.Body.Close()
8283
if localVarHttpResponse.StatusCode >= 300 {
83-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
84+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
85+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
8486
}
8587

8688
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {

samples/client/petstore/go/go-petstore/docs/Fake_classname_tags123Api.md

Lines changed: 0 additions & 34 deletions
This file was deleted.

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

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
package petstore
1212

1313
import (
14+
"io/ioutil"
1415
"net/url"
1516
"net/http"
1617
"strings"
@@ -83,7 +84,8 @@ func (a *FakeApiService) FakeOuterBooleanSerialize(ctx context.Context, localVar
8384
}
8485
defer localVarHttpResponse.Body.Close()
8586
if localVarHttpResponse.StatusCode >= 300 {
86-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
87+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
88+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
8789
}
8890

8991
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
@@ -150,7 +152,8 @@ func (a *FakeApiService) FakeOuterCompositeSerialize(ctx context.Context, localV
150152
}
151153
defer localVarHttpResponse.Body.Close()
152154
if localVarHttpResponse.StatusCode >= 300 {
153-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
155+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
156+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
154157
}
155158

156159
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
@@ -217,7 +220,8 @@ func (a *FakeApiService) FakeOuterNumberSerialize(ctx context.Context, localVarO
217220
}
218221
defer localVarHttpResponse.Body.Close()
219222
if localVarHttpResponse.StatusCode >= 300 {
220-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
223+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
224+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
221225
}
222226

223227
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
@@ -284,7 +288,8 @@ func (a *FakeApiService) FakeOuterStringSerialize(ctx context.Context, localVarO
284288
}
285289
defer localVarHttpResponse.Body.Close()
286290
if localVarHttpResponse.StatusCode >= 300 {
287-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
291+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
292+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
288293
}
289294

290295
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
@@ -349,7 +354,8 @@ func (a *FakeApiService) TestClientModel(ctx context.Context, body Client) (Clie
349354
}
350355
defer localVarHttpResponse.Body.Close()
351356
if localVarHttpResponse.StatusCode >= 300 {
352-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
357+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
358+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
353359
}
354360

355361
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
@@ -502,7 +508,8 @@ func (a *FakeApiService) TestEndpointParameters(ctx context.Context, number floa
502508
}
503509
defer localVarHttpResponse.Body.Close()
504510
if localVarHttpResponse.StatusCode >= 300 {
505-
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
511+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
512+
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
506513
}
507514

508515
return localVarHttpResponse, err
@@ -606,7 +613,8 @@ func (a *FakeApiService) TestEnumParameters(ctx context.Context, localVarOptiona
606613
}
607614
defer localVarHttpResponse.Body.Close()
608615
if localVarHttpResponse.StatusCode >= 300 {
609-
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
616+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
617+
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
610618
}
611619

612620
return localVarHttpResponse, err
@@ -664,7 +672,8 @@ func (a *FakeApiService) TestInlineAdditionalProperties(ctx context.Context, par
664672
}
665673
defer localVarHttpResponse.Body.Close()
666674
if localVarHttpResponse.StatusCode >= 300 {
667-
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
675+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
676+
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
668677
}
669678

670679
return localVarHttpResponse, err
@@ -723,7 +732,8 @@ func (a *FakeApiService) TestJsonFormData(ctx context.Context, param string, par
723732
}
724733
defer localVarHttpResponse.Body.Close()
725734
if localVarHttpResponse.StatusCode >= 300 {
726-
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
735+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
736+
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
727737
}
728738

729739
return localVarHttpResponse, err

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
package petstore
1212

1313
import (
14+
"io/ioutil"
1415
"net/url"
1516
"net/http"
1617
"strings"
@@ -91,7 +92,8 @@ func (a *FakeClassnameTags123ApiService) TestClassname(ctx context.Context, body
9192
}
9293
defer localVarHttpResponse.Body.Close()
9394
if localVarHttpResponse.StatusCode >= 300 {
94-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
95+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
96+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
9597
}
9698

9799
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {

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

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
package petstore
1212

1313
import (
14+
"io/ioutil"
1415
"net/url"
1516
"net/http"
1617
"strings"
1718
"golang.org/x/net/context"
1819
"os"
19-
"io/ioutil"
2020
"encoding/json"
2121
"fmt"
2222
)
@@ -83,7 +83,8 @@ func (a *PetApiService) AddPet(ctx context.Context, body Pet) ( *http.Response,
8383
}
8484
defer localVarHttpResponse.Body.Close()
8585
if localVarHttpResponse.StatusCode >= 300 {
86-
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
86+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
87+
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
8788
}
8889

8990
return localVarHttpResponse, err
@@ -150,7 +151,8 @@ func (a *PetApiService) DeletePet(ctx context.Context, petId int64, localVarOpti
150151
}
151152
defer localVarHttpResponse.Body.Close()
152153
if localVarHttpResponse.StatusCode >= 300 {
153-
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
154+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
155+
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
154156
}
155157

156158
return localVarHttpResponse, err
@@ -210,7 +212,8 @@ func (a *PetApiService) FindPetsByStatus(ctx context.Context, status []string) (
210212
}
211213
defer localVarHttpResponse.Body.Close()
212214
if localVarHttpResponse.StatusCode >= 300 {
213-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
215+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
216+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
214217
}
215218

216219
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
@@ -275,7 +278,8 @@ func (a *PetApiService) FindPetsByTags(ctx context.Context, tags []string) ([]Pe
275278
}
276279
defer localVarHttpResponse.Body.Close()
277280
if localVarHttpResponse.StatusCode >= 300 {
278-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
281+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
282+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
279283
}
280284

281285
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
@@ -352,7 +356,8 @@ func (a *PetApiService) GetPetById(ctx context.Context, petId int64) (Pet, *htt
352356
}
353357
defer localVarHttpResponse.Body.Close()
354358
if localVarHttpResponse.StatusCode >= 300 {
355-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
359+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
360+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
356361
}
357362

358363
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
@@ -417,7 +422,8 @@ func (a *PetApiService) UpdatePet(ctx context.Context, body Pet) ( *http.Respons
417422
}
418423
defer localVarHttpResponse.Body.Close()
419424
if localVarHttpResponse.StatusCode >= 300 {
420-
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
425+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
426+
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
421427
}
422428

423429
return localVarHttpResponse, err
@@ -491,7 +497,8 @@ func (a *PetApiService) UpdatePetWithForm(ctx context.Context, petId int64, loca
491497
}
492498
defer localVarHttpResponse.Body.Close()
493499
if localVarHttpResponse.StatusCode >= 300 {
494-
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
500+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
501+
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
495502
}
496503

497504
return localVarHttpResponse, err
@@ -569,7 +576,8 @@ func (a *PetApiService) UploadFile(ctx context.Context, petId int64, localVarOpt
569576
}
570577
defer localVarHttpResponse.Body.Close()
571578
if localVarHttpResponse.StatusCode >= 300 {
572-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
579+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
580+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
573581
}
574582

575583
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
package petstore
1212

1313
import (
14+
"io/ioutil"
1415
"net/url"
1516
"net/http"
1617
"strings"
@@ -80,7 +81,8 @@ func (a *StoreApiService) DeleteOrder(ctx context.Context, orderId string) ( *ht
8081
}
8182
defer localVarHttpResponse.Body.Close()
8283
if localVarHttpResponse.StatusCode >= 300 {
83-
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
84+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
85+
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
8486
}
8587

8688
return localVarHttpResponse, err
@@ -149,7 +151,8 @@ func (a *StoreApiService) GetInventory(ctx context.Context) (map[string]int32,
149151
}
150152
defer localVarHttpResponse.Body.Close()
151153
if localVarHttpResponse.StatusCode >= 300 {
152-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
154+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
155+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
153156
}
154157

155158
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
@@ -220,7 +223,8 @@ func (a *StoreApiService) GetOrderById(ctx context.Context, orderId int64) (Orde
220223
}
221224
defer localVarHttpResponse.Body.Close()
222225
if localVarHttpResponse.StatusCode >= 300 {
223-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
226+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
227+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
224228
}
225229

226230
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
@@ -286,7 +290,8 @@ func (a *StoreApiService) PlaceOrder(ctx context.Context, body Order) (Order, *
286290
}
287291
defer localVarHttpResponse.Body.Close()
288292
if localVarHttpResponse.StatusCode >= 300 {
289-
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
293+
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
294+
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
290295
}
291296

292297
if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {

0 commit comments

Comments
 (0)