Skip to content

Commit

Permalink
Go: Return error body with >= 300 errors (#7192)
Browse files Browse the repository at this point in the history
* Report better errors

* update tests
  • Loading branch information
antihax authored and wing328 committed Dec 18, 2017
1 parent ad7a820 commit dc69138
Show file tree
Hide file tree
Showing 9 changed files with 72 additions and 69 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,7 @@ public GoClientCodegen() {
importMapping = new HashMap<String, String>();
importMapping.put("time.Time", "time");
importMapping.put("*os.File", "os");
importMapping.put("os", "io/ioutil");


cliOptions.clear();
cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "Go package name (convention: lowercase).")
.defaultValue("swagger"));
Expand Down
4 changes: 3 additions & 1 deletion modules/swagger-codegen/src/main/resources/go/api.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package {{packageName}}

{{#operations}}
import (
"io/ioutil"
"net/url"
"net/http"
"strings"
Expand Down Expand Up @@ -212,7 +213,8 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx context.Context{{#hasParams}
}
defer localVarHttpResponse.Body.Close()
if localVarHttpResponse.StatusCode >= 300 {
return {{#returnType}}successPayload, {{/returnType}}localVarHttpResponse, reportError(localVarHttpResponse.Status)
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
return {{#returnType}}successPayload, {{/returnType}}localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
}
{{#returnType}}

Expand Down
4 changes: 3 additions & 1 deletion samples/client/petstore/go/go-petstore/another_fake_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
package petstore

import (
"io/ioutil"
"net/url"
"net/http"
"strings"
Expand Down Expand Up @@ -80,7 +81,8 @@ func (a *AnotherFakeApiService) TestSpecialTags(ctx context.Context, body Client
}
defer localVarHttpResponse.Body.Close()
if localVarHttpResponse.StatusCode >= 300 {
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
}

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

This file was deleted.

28 changes: 19 additions & 9 deletions samples/client/petstore/go/go-petstore/fake_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
package petstore

import (
"io/ioutil"
"net/url"
"net/http"
"strings"
Expand Down Expand Up @@ -83,7 +84,8 @@ func (a *FakeApiService) FakeOuterBooleanSerialize(ctx context.Context, localVar
}
defer localVarHttpResponse.Body.Close()
if localVarHttpResponse.StatusCode >= 300 {
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
}

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

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

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

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

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

return localVarHttpResponse, err
Expand Down Expand Up @@ -606,7 +613,8 @@ func (a *FakeApiService) TestEnumParameters(ctx context.Context, localVarOptiona
}
defer localVarHttpResponse.Body.Close()
if localVarHttpResponse.StatusCode >= 300 {
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
}

return localVarHttpResponse, err
Expand Down Expand Up @@ -664,7 +672,8 @@ func (a *FakeApiService) TestInlineAdditionalProperties(ctx context.Context, par
}
defer localVarHttpResponse.Body.Close()
if localVarHttpResponse.StatusCode >= 300 {
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
}

return localVarHttpResponse, err
Expand Down Expand Up @@ -723,7 +732,8 @@ func (a *FakeApiService) TestJsonFormData(ctx context.Context, param string, par
}
defer localVarHttpResponse.Body.Close()
if localVarHttpResponse.StatusCode >= 300 {
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
}

return localVarHttpResponse, err
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
package petstore

import (
"io/ioutil"
"net/url"
"net/http"
"strings"
Expand Down Expand Up @@ -91,7 +92,8 @@ func (a *FakeClassnameTags123ApiService) TestClassname(ctx context.Context, body
}
defer localVarHttpResponse.Body.Close()
if localVarHttpResponse.StatusCode >= 300 {
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
}

if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
Expand Down
26 changes: 17 additions & 9 deletions samples/client/petstore/go/go-petstore/pet_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@
package petstore

import (
"io/ioutil"
"net/url"
"net/http"
"strings"
"golang.org/x/net/context"
"os"
"io/ioutil"
"encoding/json"
"fmt"
)
Expand Down Expand Up @@ -83,7 +83,8 @@ func (a *PetApiService) AddPet(ctx context.Context, body Pet) ( *http.Response,
}
defer localVarHttpResponse.Body.Close()
if localVarHttpResponse.StatusCode >= 300 {
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
}

return localVarHttpResponse, err
Expand Down Expand Up @@ -150,7 +151,8 @@ func (a *PetApiService) DeletePet(ctx context.Context, petId int64, localVarOpti
}
defer localVarHttpResponse.Body.Close()
if localVarHttpResponse.StatusCode >= 300 {
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
}

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

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

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

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

return localVarHttpResponse, err
Expand Down Expand Up @@ -491,7 +497,8 @@ func (a *PetApiService) UpdatePetWithForm(ctx context.Context, petId int64, loca
}
defer localVarHttpResponse.Body.Close()
if localVarHttpResponse.StatusCode >= 300 {
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
}

return localVarHttpResponse, err
Expand Down Expand Up @@ -569,7 +576,8 @@ func (a *PetApiService) UploadFile(ctx context.Context, petId int64, localVarOpt
}
defer localVarHttpResponse.Body.Close()
if localVarHttpResponse.StatusCode >= 300 {
return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
return successPayload, localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
}

if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
Expand Down
13 changes: 9 additions & 4 deletions samples/client/petstore/go/go-petstore/store_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
package petstore

import (
"io/ioutil"
"net/url"
"net/http"
"strings"
Expand Down Expand Up @@ -80,7 +81,8 @@ func (a *StoreApiService) DeleteOrder(ctx context.Context, orderId string) ( *ht
}
defer localVarHttpResponse.Body.Close()
if localVarHttpResponse.StatusCode >= 300 {
return localVarHttpResponse, reportError(localVarHttpResponse.Status)
bodyBytes, _ := ioutil.ReadAll(localVarHttpResponse.Body)
return localVarHttpResponse, reportError("Status: %v, Body: %s", localVarHttpResponse.Status, bodyBytes)
}

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

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

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

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

0 comments on commit dc69138

Please sign in to comment.