[GO][SERVER] Implement response code (#7397)

* Feature(template) add response with status code generation

* Generate Samples

* update samples

Co-authored-by: William Cheng <wing328hk@gmail.com>
This commit is contained in:
Gmtstephane
2020-09-14 17:14:53 +02:00
committed by GitHub
parent 8556cb8d71
commit 4e05912ae7
16 changed files with 353 additions and 107 deletions

View File

@@ -136,8 +136,6 @@ public class GoServerCodegen extends AbstractGoCodegen {
@Override @Override
public void processOpts() { public void processOpts() {
super.processOpts(); super.processOpts();
/* /*
* Additional Properties. These values can be passed to the templates and * Additional Properties. These values can be passed to the templates and
* are available in models, apis, and supporting files * are available in models, apis, and supporting files
@@ -201,6 +199,8 @@ public class GoServerCodegen extends AbstractGoCodegen {
supportingFiles.add(new SupportingFile("go.mod.mustache", "", "go.mod")); supportingFiles.add(new SupportingFile("go.mod.mustache", "", "go.mod"));
supportingFiles.add(new SupportingFile("routers.mustache", sourceFolder, "routers.go")); supportingFiles.add(new SupportingFile("routers.mustache", sourceFolder, "routers.go"));
supportingFiles.add(new SupportingFile("logger.mustache", sourceFolder, "logger.go")); supportingFiles.add(new SupportingFile("logger.mustache", sourceFolder, "logger.go"));
supportingFiles.add(new SupportingFile("impl.mustache",sourceFolder, "impl.go"));
supportingFiles.add(new SupportingFile("helpers.mustache", sourceFolder, "helpers.go"));
supportingFiles.add(new SupportingFile("api.mustache", sourceFolder, "api.go")); supportingFiles.add(new SupportingFile("api.mustache", sourceFolder, "api.go"));
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md") supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")
.doNotOverwrite()); .doNotOverwrite());

View File

@@ -7,6 +7,7 @@ import (
"{{import}}"{{/imports}}{{/apis}}{{/apiInfo}} "{{import}}"{{/imports}}{{/apis}}{{/apiInfo}}
) )
{{#apiInfo}}{{#apis}} {{#apiInfo}}{{#apis}}
// {{classname}}Router defines the required methods for binding the api requests to a responses for the {{classname}} // {{classname}}Router defines the required methods for binding the api requests to a responses for the {{classname}}
// The {{classname}}Router implementation should parse necessary information from the http request, // The {{classname}}Router implementation should parse necessary information from the http request,
@@ -21,5 +22,5 @@ type {{classname}}Router interface { {{#operations}}{{#operation}}
// while the service implementation can ignored with the .openapi-generator-ignore file // while the service implementation can ignored with the .openapi-generator-ignore file
// and updated with the logic required for the API. // and updated with the logic required for the API.
type {{classname}}Servicer interface { {{#operations}}{{#operation}} type {{classname}}Servicer interface { {{#operations}}{{#operation}}
{{operationId}}(context.Context{{#allParams}}, {{dataType}}{{/allParams}}) (interface{}, error){{/operation}}{{/operations}} {{operationId}}(context.Context{{#allParams}}, {{dataType}}{{/allParams}}) (ImplResponse, error){{/operation}}{{/operations}}
}{{/apis}}{{/apiInfo}} }{{/apis}}{{/apiInfo}}

View File

@@ -93,10 +93,12 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
} }
{{/isBodyParam}}{{/allParams}} {{/isBodyParam}}{{/allParams}}
result, err := c.service.{{nickname}}(r.Context(){{#allParams}}, {{#isBodyParam}}*{{/isBodyParam}}{{paramName}}{{/allParams}}) result, err := c.service.{{nickname}}(r.Context(){{#allParams}}, {{#isBodyParam}}*{{/isBodyParam}}{{paramName}}{{/allParams}})
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
}{{/operation}}{{/operations}} }{{/operation}}{{/operations}}

View File

@@ -0,0 +1,8 @@
{{>partial_header}}
package {{packageName}}
//Response return a ImplResponse struct filled
func Response(code int, body interface{}) ImplResponse {
return ImplResponse{Code: code, Body: body}
}

View File

@@ -0,0 +1,8 @@
{{>partial_header}}
package {{packageName}}
//Implementation response defines an error code with the associated body
type ImplResponse struct {
Code int
Body interface{}
}

View File

@@ -3,6 +3,7 @@ package {{packageName}}
import ( import (
"context" "context"
"net/http"
"errors"{{#imports}} "errors"{{#imports}}
"{{import}}"{{/imports}} "{{import}}"{{/imports}}
) )
@@ -19,8 +20,22 @@ func New{{classname}}Service() {{classname}}Servicer {
}{{#operations}}{{#operation}} }{{#operations}}{{#operation}}
// {{nickname}} - {{summary}} // {{nickname}} - {{summary}}
func (s *{{classname}}Service) {{nickname}}(ctx context.Context{{#allParams}}, {{paramName}} {{dataType}}{{/allParams}}) (interface{}, error) { func (s *{{classname}}Service) {{nickname}}(ctx context.Context{{#allParams}}, {{paramName}} {{dataType}}{{/allParams}}) (ImplResponse, error) {
// TODO - update {{nickname}} with the required logic for this service method. // TODO - update {{nickname}} with the required logic for this service method.
// Add {{classFilename}}_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add {{classFilename}}_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method '{{nickname}}' not implemented")
{{#responses}}
{{#dataType}}
//TODO: Uncomment the next line to return response Response({{code}}, {{dataType}}{}) or use other options such as http.Ok ...
//return Response({{code}}, {{dataType}}{}), nil
{{/dataType}}
{{^dataType}}
//TODO: Uncomment the next line to return response Response({{code}}, {{dataType}}{}) or use other options such as http.Ok ...
//return Response({{code}}, nil),nil
{{/dataType}}
{{/responses}}
return Response(http.StatusNotImplemented, nil), errors.New("{{nickname}} method not implemented")
}{{/operation}}{{/operations}} }{{/operation}}{{/operations}}

View File

@@ -9,6 +9,8 @@ go/api_store.go
go/api_store_service.go go/api_store_service.go
go/api_user.go go/api_user.go
go/api_user_service.go go/api_user_service.go
go/helpers.go
go/impl.go
go/logger.go go/logger.go
go/model_api_response.go go/model_api_response.go
go/model_category.go go/model_category.go

View File

@@ -16,6 +16,7 @@ import (
) )
// PetApiRouter defines the required methods for binding the api requests to a responses for the PetApi // PetApiRouter defines the required methods for binding the api requests to a responses for the PetApi
// The PetApiRouter implementation should parse necessary information from the http request, // The PetApiRouter implementation should parse necessary information from the http request,
// pass the data to a PetApiServicer to perform the required actions, then write the service results to the http response. // pass the data to a PetApiServicer to perform the required actions, then write the service results to the http response.
@@ -58,14 +59,14 @@ type UserApiRouter interface {
// while the service implementation can ignored with the .openapi-generator-ignore file // while the service implementation can ignored with the .openapi-generator-ignore file
// and updated with the logic required for the API. // and updated with the logic required for the API.
type PetApiServicer interface { type PetApiServicer interface {
AddPet(context.Context, Pet) (interface{}, error) AddPet(context.Context, Pet) (ImplResponse, error)
DeletePet(context.Context, int64, string) (interface{}, error) DeletePet(context.Context, int64, string) (ImplResponse, error)
FindPetsByStatus(context.Context, []string) (interface{}, error) FindPetsByStatus(context.Context, []string) (ImplResponse, error)
FindPetsByTags(context.Context, []string) (interface{}, error) FindPetsByTags(context.Context, []string) (ImplResponse, error)
GetPetById(context.Context, int64) (interface{}, error) GetPetById(context.Context, int64) (ImplResponse, error)
UpdatePet(context.Context, Pet) (interface{}, error) UpdatePet(context.Context, Pet) (ImplResponse, error)
UpdatePetWithForm(context.Context, int64, string, string) (interface{}, error) UpdatePetWithForm(context.Context, int64, string, string) (ImplResponse, error)
UploadFile(context.Context, int64, string, *os.File) (interface{}, error) UploadFile(context.Context, int64, string, *os.File) (ImplResponse, error)
} }
@@ -74,10 +75,10 @@ type PetApiServicer interface {
// while the service implementation can ignored with the .openapi-generator-ignore file // while the service implementation can ignored with the .openapi-generator-ignore file
// and updated with the logic required for the API. // and updated with the logic required for the API.
type StoreApiServicer interface { type StoreApiServicer interface {
DeleteOrder(context.Context, string) (interface{}, error) DeleteOrder(context.Context, string) (ImplResponse, error)
GetInventory(context.Context) (interface{}, error) GetInventory(context.Context) (ImplResponse, error)
GetOrderById(context.Context, int64) (interface{}, error) GetOrderById(context.Context, int64) (ImplResponse, error)
PlaceOrder(context.Context, Order) (interface{}, error) PlaceOrder(context.Context, Order) (ImplResponse, error)
} }
@@ -86,12 +87,12 @@ type StoreApiServicer interface {
// while the service implementation can ignored with the .openapi-generator-ignore file // while the service implementation can ignored with the .openapi-generator-ignore file
// and updated with the logic required for the API. // and updated with the logic required for the API.
type UserApiServicer interface { type UserApiServicer interface {
CreateUser(context.Context, User) (interface{}, error) CreateUser(context.Context, User) (ImplResponse, error)
CreateUsersWithArrayInput(context.Context, []User) (interface{}, error) CreateUsersWithArrayInput(context.Context, []User) (ImplResponse, error)
CreateUsersWithListInput(context.Context, []User) (interface{}, error) CreateUsersWithListInput(context.Context, []User) (ImplResponse, error)
DeleteUser(context.Context, string) (interface{}, error) DeleteUser(context.Context, string) (ImplResponse, error)
GetUserByName(context.Context, string) (interface{}, error) GetUserByName(context.Context, string) (ImplResponse, error)
LoginUser(context.Context, string, string) (interface{}, error) LoginUser(context.Context, string, string) (ImplResponse, error)
LogoutUser(context.Context) (interface{}, error) LogoutUser(context.Context) (ImplResponse, error)
UpdateUser(context.Context, string, User) (interface{}, error) UpdateUser(context.Context, string, User) (ImplResponse, error)
} }

View File

@@ -90,12 +90,14 @@ func (c *PetApiController) AddPet(w http.ResponseWriter, r *http.Request) {
} }
result, err := c.service.AddPet(r.Context(), *pet) result, err := c.service.AddPet(r.Context(), *pet)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// DeletePet - Deletes a pet // DeletePet - Deletes a pet
@@ -108,12 +110,14 @@ func (c *PetApiController) DeletePet(w http.ResponseWriter, r *http.Request) {
} }
apiKey := r.Header.Get("apiKey") apiKey := r.Header.Get("apiKey")
result, err := c.service.DeletePet(r.Context(), petId, apiKey) result, err := c.service.DeletePet(r.Context(), petId, apiKey)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// FindPetsByStatus - Finds Pets by status // FindPetsByStatus - Finds Pets by status
@@ -121,12 +125,14 @@ func (c *PetApiController) FindPetsByStatus(w http.ResponseWriter, r *http.Reque
query := r.URL.Query() query := r.URL.Query()
status := strings.Split(query.Get("status"), ",") status := strings.Split(query.Get("status"), ",")
result, err := c.service.FindPetsByStatus(r.Context(), status) result, err := c.service.FindPetsByStatus(r.Context(), status)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// FindPetsByTags - Finds Pets by tags // FindPetsByTags - Finds Pets by tags
@@ -134,12 +140,14 @@ func (c *PetApiController) FindPetsByTags(w http.ResponseWriter, r *http.Request
query := r.URL.Query() query := r.URL.Query()
tags := strings.Split(query.Get("tags"), ",") tags := strings.Split(query.Get("tags"), ",")
result, err := c.service.FindPetsByTags(r.Context(), tags) result, err := c.service.FindPetsByTags(r.Context(), tags)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// GetPetById - Find pet by ID // GetPetById - Find pet by ID
@@ -151,12 +159,14 @@ func (c *PetApiController) GetPetById(w http.ResponseWriter, r *http.Request) {
return return
} }
result, err := c.service.GetPetById(r.Context(), petId) result, err := c.service.GetPetById(r.Context(), petId)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// UpdatePet - Update an existing pet // UpdatePet - Update an existing pet
@@ -168,12 +178,14 @@ func (c *PetApiController) UpdatePet(w http.ResponseWriter, r *http.Request) {
} }
result, err := c.service.UpdatePet(r.Context(), *pet) result, err := c.service.UpdatePet(r.Context(), *pet)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// UpdatePetWithForm - Updates a pet in the store with form data // UpdatePetWithForm - Updates a pet in the store with form data
@@ -193,12 +205,14 @@ func (c *PetApiController) UpdatePetWithForm(w http.ResponseWriter, r *http.Requ
name := r.FormValue("name") name := r.FormValue("name")
status := r.FormValue("status") status := r.FormValue("status")
result, err := c.service.UpdatePetWithForm(r.Context(), petId, name, status) result, err := c.service.UpdatePetWithForm(r.Context(), petId, name, status)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// UploadFile - uploads an image // UploadFile - uploads an image
@@ -223,10 +237,12 @@ func (c *PetApiController) UploadFile(w http.ResponseWriter, r *http.Request) {
} }
result, err := c.service.UploadFile(r.Context(), petId, additionalMetadata, file) result, err := c.service.UploadFile(r.Context(), petId, additionalMetadata, file)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }

View File

@@ -11,6 +11,7 @@ package petstoreserver
import ( import (
"context" "context"
"net/http"
"errors" "errors"
"os" "os"
) )
@@ -27,57 +28,114 @@ func NewPetApiService() PetApiServicer {
} }
// AddPet - Add a new pet to the store // AddPet - Add a new pet to the store
func (s *PetApiService) AddPet(ctx context.Context, pet Pet) (interface{}, error) { func (s *PetApiService) AddPet(ctx context.Context, pet Pet) (ImplResponse, error) {
// TODO - update AddPet with the required logic for this service method. // TODO - update AddPet with the required logic for this service method.
// Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'AddPet' not implemented")
//TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ...
//return Response(200, Pet{}), nil
//TODO: Uncomment the next line to return response Response(405, {}) or use other options such as http.Ok ...
//return Response(405, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("AddPet method not implemented")
} }
// DeletePet - Deletes a pet // DeletePet - Deletes a pet
func (s *PetApiService) DeletePet(ctx context.Context, petId int64, apiKey string) (interface{}, error) { func (s *PetApiService) DeletePet(ctx context.Context, petId int64, apiKey string) (ImplResponse, error) {
// TODO - update DeletePet with the required logic for this service method. // TODO - update DeletePet with the required logic for this service method.
// Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'DeletePet' not implemented")
//TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
//return Response(400, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("DeletePet method not implemented")
} }
// FindPetsByStatus - Finds Pets by status // FindPetsByStatus - Finds Pets by status
func (s *PetApiService) FindPetsByStatus(ctx context.Context, status []string) (interface{}, error) { func (s *PetApiService) FindPetsByStatus(ctx context.Context, status []string) (ImplResponse, error) {
// TODO - update FindPetsByStatus with the required logic for this service method. // TODO - update FindPetsByStatus with the required logic for this service method.
// Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'FindPetsByStatus' not implemented")
//TODO: Uncomment the next line to return response Response(200, []Pet{}) or use other options such as http.Ok ...
//return Response(200, []Pet{}), nil
//TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
//return Response(400, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("FindPetsByStatus method not implemented")
} }
// FindPetsByTags - Finds Pets by tags // FindPetsByTags - Finds Pets by tags
func (s *PetApiService) FindPetsByTags(ctx context.Context, tags []string) (interface{}, error) { func (s *PetApiService) FindPetsByTags(ctx context.Context, tags []string) (ImplResponse, error) {
// TODO - update FindPetsByTags with the required logic for this service method. // TODO - update FindPetsByTags with the required logic for this service method.
// Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'FindPetsByTags' not implemented")
//TODO: Uncomment the next line to return response Response(200, []Pet{}) or use other options such as http.Ok ...
//return Response(200, []Pet{}), nil
//TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
//return Response(400, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("FindPetsByTags method not implemented")
} }
// GetPetById - Find pet by ID // GetPetById - Find pet by ID
func (s *PetApiService) GetPetById(ctx context.Context, petId int64) (interface{}, error) { func (s *PetApiService) GetPetById(ctx context.Context, petId int64) (ImplResponse, error) {
// TODO - update GetPetById with the required logic for this service method. // TODO - update GetPetById with the required logic for this service method.
// Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'GetPetById' not implemented")
//TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ...
//return Response(200, Pet{}), nil
//TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
//return Response(400, nil),nil
//TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
//return Response(404, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("GetPetById method not implemented")
} }
// UpdatePet - Update an existing pet // UpdatePet - Update an existing pet
func (s *PetApiService) UpdatePet(ctx context.Context, pet Pet) (interface{}, error) { func (s *PetApiService) UpdatePet(ctx context.Context, pet Pet) (ImplResponse, error) {
// TODO - update UpdatePet with the required logic for this service method. // TODO - update UpdatePet with the required logic for this service method.
// Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'UpdatePet' not implemented")
//TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ...
//return Response(200, Pet{}), nil
//TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
//return Response(400, nil),nil
//TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
//return Response(404, nil),nil
//TODO: Uncomment the next line to return response Response(405, {}) or use other options such as http.Ok ...
//return Response(405, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("UpdatePet method not implemented")
} }
// UpdatePetWithForm - Updates a pet in the store with form data // UpdatePetWithForm - Updates a pet in the store with form data
func (s *PetApiService) UpdatePetWithForm(ctx context.Context, petId int64, name string, status string) (interface{}, error) { func (s *PetApiService) UpdatePetWithForm(ctx context.Context, petId int64, name string, status string) (ImplResponse, error) {
// TODO - update UpdatePetWithForm with the required logic for this service method. // TODO - update UpdatePetWithForm with the required logic for this service method.
// Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'UpdatePetWithForm' not implemented")
//TODO: Uncomment the next line to return response Response(405, {}) or use other options such as http.Ok ...
//return Response(405, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("UpdatePetWithForm method not implemented")
} }
// UploadFile - uploads an image // UploadFile - uploads an image
func (s *PetApiService) UploadFile(ctx context.Context, petId int64, additionalMetadata string, file *os.File) (interface{}, error) { func (s *PetApiService) UploadFile(ctx context.Context, petId int64, additionalMetadata string, file *os.File) (ImplResponse, error) {
// TODO - update UploadFile with the required logic for this service method. // TODO - update UploadFile with the required logic for this service method.
// Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_pet_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'UploadFile' not implemented")
//TODO: Uncomment the next line to return response Response(200, ApiResponse{}) or use other options such as http.Ok ...
//return Response(200, ApiResponse{}), nil
return Response(http.StatusNotImplemented, nil), errors.New("UploadFile method not implemented")
} }

View File

@@ -62,23 +62,27 @@ func (c *StoreApiController) DeleteOrder(w http.ResponseWriter, r *http.Request)
params := mux.Vars(r) params := mux.Vars(r)
orderId := params["orderId"] orderId := params["orderId"]
result, err := c.service.DeleteOrder(r.Context(), orderId) result, err := c.service.DeleteOrder(r.Context(), orderId)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// GetInventory - Returns pet inventories by status // GetInventory - Returns pet inventories by status
func (c *StoreApiController) GetInventory(w http.ResponseWriter, r *http.Request) { func (c *StoreApiController) GetInventory(w http.ResponseWriter, r *http.Request) {
result, err := c.service.GetInventory(r.Context()) result, err := c.service.GetInventory(r.Context())
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// GetOrderById - Find purchase order by ID // GetOrderById - Find purchase order by ID
@@ -90,12 +94,14 @@ func (c *StoreApiController) GetOrderById(w http.ResponseWriter, r *http.Request
return return
} }
result, err := c.service.GetOrderById(r.Context(), orderId) result, err := c.service.GetOrderById(r.Context(), orderId)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// PlaceOrder - Place an order for a pet // PlaceOrder - Place an order for a pet
@@ -107,10 +113,12 @@ func (c *StoreApiController) PlaceOrder(w http.ResponseWriter, r *http.Request)
} }
result, err := c.service.PlaceOrder(r.Context(), *order) result, err := c.service.PlaceOrder(r.Context(), *order)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }

View File

@@ -11,6 +11,7 @@ package petstoreserver
import ( import (
"context" "context"
"net/http"
"errors" "errors"
) )
@@ -26,29 +27,58 @@ func NewStoreApiService() StoreApiServicer {
} }
// DeleteOrder - Delete purchase order by ID // DeleteOrder - Delete purchase order by ID
func (s *StoreApiService) DeleteOrder(ctx context.Context, orderId string) (interface{}, error) { func (s *StoreApiService) DeleteOrder(ctx context.Context, orderId string) (ImplResponse, error) {
// TODO - update DeleteOrder with the required logic for this service method. // TODO - update DeleteOrder with the required logic for this service method.
// Add api_store_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_store_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'DeleteOrder' not implemented")
//TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
//return Response(400, nil),nil
//TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
//return Response(404, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("DeleteOrder method not implemented")
} }
// GetInventory - Returns pet inventories by status // GetInventory - Returns pet inventories by status
func (s *StoreApiService) GetInventory(ctx context.Context) (interface{}, error) { func (s *StoreApiService) GetInventory(ctx context.Context) (ImplResponse, error) {
// TODO - update GetInventory with the required logic for this service method. // TODO - update GetInventory with the required logic for this service method.
// Add api_store_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_store_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'GetInventory' not implemented")
//TODO: Uncomment the next line to return response Response(200, map[string]int32{}) or use other options such as http.Ok ...
//return Response(200, map[string]int32{}), nil
return Response(http.StatusNotImplemented, nil), errors.New("GetInventory method not implemented")
} }
// GetOrderById - Find purchase order by ID // GetOrderById - Find purchase order by ID
func (s *StoreApiService) GetOrderById(ctx context.Context, orderId int64) (interface{}, error) { func (s *StoreApiService) GetOrderById(ctx context.Context, orderId int64) (ImplResponse, error) {
// TODO - update GetOrderById with the required logic for this service method. // TODO - update GetOrderById with the required logic for this service method.
// Add api_store_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_store_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'GetOrderById' not implemented")
//TODO: Uncomment the next line to return response Response(200, Order{}) or use other options such as http.Ok ...
//return Response(200, Order{}), nil
//TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
//return Response(400, nil),nil
//TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
//return Response(404, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("GetOrderById method not implemented")
} }
// PlaceOrder - Place an order for a pet // PlaceOrder - Place an order for a pet
func (s *StoreApiService) PlaceOrder(ctx context.Context, order Order) (interface{}, error) { func (s *StoreApiService) PlaceOrder(ctx context.Context, order Order) (ImplResponse, error) {
// TODO - update PlaceOrder with the required logic for this service method. // TODO - update PlaceOrder with the required logic for this service method.
// Add api_store_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_store_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'PlaceOrder' not implemented")
//TODO: Uncomment the next line to return response Response(200, Order{}) or use other options such as http.Ok ...
//return Response(200, Order{}), nil
//TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
//return Response(400, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("PlaceOrder method not implemented")
} }

View File

@@ -90,12 +90,14 @@ func (c *UserApiController) CreateUser(w http.ResponseWriter, r *http.Request) {
} }
result, err := c.service.CreateUser(r.Context(), *user) result, err := c.service.CreateUser(r.Context(), *user)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// CreateUsersWithArrayInput - Creates list of users with given input array // CreateUsersWithArrayInput - Creates list of users with given input array
@@ -107,12 +109,14 @@ func (c *UserApiController) CreateUsersWithArrayInput(w http.ResponseWriter, r *
} }
result, err := c.service.CreateUsersWithArrayInput(r.Context(), *user) result, err := c.service.CreateUsersWithArrayInput(r.Context(), *user)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// CreateUsersWithListInput - Creates list of users with given input array // CreateUsersWithListInput - Creates list of users with given input array
@@ -124,12 +128,14 @@ func (c *UserApiController) CreateUsersWithListInput(w http.ResponseWriter, r *h
} }
result, err := c.service.CreateUsersWithListInput(r.Context(), *user) result, err := c.service.CreateUsersWithListInput(r.Context(), *user)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// DeleteUser - Delete user // DeleteUser - Delete user
@@ -137,12 +143,14 @@ func (c *UserApiController) DeleteUser(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r) params := mux.Vars(r)
username := params["username"] username := params["username"]
result, err := c.service.DeleteUser(r.Context(), username) result, err := c.service.DeleteUser(r.Context(), username)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// GetUserByName - Get user by user name // GetUserByName - Get user by user name
@@ -150,12 +158,14 @@ func (c *UserApiController) GetUserByName(w http.ResponseWriter, r *http.Request
params := mux.Vars(r) params := mux.Vars(r)
username := params["username"] username := params["username"]
result, err := c.service.GetUserByName(r.Context(), username) result, err := c.service.GetUserByName(r.Context(), username)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// LoginUser - Logs user into the system // LoginUser - Logs user into the system
@@ -164,23 +174,27 @@ func (c *UserApiController) LoginUser(w http.ResponseWriter, r *http.Request) {
username := query.Get("username") username := query.Get("username")
password := query.Get("password") password := query.Get("password")
result, err := c.service.LoginUser(r.Context(), username, password) result, err := c.service.LoginUser(r.Context(), username, password)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// LogoutUser - Logs out current logged in user session // LogoutUser - Logs out current logged in user session
func (c *UserApiController) LogoutUser(w http.ResponseWriter, r *http.Request) { func (c *UserApiController) LogoutUser(w http.ResponseWriter, r *http.Request) {
result, err := c.service.LogoutUser(r.Context()) result, err := c.service.LogoutUser(r.Context())
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }
// UpdateUser - Updated user // UpdateUser - Updated user
@@ -194,10 +208,12 @@ func (c *UserApiController) UpdateUser(w http.ResponseWriter, r *http.Request) {
} }
result, err := c.service.UpdateUser(r.Context(), username, *user) result, err := c.service.UpdateUser(r.Context(), username, *user)
//If an error occured, encode the error with the status code
if err != nil { if err != nil {
w.WriteHeader(500) EncodeJSONResponse(err.Error(), &result.Code, w)
return return
} }
//If no error, encode the body and the result code
EncodeJSONResponse(result.Body, &result.Code, w)
EncodeJSONResponse(result, nil, w)
} }

View File

@@ -11,6 +11,7 @@ package petstoreserver
import ( import (
"context" "context"
"net/http"
"errors" "errors"
) )
@@ -26,57 +27,105 @@ func NewUserApiService() UserApiServicer {
} }
// CreateUser - Create user // CreateUser - Create user
func (s *UserApiService) CreateUser(ctx context.Context, user User) (interface{}, error) { func (s *UserApiService) CreateUser(ctx context.Context, user User) (ImplResponse, error) {
// TODO - update CreateUser with the required logic for this service method. // TODO - update CreateUser with the required logic for this service method.
// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'CreateUser' not implemented")
//TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ...
//return Response(0, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("CreateUser method not implemented")
} }
// CreateUsersWithArrayInput - Creates list of users with given input array // CreateUsersWithArrayInput - Creates list of users with given input array
func (s *UserApiService) CreateUsersWithArrayInput(ctx context.Context, user []User) (interface{}, error) { func (s *UserApiService) CreateUsersWithArrayInput(ctx context.Context, user []User) (ImplResponse, error) {
// TODO - update CreateUsersWithArrayInput with the required logic for this service method. // TODO - update CreateUsersWithArrayInput with the required logic for this service method.
// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'CreateUsersWithArrayInput' not implemented")
//TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ...
//return Response(0, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithArrayInput method not implemented")
} }
// CreateUsersWithListInput - Creates list of users with given input array // CreateUsersWithListInput - Creates list of users with given input array
func (s *UserApiService) CreateUsersWithListInput(ctx context.Context, user []User) (interface{}, error) { func (s *UserApiService) CreateUsersWithListInput(ctx context.Context, user []User) (ImplResponse, error) {
// TODO - update CreateUsersWithListInput with the required logic for this service method. // TODO - update CreateUsersWithListInput with the required logic for this service method.
// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'CreateUsersWithListInput' not implemented")
//TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ...
//return Response(0, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithListInput method not implemented")
} }
// DeleteUser - Delete user // DeleteUser - Delete user
func (s *UserApiService) DeleteUser(ctx context.Context, username string) (interface{}, error) { func (s *UserApiService) DeleteUser(ctx context.Context, username string) (ImplResponse, error) {
// TODO - update DeleteUser with the required logic for this service method. // TODO - update DeleteUser with the required logic for this service method.
// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'DeleteUser' not implemented")
//TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
//return Response(400, nil),nil
//TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
//return Response(404, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("DeleteUser method not implemented")
} }
// GetUserByName - Get user by user name // GetUserByName - Get user by user name
func (s *UserApiService) GetUserByName(ctx context.Context, username string) (interface{}, error) { func (s *UserApiService) GetUserByName(ctx context.Context, username string) (ImplResponse, error) {
// TODO - update GetUserByName with the required logic for this service method. // TODO - update GetUserByName with the required logic for this service method.
// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'GetUserByName' not implemented")
//TODO: Uncomment the next line to return response Response(200, User{}) or use other options such as http.Ok ...
//return Response(200, User{}), nil
//TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
//return Response(400, nil),nil
//TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
//return Response(404, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("GetUserByName method not implemented")
} }
// LoginUser - Logs user into the system // LoginUser - Logs user into the system
func (s *UserApiService) LoginUser(ctx context.Context, username string, password string) (interface{}, error) { func (s *UserApiService) LoginUser(ctx context.Context, username string, password string) (ImplResponse, error) {
// TODO - update LoginUser with the required logic for this service method. // TODO - update LoginUser with the required logic for this service method.
// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'LoginUser' not implemented")
//TODO: Uncomment the next line to return response Response(200, string{}) or use other options such as http.Ok ...
//return Response(200, string{}), nil
//TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
//return Response(400, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("LoginUser method not implemented")
} }
// LogoutUser - Logs out current logged in user session // LogoutUser - Logs out current logged in user session
func (s *UserApiService) LogoutUser(ctx context.Context) (interface{}, error) { func (s *UserApiService) LogoutUser(ctx context.Context) (ImplResponse, error) {
// TODO - update LogoutUser with the required logic for this service method. // TODO - update LogoutUser with the required logic for this service method.
// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'LogoutUser' not implemented")
//TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ...
//return Response(0, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("LogoutUser method not implemented")
} }
// UpdateUser - Updated user // UpdateUser - Updated user
func (s *UserApiService) UpdateUser(ctx context.Context, username string, user User) (interface{}, error) { func (s *UserApiService) UpdateUser(ctx context.Context, username string, user User) (ImplResponse, error) {
// TODO - update UpdateUser with the required logic for this service method. // TODO - update UpdateUser with the required logic for this service method.
// Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation. // Add api_user_service.go to the .openapi-generator-ignore to avoid overwriting this service implementation when updating open api generation.
return nil, errors.New("service method 'UpdateUser' not implemented")
//TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
//return Response(400, nil),nil
//TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
//return Response(404, nil),nil
return Response(http.StatusNotImplemented, nil), errors.New("UpdateUser method not implemented")
} }

View File

@@ -0,0 +1,16 @@
/*
* OpenAPI Petstore
*
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* API version: 1.0.0
* Generated by: OpenAPI Generator (https://openapi-generator.tech)
*/
package petstoreserver
//Response return a ImplResponse struct filled
func Response(code int, body interface{}) ImplResponse {
return ImplResponse{Code: code, Body: body}
}

View File

@@ -0,0 +1,16 @@
/*
* OpenAPI Petstore
*
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* API version: 1.0.0
* Generated by: OpenAPI Generator (https://openapi-generator.tech)
*/
package petstoreserver
//Implementation response defines an error code with the associated body
type ImplResponse struct {
Code int
Body interface{}
}