diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java index 0983ad705b94..b9848a734af2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java @@ -51,6 +51,7 @@ public class GoServerCodegen extends AbstractGoCodegen { protected int serverPort = 8080; protected String projectName = "openapi-server"; protected String sourceFolder = "go"; + protected String supportFolder = "support"; protected Boolean corsFeatureEnabled = false; protected Boolean addResponseHeaders = false; @@ -230,7 +231,9 @@ public void processOpts() { } additionalProperties.put("routers", routers); - modelPackage = packageName; + if (!additionalProperties.containsKey(CodegenConstants.MODEL_PACKAGE)) { + modelPackage = packageName; + } apiPackage = packageName; /* @@ -242,12 +245,12 @@ public void processOpts() { supportingFiles.add(new SupportingFile("main.mustache", "", "main.go")); supportingFiles.add(new SupportingFile("Dockerfile.mustache", "", "Dockerfile")); supportingFiles.add(new SupportingFile("go.mod.mustache", "", "go.mod")); - supportingFiles.add(new SupportingFile("routers.mustache", sourceFolder, "routers.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("routers.mustache", supportFolder, "routers.go")); + supportingFiles.add(new SupportingFile("logger.mustache", supportFolder, "logger.go")); + supportingFiles.add(new SupportingFile("impl.mustache", supportFolder, "impl.go")); + supportingFiles.add(new SupportingFile("helpers.mustache", supportFolder, "helpers.go")); supportingFiles.add(new SupportingFile("api.mustache", sourceFolder, "api.go")); - supportingFiles.add(new SupportingFile("error.mustache", sourceFolder, "error.go")); + supportingFiles.add(new SupportingFile("error.mustache", supportFolder, "error.go")); supportingFiles.add(new SupportingFile("README.mustache", "", "README.md") .doNotOverwrite()); } @@ -269,6 +272,7 @@ public Map postProcessOperationsWithModels(Map o boolean addedTimeImport = false; boolean addedOSImport = false; + boolean addedModelImport = false; for (CodegenOperation operation : operations) { for (CodegenParameter param : operation.allParams) { // import "os" if the operation uses files @@ -284,12 +288,49 @@ public Map postProcessOperationsWithModels(Map o addedTimeImport = true; } } + + // import "models" directory if needed + if (!addedModelImport && param.isModel && !modelPackage.equals(apiPackage)) { + addedModelImport = true; + objs.put("hasDifferentModelDir", true); + } } } return objs; } + @Override + public Map postProcessSupportingFileData(Map objs) { + objs = super.postProcessSupportingFileData(objs); + + Map apiInfo = (Map) objs.get("apiInfo"); + List> apiList = (List>) apiInfo.get("apis"); + for (HashMap api : apiList) { + Map objectMap = (Map) api.get("operations"); + List operations = (List) objectMap.get("operation"); + + boolean addedModelImport = false; + boolean addedSupportImport = false; + for (CodegenOperation operation : operations) { + for (CodegenParameter param : operation.allParams) { + // Always Add the support import + if (!addedSupportImport) { + objs.put("hasSupportDir", true); + addedSupportImport = true; + } + + // import "models" directory if needed + if (!addedModelImport && param.isModel && !modelPackage.equals(apiPackage)) { + objs.put("hasDifferentModelDir", true); + addedModelImport = true; + } + } + } + } + return objs; + } + @Override public String apiPackage() { return sourceFolder; @@ -340,7 +381,10 @@ public String apiFileFolder() { @Override public String modelFileFolder() { - return outputFolder + File.separator + apiPackage().replace('.', File.separatorChar); + if (!additionalProperties.containsKey(CodegenConstants.MODEL_PACKAGE)) { + return outputFolder + File.separator + apiPackage().replace('.', File.separatorChar); + } + return outputFolder + File.separator + modelPackage().replace('.', File.separatorChar); } public void setSourceFolder(String sourceFolder) { diff --git a/modules/openapi-generator/src/main/resources/go-server/api.mustache b/modules/openapi-generator/src/main/resources/go-server/api.mustache index da459dc40e0f..a5c6e00bd462 100644 --- a/modules/openapi-generator/src/main/resources/go-server/api.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/api.mustache @@ -5,6 +5,8 @@ import ( "context" "net/http"{{#apiInfo}}{{#apis}}{{#imports}} "{{import}}"{{/imports}}{{/apis}}{{/apiInfo}} + {{#hasSupportDir}}"{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/support"{{/hasSupportDir}} + {{#hasDifferentModelDir}}"{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/{{modelPackage}}"{{/hasDifferentModelDir}} ) @@ -28,5 +30,5 @@ type {{classname}}Servicer interface { {{#operations}}{{#operation}} {{#isDeprecated}} // Deprecated {{/isDeprecated}} - {{operationId}}(context.Context{{#allParams}}, {{dataType}}{{/allParams}}) (ImplResponse, error){{/operation}}{{/operations}} + {{operationId}}(context.Context{{#allParams}}, {{#isArray}}[]{{/isArray}}{{#isArray}}{{#items}}{{#isModel}}{{#hasDifferentModelDir}}{{modelPackage}}.{{/hasDifferentModelDir}}{{/isModel}}{{dataType}}{{/items}}{{/isArray}}{{^isArray}}{{#isModel}}{{#hasDifferentModelDir}}{{modelPackage}}.{{/hasDifferentModelDir}}{{/isModel}}{{dataType}}{{/isArray}}{{/allParams}}) (support.ImplResponse, error){{/operation}}{{/operations}} }{{/apis}}{{/apiInfo}} diff --git a/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache b/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache index f7b32e623d4d..0c2bd4b589fc 100644 --- a/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache @@ -2,7 +2,6 @@ package {{packageName}} import ( - "encoding/json" "net/http" "strings" @@ -14,29 +13,32 @@ import ( "github.com/go-chi/chi/v5" {{/chi}} {{/routers}} + + support "{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/support" + {{#hasDifferentModelDir}}"{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/{{modelPackage}}"{{/hasDifferentModelDir}} ) // {{classname}}Controller binds http requests to an api service and writes the service results to the http response type {{classname}}Controller struct { service {{classname}}Servicer - errorHandler ErrorHandler + errorHandler support.ErrorHandler } // {{classname}}Option for how the controller is set up. type {{classname}}Option func(*{{classname}}Controller) // With{{classname}}ErrorHandler inject ErrorHandler into controller -func With{{classname}}ErrorHandler(h ErrorHandler) {{classname}}Option { +func With{{classname}}ErrorHandler(h support.ErrorHandler) {{classname}}Option { return func(c *{{classname}}Controller) { c.errorHandler = h } } // New{{classname}}Controller creates a default api controller -func New{{classname}}Controller(s {{classname}}Servicer, opts ...{{classname}}Option) Router { +func New{{classname}}Controller(s {{classname}}Servicer, opts ...{{classname}}Option) support.Router { controller := &{{classname}}Controller{ service: s, - errorHandler: DefaultErrorHandler, + errorHandler: support.DefaultErrorHandler, } for _, opt := range opts { @@ -47,8 +49,8 @@ func New{{classname}}Controller(s {{classname}}Servicer, opts ...{{classname}}Op } // Routes returns all the api routes for the {{classname}}Controller -func (c *{{classname}}Controller) Routes() Routes { - return Routes{ {{#operations}}{{#operation}} +func (c *{{classname}}Controller) Routes() support.Routes { + return support.Routes{ {{#operations}}{{#operation}} { "{{operationId}}", strings.ToUpper("{{httpMethod}}"), @@ -66,13 +68,13 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re {{#hasFormParams}} {{#isMultipart}} if err := r.ParseMultipartForm(32 << 20); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } {{/isMultipart}} {{^isMultipart}} if err := r.ParseForm(); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } {{/isMultipart}} @@ -90,16 +92,16 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re {{#allParams}} {{#isPathParam}} {{#isLong}} - {{paramName}}Param, err := parseInt64Parameter({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}}, {{required}}) + {{paramName}}Param, err := support.ParseInt64Parameter({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}}, {{required}}) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } {{/isLong}} {{#isInteger}} - {{paramName}}Param, err := parseInt32Parameter({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}}, {{required}}) + {{paramName}}Param, err := support.ParseInt32Parameter({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}}, {{required}}) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } {{/isInteger}} @@ -110,21 +112,21 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re {{/isPathParam}} {{#isQueryParam}} {{#isLong}} - {{paramName}}Param, err := parseInt64Parameter(query.Get("{{baseName}}"), {{required}}) + {{paramName}}Param, err := support.ParseInt64Parameter(query.Get("{{baseName}}"), {{required}}) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } {{/isLong}} {{#isInteger}} - {{paramName}}Param, err := parseInt32Parameter(query.Get("{{baseName}}"), {{required}}) + {{paramName}}Param, err := support.ParseInt32Parameter(query.Get("{{baseName}}"), {{required}}) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } {{/isInteger}} {{#isBoolean}} - {{paramName}}Param, err := parseBoolParameter(query.Get("{{baseName}}")) + {{paramName}}Param, err := support.ParseBoolParameter(query.Get("{{baseName}}")) if err != nil { w.WriteHeader(500) return @@ -132,16 +134,16 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re {{/isBoolean}} {{#isArray}} {{#items.isLong}} - {{paramName}}Param, err := parseInt64ArrayParameter(query.Get("{{baseName}}"), ",", {{required}}) + {{paramName}}Param, err := support.ParseInt64ArrayParameter(query.Get("{{baseName}}"), ",", {{required}}) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } {{/items.isLong}} {{#items.isInteger}} - {{paramName}}Param, err := parseInt32ArrayParameter(query.Get("{{baseName}}"), ",", {{required}}) + {{paramName}}Param, err := support.ParseInt32ArrayParameter(query.Get("{{baseName}}"), ",", {{required}}) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } {{/items.isInteger}} @@ -163,27 +165,27 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re {{/isQueryParam}} {{#isFormParam}} {{#isFile}}{{#isArray}} - {{paramName}}Param, err := ReadFormFilesToTempFiles(r, "{{baseName}}"){{/isArray}}{{^isArray}} - {{paramName}}Param, err := ReadFormFileToTempFile(r, "{{baseName}}") + {{paramName}}Param, err := support.ReadFormFilesToTempFiles(r, "{{baseName}}"){{/isArray}}{{^isArray}} + {{paramName}}Param, err := support.ReadFormFileToTempFile(r, "{{baseName}}") {{/isArray}} if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } {{/isFile}} {{#isLong}}{{#isArray}} - {{paramName}}Param, err := parseInt64ArrayParameter(r.FormValue("{{baseName}}"), ",", {{required}}){{/isArray}}{{^isArray}} - {{paramName}}Param, err := parseInt64Parameter(r.FormValue("{{baseName}}"), {{required}}){{/isArray}} + {{paramName}}Param, err := support.ParseInt64ArrayParameter(r.FormValue("{{baseName}}"), ",", {{required}}){{/isArray}}{{^isArray}} + {{paramName}}Param, err := support.ParseInt64Parameter(r.FormValue("{{baseName}}"), {{required}}){{/isArray}} if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } {{/isLong}} {{#isInteger}}{{#isArray}} - {{paramName}}Param, err := parseInt32ArrayParameter(r.FormValue("{{baseName}}"), ",", {{required}}){{/isArray}}{{^isArray}} - {{paramName}}Param, err := parseInt32Parameter(r.FormValue("{{baseName}}"), {{required}}){{/isArray}} + {{paramName}}Param, err := support.ParseInt32ArrayParameter(r.FormValue("{{baseName}}"), ",", {{required}}){{/isArray}}{{^isArray}} + {{paramName}}Param, err := support.ParseInt32Parameter(r.FormValue("{{baseName}}"), {{required}}){{/isArray}} if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } {{/isInteger}} @@ -197,19 +199,19 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re {{paramName}}Param := r.Header.Get("{{baseName}}") {{/isHeaderParam}} {{#isBodyParam}} - {{paramName}}Param := {{dataType}}{} - d := json.NewDecoder(r.Body) + {{paramName}}Param := {{#isArray}}[]{{^isPrimitiveType}}{{#hasDifferentModelDir}}{{modelPackage}}.{{/hasDifferentModelDir}}{{/isPrimitiveType}}{{baseType}}{{/isArray}}{{^isArray}}{{#isModel}}{{#hasDifferentModelDir}}{{modelPackage}}.{{/hasDifferentModelDir}}{{/isModel}}{{dataType}}{{/isArray}}{} + d := support.NewJSONDecoder(r.Body) {{^isAdditionalPropertiesTrue}} d.DisallowUnknownFields() {{/isAdditionalPropertiesTrue}} if err := d.Decode(&{{paramName}}Param); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } {{#isArray}} {{#items.isModel}} for _, el := range {{paramName}}Param { - if err := Assert{{baseType}}Required(el); err != nil { + if err := {{#hasDifferentModelDir}}{{modelPackage}}.{{/hasDifferentModelDir}}Assert{{baseType}}Required(el); err != nil { c.errorHandler(w, r, err, nil) return } @@ -218,7 +220,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re {{/isArray}} {{^isArray}} {{#isModel}} - if err := Assert{{baseType}}Required({{paramName}}Param); err != nil { + if err := {{#hasDifferentModelDir}}{{modelPackage}}.{{/hasDifferentModelDir}}Assert{{baseType}}Required({{paramName}}Param); err != nil { c.errorHandler(w, r, err, nil) return } @@ -233,6 +235,6 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code,{{#addResponseHeaders}} result.Headers,{{/addResponseHeaders}} w) + support.EncodeJSONResponse(result.Body, &result.Code,{{#addResponseHeaders}} result.Headers,{{/addResponseHeaders}} w) }{{/operation}}{{/operations}} diff --git a/modules/openapi-generator/src/main/resources/go-server/error.mustache b/modules/openapi-generator/src/main/resources/go-server/error.mustache index a4ffa03f53f9..f3fff2cc95e6 100644 --- a/modules/openapi-generator/src/main/resources/go-server/error.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/error.mustache @@ -1,5 +1,5 @@ {{>partial_header}} -package {{packageName}} +package support import ( "errors" diff --git a/modules/openapi-generator/src/main/resources/go-server/helpers.mustache b/modules/openapi-generator/src/main/resources/go-server/helpers.mustache index 6de33d11437d..f911b50096a0 100644 --- a/modules/openapi-generator/src/main/resources/go-server/helpers.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/helpers.mustache @@ -1,7 +1,10 @@ {{>partial_header}} -package {{packageName}} +package support import ( + "encoding/json" + "net/http" + "io" "reflect" ) @@ -58,3 +61,33 @@ func AssertRecurseValueRequired(value reflect.Value, callback func(interface{}) } return nil } + +// EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code +func EncodeJSONResponse(i interface{}, status *int,{{#addResponseHeaders}} headers map[string][]string,{{/addResponseHeaders}} w http.ResponseWriter) error { + {{#addResponseHeaders}} + wHeader := w.Header() + if headers != nil { + for key, values := range headers { + for _, value := range values { + wHeader.Add(key, value) + } + } + } + wHeader.Set("Content-Type", "application/json; charset=UTF-8") + {{/addResponseHeaders}} + {{^addResponseHeaders}} + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + {{/addResponseHeaders}} + if status != nil { + w.WriteHeader(*status) + } else { + w.WriteHeader(http.StatusOK) + } + + return json.NewEncoder(w).Encode(i) +} + +// NewJSONDecoder creates a jew json decoder to decode an http body. +func NewJSONDecoder(r io.Reader) *json.Decoder { + return json.NewDecoder(r) +} diff --git a/modules/openapi-generator/src/main/resources/go-server/impl.mustache b/modules/openapi-generator/src/main/resources/go-server/impl.mustache index 81c25ffb9739..6eb1a5586bc5 100644 --- a/modules/openapi-generator/src/main/resources/go-server/impl.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/impl.mustache @@ -1,5 +1,5 @@ {{>partial_header}} -package {{packageName}} +package support // ImplResponse response defines an error code with the associated body type ImplResponse struct { diff --git a/modules/openapi-generator/src/main/resources/go-server/logger.mustache b/modules/openapi-generator/src/main/resources/go-server/logger.mustache index e8464d6ad5f5..be53197a3e73 100644 --- a/modules/openapi-generator/src/main/resources/go-server/logger.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/logger.mustache @@ -1,5 +1,5 @@ {{>partial_header}} -package {{packageName}} +package support import ( "log" diff --git a/modules/openapi-generator/src/main/resources/go-server/main.mustache b/modules/openapi-generator/src/main/resources/go-server/main.mustache index 2bbff85ca734..8ba55e7cf5a8 100644 --- a/modules/openapi-generator/src/main/resources/go-server/main.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/main.mustache @@ -6,6 +6,7 @@ import ( "net/http" {{packageName}} "{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/{{sourceFolder}}" + support "{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/support" ) func main() { @@ -14,7 +15,7 @@ func main() { {{classname}}Service := {{packageName}}.New{{classname}}Service() {{classname}}Controller := {{packageName}}.New{{classname}}Controller({{classname}}Service) {{/apis}}{{/apiInfo}} - router := {{packageName}}.NewRouter({{#apiInfo}}{{#apis}}{{classname}}Controller{{^-last}}, {{/-last}}{{/apis}}{{/apiInfo}}) + router := support.NewRouter({{#apiInfo}}{{#apis}}{{classname}}Controller{{^-last}}, {{/-last}}{{/apis}}{{/apiInfo}}) log.Fatal(http.ListenAndServe(":{{serverPort}}", router)) } diff --git a/modules/openapi-generator/src/main/resources/go-server/model.mustache b/modules/openapi-generator/src/main/resources/go-server/model.mustache index 8a4dd7a97904..554217fdcf24 100644 --- a/modules/openapi-generator/src/main/resources/go-server/model.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/model.mustache @@ -1,10 +1,11 @@ {{>partial_header}} -package {{packageName}} -{{#models}}{{#imports}} -{{#-first}}import ( -{{/-first}} "{{import}}"{{#-last}} +package {{modelPackage}} +{{#models}} +import ( + {{#imports}}"{{import}}"{{/imports}} + support "{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/support" ) -{{/-last}}{{/imports}}{{#model}}{{#isEnum}}{{#description}}// {{{classname}}} : {{{description}}}{{/description}} +{{#model}}{{#isEnum}}{{#description}}// {{{classname}}} : {{{description}}}{{/description}} type {{{classname}}} {{^format}}{{dataType}}{{/format}}{{{format}}} // List of {{{classname}}} @@ -43,8 +44,8 @@ func Assert{{classname}}Required(obj {{classname}}) error { {{#requiredVars}} "{{baseName}}": obj.{{name}}, {{/requiredVars}} } for name, el := range elements { - if isZero := IsZeroValue(el); isZero { - return &RequiredError{Field: name} + if isZero := support.IsZeroValue(el); isZero { + return &support.RequiredError{Field: name} } } @@ -124,10 +125,10 @@ func Assert{{classname}}Required(obj {{classname}}) error { // AssertRecurse{{classname}}Required recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of {{classname}} (e.g. [][]{{classname}}), otherwise ErrTypeAssertionError is thrown. func AssertRecurse{{classname}}Required(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { a{{classname}}, ok := obj.({{classname}}) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return Assert{{classname}}Required(a{{classname}}) }) diff --git a/modules/openapi-generator/src/main/resources/go-server/routers.mustache b/modules/openapi-generator/src/main/resources/go-server/routers.mustache index b26f8febb410..26dc6f476918 100644 --- a/modules/openapi-generator/src/main/resources/go-server/routers.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/routers.mustache @@ -1,8 +1,7 @@ {{>partial_header}} -package {{packageName}} +package support import ( - "encoding/json" "errors" {{#routers}} {{#mux}} @@ -86,31 +85,6 @@ func NewRouter(routers ...Router) {{#routers}}{{#mux}}*mux.Router{{/mux}}{{#chi} return router } -// EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code -func EncodeJSONResponse(i interface{}, status *int,{{#addResponseHeaders}} headers map[string][]string,{{/addResponseHeaders}} w http.ResponseWriter) error { - {{#addResponseHeaders}} - wHeader := w.Header() - if headers != nil { - for key, values := range headers { - for _, value := range values { - wHeader.Add(key, value) - } - } - } - wHeader.Set("Content-Type", "application/json; charset=UTF-8") - {{/addResponseHeaders}} - {{^addResponseHeaders}} - w.Header().Set("Content-Type", "application/json; charset=UTF-8") - {{/addResponseHeaders}} - if status != nil { - w.WriteHeader(*status) - } else { - w.WriteHeader(http.StatusOK) - } - - return json.NewEncoder(w).Encode(i) -} - // ReadFormFileToTempFile reads file data from a request form and writes it to a temporary file func ReadFormFileToTempFile(r *http.Request, key string) (*os.File, error) { _, fileHeader, err := r.FormFile(key) @@ -167,8 +141,8 @@ func readFileHeaderToTempFile(fileHeader *multipart.FileHeader) (*os.File, error return file, nil } -// parseInt64Parameter parses a string parameter to an int64. -func parseInt64Parameter(param string, required bool) (int64, error) { +// ParseInt64Parameter parses a string parameter to an int64. +func ParseInt64Parameter(param string, required bool) (int64, error) { if param == "" { if required { return 0, errors.New(errMsgRequiredMissing) @@ -180,8 +154,8 @@ func parseInt64Parameter(param string, required bool) (int64, error) { return strconv.ParseInt(param, 10, 64) } -// parseInt32Parameter parses a string parameter to an int32. -func parseInt32Parameter(param string, required bool) (int32, error) { +// ParseInt32Parameter parses a string parameter to an int32. +func ParseInt32Parameter(param string, required bool) (int32, error) { if param == "" { if required { return 0, errors.New(errMsgRequiredMissing) @@ -198,8 +172,8 @@ func parseInt32Parameter(param string, required bool) (int32, error) { return int32(val), nil } -// parseBoolParameter parses a string parameter to a bool -func parseBoolParameter(param string) (bool, error) { +// ParseBoolParameter parses a string parameter to a bool +func ParseBoolParameter(param string) (bool, error) { val, err := strconv.ParseBool(param) if err != nil { return false, err @@ -208,8 +182,8 @@ func parseBoolParameter(param string) (bool, error) { return bool(val), nil } -// parseInt64ArrayParameter parses a string parameter containing array of values to []int64. -func parseInt64ArrayParameter(param, delim string, required bool) ([]int64, error) { +// ParseInt64ArrayParameter parses a string parameter containing array of values to []int64. +func ParseInt64ArrayParameter(param, delim string, required bool) ([]int64, error) { if param == "" { if required { return nil, errors.New(errMsgRequiredMissing) @@ -232,8 +206,8 @@ func parseInt64ArrayParameter(param, delim string, required bool) ([]int64, erro return ints, nil } -// parseInt32ArrayParameter parses a string parameter containing array of values to []int32. -func parseInt32ArrayParameter(param, delim string, required bool) ([]int32, error) { +// ParseInt32ArrayParameter parses a string parameter containing array of values to []int32. +func ParseInt32ArrayParameter(param, delim string, required bool) ([]int32, error) { if param == "" { if required { return nil, errors.New(errMsgRequiredMissing) @@ -254,4 +228,4 @@ func parseInt32ArrayParameter(param, delim string, required bool) ([]int32, erro } return ints, nil -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/resources/go-server/service.mustache b/modules/openapi-generator/src/main/resources/go-server/service.mustache index baad4df800a9..76a172fc1b19 100644 --- a/modules/openapi-generator/src/main/resources/go-server/service.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/service.mustache @@ -3,9 +3,12 @@ package {{packageName}} import ( "context" - "net/http" - "errors"{{#imports}} + "errors" + "net/http"{{#imports}} "{{import}}"{{/imports}} + + "{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/support" + {{#hasDifferentModelDir}}"{{gitHost}}/{{gitUserId}}/{{gitRepoId}}/{{modelPackage}}"{{/hasDifferentModelDir}} ) // {{classname}}Service is a service that implements the logic for the {{classname}}Servicer @@ -23,21 +26,21 @@ func New{{classname}}Service() {{classname}}Servicer { {{#isDeprecated}} // Deprecated {{/isDeprecated}} -func (s *{{classname}}Service) {{nickname}}(ctx context.Context{{#allParams}}, {{paramName}} {{dataType}}{{/allParams}}) (ImplResponse, error) { +func (s *{{classname}}Service) {{nickname}}(ctx context.Context{{#allParams}}, {{paramName}} {{#isArray}}[]{{/isArray}}{{#isArray}}{{#items}}{{#isModel}}{{#hasDifferentModelDir}}{{modelPackage}}.{{/hasDifferentModelDir}}{{/isModel}}{{dataType}}{{/items}}{{/isArray}}{{^isArray}}{{#isModel}}{{#hasDifferentModelDir}}{{modelPackage}}.{{/hasDifferentModelDir}}{{/isModel}}{{dataType}}{{/isArray}}{{/allParams}}) (support.ImplResponse, error) { // 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. {{#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 + //return support.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 + //return support.Response({{code}}, nil),nil {{/dataType}} {{/responses}} - return Response(http.StatusNotImplemented, nil), errors.New("{{nickname}} method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("{{nickname}} method not implemented") }{{/operation}}{{/operations}} diff --git a/samples/server/petstore/go-api-server/.openapi-generator/FILES b/samples/server/petstore/go-api-server/.openapi-generator/FILES index 59b4003ddcec..f8bd847b8887 100644 --- a/samples/server/petstore/go-api-server/.openapi-generator/FILES +++ b/samples/server/petstore/go-api-server/.openapi-generator/FILES @@ -9,15 +9,15 @@ go/api_store.go go/api_store_service.go go/api_user.go go/api_user_service.go -go/error.go -go/helpers.go -go/impl.go -go/logger.go go/model_api_response.go go/model_category.go go/model_order.go go/model_pet.go go/model_tag.go go/model_user.go -go/routers.go main.go +support/error.go +support/helpers.go +support/impl.go +support/logger.go +support/routers.go diff --git a/samples/server/petstore/go-api-server/go/api.go b/samples/server/petstore/go-api-server/go/api.go index bedb0f7985e5..b807031a503d 100644 --- a/samples/server/petstore/go-api-server/go/api.go +++ b/samples/server/petstore/go-api-server/go/api.go @@ -13,6 +13,8 @@ import ( "context" "net/http" "os" + "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) @@ -60,15 +62,15 @@ type UserApiRouter interface { // while the service implementation can be ignored with the .openapi-generator-ignore file // and updated with the logic required for the API. type PetApiServicer interface { - AddPet(context.Context, Pet) (ImplResponse, error) - DeletePet(context.Context, int64, string) (ImplResponse, error) - FindPetsByStatus(context.Context, []string) (ImplResponse, error) + AddPet(context.Context, Pet) (support.ImplResponse, error) + DeletePet(context.Context, int64, string) (support.ImplResponse, error) + FindPetsByStatus(context.Context, []string) (support.ImplResponse, error) // Deprecated - FindPetsByTags(context.Context, []string) (ImplResponse, error) - GetPetById(context.Context, int64) (ImplResponse, error) - UpdatePet(context.Context, Pet) (ImplResponse, error) - UpdatePetWithForm(context.Context, int64, string, string) (ImplResponse, error) - UploadFile(context.Context, int64, string, *os.File) (ImplResponse, error) + FindPetsByTags(context.Context, []string) (support.ImplResponse, error) + GetPetById(context.Context, int64) (support.ImplResponse, error) + UpdatePet(context.Context, Pet) (support.ImplResponse, error) + UpdatePetWithForm(context.Context, int64, string, string) (support.ImplResponse, error) + UploadFile(context.Context, int64, string, *os.File) (support.ImplResponse, error) } @@ -77,10 +79,10 @@ type PetApiServicer interface { // while the service implementation can be ignored with the .openapi-generator-ignore file // and updated with the logic required for the API. type StoreApiServicer interface { - DeleteOrder(context.Context, string) (ImplResponse, error) - GetInventory(context.Context) (ImplResponse, error) - GetOrderById(context.Context, int64) (ImplResponse, error) - PlaceOrder(context.Context, Order) (ImplResponse, error) + DeleteOrder(context.Context, string) (support.ImplResponse, error) + GetInventory(context.Context) (support.ImplResponse, error) + GetOrderById(context.Context, int64) (support.ImplResponse, error) + PlaceOrder(context.Context, Order) (support.ImplResponse, error) } @@ -89,12 +91,12 @@ type StoreApiServicer interface { // while the service implementation can be ignored with the .openapi-generator-ignore file // and updated with the logic required for the API. type UserApiServicer interface { - CreateUser(context.Context, User) (ImplResponse, error) - CreateUsersWithArrayInput(context.Context, []User) (ImplResponse, error) - CreateUsersWithListInput(context.Context, []User) (ImplResponse, error) - DeleteUser(context.Context, string) (ImplResponse, error) - GetUserByName(context.Context, string) (ImplResponse, error) - LoginUser(context.Context, string, string) (ImplResponse, error) - LogoutUser(context.Context) (ImplResponse, error) - UpdateUser(context.Context, string, User) (ImplResponse, error) + CreateUser(context.Context, User) (support.ImplResponse, error) + CreateUsersWithArrayInput(context.Context, []User) (support.ImplResponse, error) + CreateUsersWithListInput(context.Context, []User) (support.ImplResponse, error) + DeleteUser(context.Context, string) (support.ImplResponse, error) + GetUserByName(context.Context, string) (support.ImplResponse, error) + LoginUser(context.Context, string, string) (support.ImplResponse, error) + LogoutUser(context.Context) (support.ImplResponse, error) + UpdateUser(context.Context, string, User) (support.ImplResponse, error) } diff --git a/samples/server/petstore/go-api-server/go/api_pet.go b/samples/server/petstore/go-api-server/go/api_pet.go index fb8041ee7301..81551da09389 100644 --- a/samples/server/petstore/go-api-server/go/api_pet.go +++ b/samples/server/petstore/go-api-server/go/api_pet.go @@ -10,34 +10,36 @@ package petstoreserver import ( - "encoding/json" "net/http" "strings" "github.com/gorilla/mux" + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // PetApiController binds http requests to an api service and writes the service results to the http response type PetApiController struct { service PetApiServicer - errorHandler ErrorHandler + errorHandler support.ErrorHandler } // PetApiOption for how the controller is set up. type PetApiOption func(*PetApiController) // WithPetApiErrorHandler inject ErrorHandler into controller -func WithPetApiErrorHandler(h ErrorHandler) PetApiOption { +func WithPetApiErrorHandler(h support.ErrorHandler) PetApiOption { return func(c *PetApiController) { c.errorHandler = h } } // NewPetApiController creates a default api controller -func NewPetApiController(s PetApiServicer, opts ...PetApiOption) Router { +func NewPetApiController(s PetApiServicer, opts ...PetApiOption) support.Router { controller := &PetApiController{ service: s, - errorHandler: DefaultErrorHandler, + errorHandler: support.DefaultErrorHandler, } for _, opt := range opts { @@ -48,8 +50,8 @@ func NewPetApiController(s PetApiServicer, opts ...PetApiOption) Router { } // Routes returns all the api routes for the PetApiController -func (c *PetApiController) Routes() Routes { - return Routes{ +func (c *PetApiController) Routes() support.Routes { + return support.Routes{ { "AddPet", strings.ToUpper("Post"), @@ -104,10 +106,10 @@ func (c *PetApiController) Routes() Routes { // AddPet - Add a new pet to the store func (c *PetApiController) AddPet(w http.ResponseWriter, r *http.Request) { petParam := Pet{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&petParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertPetRequired(petParam); err != nil { @@ -121,16 +123,16 @@ func (c *PetApiController) AddPet(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // DeletePet - Deletes a pet func (c *PetApiController) DeletePet(w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) - petIdParam, err := parseInt64Parameter(params["petId"], true) + petIdParam, err := support.ParseInt64Parameter(params["petId"], true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } @@ -142,7 +144,7 @@ func (c *PetApiController) DeletePet(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -157,7 +159,7 @@ func (c *PetApiController) FindPetsByStatus(w http.ResponseWriter, r *http.Reque return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -173,16 +175,16 @@ func (c *PetApiController) FindPetsByTags(w http.ResponseWriter, r *http.Request return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // GetPetById - Find pet by ID func (c *PetApiController) GetPetById(w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) - petIdParam, err := parseInt64Parameter(params["petId"], true) + petIdParam, err := support.ParseInt64Parameter(params["petId"], true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } @@ -193,17 +195,17 @@ func (c *PetApiController) GetPetById(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // UpdatePet - Update an existing pet func (c *PetApiController) UpdatePet(w http.ResponseWriter, r *http.Request) { petParam := Pet{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&petParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertPetRequired(petParam); err != nil { @@ -217,20 +219,20 @@ func (c *PetApiController) UpdatePet(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // UpdatePetWithForm - Updates a pet in the store with form data func (c *PetApiController) UpdatePetWithForm(w http.ResponseWriter, r *http.Request) { if err := r.ParseForm(); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } params := mux.Vars(r) - petIdParam, err := parseInt64Parameter(params["petId"], true) + petIdParam, err := support.ParseInt64Parameter(params["petId"], true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } @@ -243,28 +245,28 @@ func (c *PetApiController) UpdatePetWithForm(w http.ResponseWriter, r *http.Requ return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // UploadFile - uploads an image func (c *PetApiController) UploadFile(w http.ResponseWriter, r *http.Request) { if err := r.ParseMultipartForm(32 << 20); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } params := mux.Vars(r) - petIdParam, err := parseInt64Parameter(params["petId"], true) + petIdParam, err := support.ParseInt64Parameter(params["petId"], true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } additionalMetadataParam := r.FormValue("additionalMetadata") - fileParam, err := ReadFormFileToTempFile(r, "file") + fileParam, err := support.ReadFormFileToTempFile(r, "file") if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } result, err := c.service.UploadFile(r.Context(), petIdParam, additionalMetadataParam, fileParam) @@ -274,6 +276,6 @@ func (c *PetApiController) UploadFile(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } diff --git a/samples/server/petstore/go-api-server/go/api_pet_service.go b/samples/server/petstore/go-api-server/go/api_pet_service.go index 9a390ecef3d0..02a73080f808 100644 --- a/samples/server/petstore/go-api-server/go/api_pet_service.go +++ b/samples/server/petstore/go-api-server/go/api_pet_service.go @@ -11,9 +11,12 @@ package petstoreserver import ( "context" - "net/http" "errors" + "net/http" "os" + + "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // PetApiService is a service that implements the logic for the PetApiServicer @@ -28,114 +31,114 @@ func NewPetApiService() PetApiServicer { } // AddPet - Add a new pet to the store -func (s *PetApiService) AddPet(ctx context.Context, pet Pet) (ImplResponse, error) { +func (s *PetApiService) AddPet(ctx context.Context, pet Pet) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ... - //return Response(200, Pet{}), nil + //return support.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 support.Response(405, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("AddPet method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("AddPet method not implemented") } // DeletePet - Deletes a pet -func (s *PetApiService) DeletePet(ctx context.Context, petId int64, apiKey string) (ImplResponse, error) { +func (s *PetApiService) DeletePet(ctx context.Context, petId int64, apiKey string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... - //return Response(400, nil),nil + //return support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("DeletePet method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("DeletePet method not implemented") } // FindPetsByStatus - Finds Pets by status -func (s *PetApiService) FindPetsByStatus(ctx context.Context, status []string) (ImplResponse, error) { +func (s *PetApiService) FindPetsByStatus(ctx context.Context, status []string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, []Pet{}) or use other options such as http.Ok ... - //return Response(200, []Pet{}), nil + //return support.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 support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("FindPetsByStatus method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("FindPetsByStatus method not implemented") } // FindPetsByTags - Finds Pets by tags // Deprecated -func (s *PetApiService) FindPetsByTags(ctx context.Context, tags []string) (ImplResponse, error) { +func (s *PetApiService) FindPetsByTags(ctx context.Context, tags []string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, []Pet{}) or use other options such as http.Ok ... - //return Response(200, []Pet{}), nil + //return support.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 support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("FindPetsByTags method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("FindPetsByTags method not implemented") } // GetPetById - Find pet by ID -func (s *PetApiService) GetPetById(ctx context.Context, petId int64) (ImplResponse, error) { +func (s *PetApiService) GetPetById(ctx context.Context, petId int64) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ... - //return Response(200, Pet{}), nil + //return support.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 support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("GetPetById method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("GetPetById method not implemented") } // UpdatePet - Update an existing pet -func (s *PetApiService) UpdatePet(ctx context.Context, pet Pet) (ImplResponse, error) { +func (s *PetApiService) UpdatePet(ctx context.Context, pet Pet) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ... - //return Response(200, Pet{}), nil + //return support.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 support.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 support.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 support.Response(405, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("UpdatePet method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("UpdatePet method not implemented") } // UpdatePetWithForm - Updates a pet in the store with form data -func (s *PetApiService) UpdatePetWithForm(ctx context.Context, petId int64, name string, status string) (ImplResponse, error) { +func (s *PetApiService) UpdatePetWithForm(ctx context.Context, petId int64, name string, status string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(405, {}) or use other options such as http.Ok ... - //return Response(405, nil),nil + //return support.Response(405, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("UpdatePetWithForm method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("UpdatePetWithForm method not implemented") } // UploadFile - uploads an image -func (s *PetApiService) UploadFile(ctx context.Context, petId int64, additionalMetadata string, file *os.File) (ImplResponse, error) { +func (s *PetApiService) UploadFile(ctx context.Context, petId int64, additionalMetadata string, file *os.File) (support.ImplResponse, error) { // 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. //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 support.Response(200, ApiResponse{}), nil - return Response(http.StatusNotImplemented, nil), errors.New("UploadFile method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("UploadFile method not implemented") } diff --git a/samples/server/petstore/go-api-server/go/api_store.go b/samples/server/petstore/go-api-server/go/api_store.go index b0df49b92d31..7811356b29fd 100644 --- a/samples/server/petstore/go-api-server/go/api_store.go +++ b/samples/server/petstore/go-api-server/go/api_store.go @@ -10,34 +10,36 @@ package petstoreserver import ( - "encoding/json" "net/http" "strings" "github.com/gorilla/mux" + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // StoreApiController binds http requests to an api service and writes the service results to the http response type StoreApiController struct { service StoreApiServicer - errorHandler ErrorHandler + errorHandler support.ErrorHandler } // StoreApiOption for how the controller is set up. type StoreApiOption func(*StoreApiController) // WithStoreApiErrorHandler inject ErrorHandler into controller -func WithStoreApiErrorHandler(h ErrorHandler) StoreApiOption { +func WithStoreApiErrorHandler(h support.ErrorHandler) StoreApiOption { return func(c *StoreApiController) { c.errorHandler = h } } // NewStoreApiController creates a default api controller -func NewStoreApiController(s StoreApiServicer, opts ...StoreApiOption) Router { +func NewStoreApiController(s StoreApiServicer, opts ...StoreApiOption) support.Router { controller := &StoreApiController{ service: s, - errorHandler: DefaultErrorHandler, + errorHandler: support.DefaultErrorHandler, } for _, opt := range opts { @@ -48,8 +50,8 @@ func NewStoreApiController(s StoreApiServicer, opts ...StoreApiOption) Router { } // Routes returns all the api routes for the StoreApiController -func (c *StoreApiController) Routes() Routes { - return Routes{ +func (c *StoreApiController) Routes() support.Routes { + return support.Routes{ { "DeleteOrder", strings.ToUpper("Delete"), @@ -89,7 +91,7 @@ func (c *StoreApiController) DeleteOrder(w http.ResponseWriter, r *http.Request) return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -102,16 +104,16 @@ func (c *StoreApiController) GetInventory(w http.ResponseWriter, r *http.Request return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // GetOrderById - Find purchase order by ID func (c *StoreApiController) GetOrderById(w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) - orderIdParam, err := parseInt64Parameter(params["orderId"], true) + orderIdParam, err := support.ParseInt64Parameter(params["orderId"], true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } @@ -122,17 +124,17 @@ func (c *StoreApiController) GetOrderById(w http.ResponseWriter, r *http.Request return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // PlaceOrder - Place an order for a pet func (c *StoreApiController) PlaceOrder(w http.ResponseWriter, r *http.Request) { orderParam := Order{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&orderParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertOrderRequired(orderParam); err != nil { @@ -146,6 +148,6 @@ func (c *StoreApiController) PlaceOrder(w http.ResponseWriter, r *http.Request) return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } diff --git a/samples/server/petstore/go-api-server/go/api_store_service.go b/samples/server/petstore/go-api-server/go/api_store_service.go index 3c91040fa9f7..62044deb2218 100644 --- a/samples/server/petstore/go-api-server/go/api_store_service.go +++ b/samples/server/petstore/go-api-server/go/api_store_service.go @@ -11,8 +11,11 @@ package petstoreserver import ( "context" - "net/http" "errors" + "net/http" + + "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // StoreApiService is a service that implements the logic for the StoreApiServicer @@ -27,57 +30,57 @@ func NewStoreApiService() StoreApiServicer { } // DeleteOrder - Delete purchase order by ID -func (s *StoreApiService) DeleteOrder(ctx context.Context, orderId string) (ImplResponse, error) { +func (s *StoreApiService) DeleteOrder(ctx context.Context, orderId string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... - //return Response(400, nil),nil + //return support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("DeleteOrder method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("DeleteOrder method not implemented") } // GetInventory - Returns pet inventories by status -func (s *StoreApiService) GetInventory(ctx context.Context) (ImplResponse, error) { +func (s *StoreApiService) GetInventory(ctx context.Context) (support.ImplResponse, error) { // 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. //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 support.Response(200, map[string]int32{}), nil - return Response(http.StatusNotImplemented, nil), errors.New("GetInventory method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("GetInventory method not implemented") } // GetOrderById - Find purchase order by ID -func (s *StoreApiService) GetOrderById(ctx context.Context, orderId int64) (ImplResponse, error) { +func (s *StoreApiService) GetOrderById(ctx context.Context, orderId int64) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Order{}) or use other options such as http.Ok ... - //return Response(200, Order{}), nil + //return support.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 support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("GetOrderById method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("GetOrderById method not implemented") } // PlaceOrder - Place an order for a pet -func (s *StoreApiService) PlaceOrder(ctx context.Context, order Order) (ImplResponse, error) { +func (s *StoreApiService) PlaceOrder(ctx context.Context, order Order) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Order{}) or use other options such as http.Ok ... - //return Response(200, Order{}), nil + //return support.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 support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("PlaceOrder method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("PlaceOrder method not implemented") } diff --git a/samples/server/petstore/go-api-server/go/api_user.go b/samples/server/petstore/go-api-server/go/api_user.go index 5eb1f57d4bef..3aca203c64af 100644 --- a/samples/server/petstore/go-api-server/go/api_user.go +++ b/samples/server/petstore/go-api-server/go/api_user.go @@ -10,34 +10,36 @@ package petstoreserver import ( - "encoding/json" "net/http" "strings" "github.com/gorilla/mux" + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // UserApiController binds http requests to an api service and writes the service results to the http response type UserApiController struct { service UserApiServicer - errorHandler ErrorHandler + errorHandler support.ErrorHandler } // UserApiOption for how the controller is set up. type UserApiOption func(*UserApiController) // WithUserApiErrorHandler inject ErrorHandler into controller -func WithUserApiErrorHandler(h ErrorHandler) UserApiOption { +func WithUserApiErrorHandler(h support.ErrorHandler) UserApiOption { return func(c *UserApiController) { c.errorHandler = h } } // NewUserApiController creates a default api controller -func NewUserApiController(s UserApiServicer, opts ...UserApiOption) Router { +func NewUserApiController(s UserApiServicer, opts ...UserApiOption) support.Router { controller := &UserApiController{ service: s, - errorHandler: DefaultErrorHandler, + errorHandler: support.DefaultErrorHandler, } for _, opt := range opts { @@ -48,8 +50,8 @@ func NewUserApiController(s UserApiServicer, opts ...UserApiOption) Router { } // Routes returns all the api routes for the UserApiController -func (c *UserApiController) Routes() Routes { - return Routes{ +func (c *UserApiController) Routes() support.Routes { + return support.Routes{ { "CreateUser", strings.ToUpper("Post"), @@ -104,10 +106,10 @@ func (c *UserApiController) Routes() Routes { // CreateUser - Create user func (c *UserApiController) CreateUser(w http.ResponseWriter, r *http.Request) { userParam := User{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&userParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertUserRequired(userParam); err != nil { @@ -121,17 +123,17 @@ func (c *UserApiController) CreateUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // CreateUsersWithArrayInput - Creates list of users with given input array func (c *UserApiController) CreateUsersWithArrayInput(w http.ResponseWriter, r *http.Request) { userParam := []User{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&userParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } for _, el := range userParam { @@ -147,17 +149,17 @@ func (c *UserApiController) CreateUsersWithArrayInput(w http.ResponseWriter, r * return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // CreateUsersWithListInput - Creates list of users with given input array func (c *UserApiController) CreateUsersWithListInput(w http.ResponseWriter, r *http.Request) { userParam := []User{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&userParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } for _, el := range userParam { @@ -173,7 +175,7 @@ func (c *UserApiController) CreateUsersWithListInput(w http.ResponseWriter, r *h return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -189,7 +191,7 @@ func (c *UserApiController) DeleteUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -205,7 +207,7 @@ func (c *UserApiController) GetUserByName(w http.ResponseWriter, r *http.Request return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -221,7 +223,7 @@ func (c *UserApiController) LoginUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -234,7 +236,7 @@ func (c *UserApiController) LogoutUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -244,10 +246,10 @@ func (c *UserApiController) UpdateUser(w http.ResponseWriter, r *http.Request) { usernameParam := params["username"] userParam := User{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&userParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertUserRequired(userParam); err != nil { @@ -261,6 +263,6 @@ func (c *UserApiController) UpdateUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } diff --git a/samples/server/petstore/go-api-server/go/api_user_service.go b/samples/server/petstore/go-api-server/go/api_user_service.go index 6ae5a6d751bc..d24f3c6084c0 100644 --- a/samples/server/petstore/go-api-server/go/api_user_service.go +++ b/samples/server/petstore/go-api-server/go/api_user_service.go @@ -11,8 +11,11 @@ package petstoreserver import ( "context" - "net/http" "errors" + "net/http" + + "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // UserApiService is a service that implements the logic for the UserApiServicer @@ -27,104 +30,104 @@ func NewUserApiService() UserApiServicer { } // CreateUser - Create user -func (s *UserApiService) CreateUser(ctx context.Context, user User) (ImplResponse, error) { +func (s *UserApiService) CreateUser(ctx context.Context, user User) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... - //return Response(0, nil),nil + //return support.Response(0, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("CreateUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("CreateUser method not implemented") } // CreateUsersWithArrayInput - Creates list of users with given input array -func (s *UserApiService) CreateUsersWithArrayInput(ctx context.Context, user []User) (ImplResponse, error) { +func (s *UserApiService) CreateUsersWithArrayInput(ctx context.Context, user []User) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... - //return Response(0, nil),nil + //return support.Response(0, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithArrayInput method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithArrayInput method not implemented") } // CreateUsersWithListInput - Creates list of users with given input array -func (s *UserApiService) CreateUsersWithListInput(ctx context.Context, user []User) (ImplResponse, error) { +func (s *UserApiService) CreateUsersWithListInput(ctx context.Context, user []User) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... - //return Response(0, nil),nil + //return support.Response(0, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithListInput method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithListInput method not implemented") } // DeleteUser - Delete user -func (s *UserApiService) DeleteUser(ctx context.Context, username string) (ImplResponse, error) { +func (s *UserApiService) DeleteUser(ctx context.Context, username string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... - //return Response(400, nil),nil + //return support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("DeleteUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("DeleteUser method not implemented") } // GetUserByName - Get user by user name -func (s *UserApiService) GetUserByName(ctx context.Context, username string) (ImplResponse, error) { +func (s *UserApiService) GetUserByName(ctx context.Context, username string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, User{}) or use other options such as http.Ok ... - //return Response(200, User{}), nil + //return support.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 + //return support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("GetUserByName method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("GetUserByName method not implemented") } // LoginUser - Logs user into the system -func (s *UserApiService) LoginUser(ctx context.Context, username string, password string) (ImplResponse, error) { +func (s *UserApiService) LoginUser(ctx context.Context, username string, password string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, string{}) or use other options such as http.Ok ... - //return Response(200, string{}), nil + //return support.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 support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("LoginUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("LoginUser method not implemented") } // LogoutUser - Logs out current logged in user session -func (s *UserApiService) LogoutUser(ctx context.Context) (ImplResponse, error) { +func (s *UserApiService) LogoutUser(ctx context.Context) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... - //return Response(0, nil),nil + //return support.Response(0, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("LogoutUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("LogoutUser method not implemented") } // UpdateUser - Updated user -func (s *UserApiService) UpdateUser(ctx context.Context, username string, user User) (ImplResponse, error) { +func (s *UserApiService) UpdateUser(ctx context.Context, username string, user User) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... - //return Response(400, nil),nil + //return support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("UpdateUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("UpdateUser method not implemented") } diff --git a/samples/server/petstore/go-api-server/go/model_api_response.go b/samples/server/petstore/go-api-server/go/model_api_response.go index 324cfbe08444..37b1391b3200 100644 --- a/samples/server/petstore/go-api-server/go/model_api_response.go +++ b/samples/server/petstore/go-api-server/go/model_api_response.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // ApiResponse - Describes the result of uploading an image resource type ApiResponse struct { @@ -27,10 +31,10 @@ func AssertApiResponseRequired(obj ApiResponse) error { // AssertRecurseApiResponseRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of ApiResponse (e.g. [][]ApiResponse), otherwise ErrTypeAssertionError is thrown. func AssertRecurseApiResponseRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aApiResponse, ok := obj.(ApiResponse) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertApiResponseRequired(aApiResponse) }) diff --git a/samples/server/petstore/go-api-server/go/model_category.go b/samples/server/petstore/go-api-server/go/model_category.go index 3ae01892a3fc..b742f6629e83 100644 --- a/samples/server/petstore/go-api-server/go/model_category.go +++ b/samples/server/petstore/go-api-server/go/model_category.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // Category - A category for a pet type Category struct { @@ -25,10 +29,10 @@ func AssertCategoryRequired(obj Category) error { // AssertRecurseCategoryRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of Category (e.g. [][]Category), otherwise ErrTypeAssertionError is thrown. func AssertRecurseCategoryRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aCategory, ok := obj.(Category) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertCategoryRequired(aCategory) }) diff --git a/samples/server/petstore/go-api-server/go/model_order.go b/samples/server/petstore/go-api-server/go/model_order.go index 80ecfea3dc7f..d0d11d434d0a 100644 --- a/samples/server/petstore/go-api-server/go/model_order.go +++ b/samples/server/petstore/go-api-server/go/model_order.go @@ -8,9 +8,9 @@ */ package petstoreserver - import ( "time" + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" ) // Order - An order for a pets from the pet store @@ -38,10 +38,10 @@ func AssertOrderRequired(obj Order) error { // AssertRecurseOrderRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of Order (e.g. [][]Order), otherwise ErrTypeAssertionError is thrown. func AssertRecurseOrderRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aOrder, ok := obj.(Order) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertOrderRequired(aOrder) }) diff --git a/samples/server/petstore/go-api-server/go/model_pet.go b/samples/server/petstore/go-api-server/go/model_pet.go index 8e3dc7ad66f1..9dab6f10be93 100644 --- a/samples/server/petstore/go-api-server/go/model_pet.go +++ b/samples/server/petstore/go-api-server/go/model_pet.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // Pet - A pet for sale in the pet store type Pet struct { @@ -34,8 +38,8 @@ func AssertPetRequired(obj Pet) error { "photoUrls": obj.PhotoUrls, } for name, el := range elements { - if isZero := IsZeroValue(el); isZero { - return &RequiredError{Field: name} + if isZero := support.IsZeroValue(el); isZero { + return &support.RequiredError{Field: name} } } @@ -53,10 +57,10 @@ func AssertPetRequired(obj Pet) error { // AssertRecursePetRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of Pet (e.g. [][]Pet), otherwise ErrTypeAssertionError is thrown. func AssertRecursePetRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aPet, ok := obj.(Pet) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertPetRequired(aPet) }) diff --git a/samples/server/petstore/go-api-server/go/model_tag.go b/samples/server/petstore/go-api-server/go/model_tag.go index 0631ccc4866f..9a442e48b2ec 100644 --- a/samples/server/petstore/go-api-server/go/model_tag.go +++ b/samples/server/petstore/go-api-server/go/model_tag.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // Tag - A tag for a pet type Tag struct { @@ -25,10 +29,10 @@ func AssertTagRequired(obj Tag) error { // AssertRecurseTagRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of Tag (e.g. [][]Tag), otherwise ErrTypeAssertionError is thrown. func AssertRecurseTagRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aTag, ok := obj.(Tag) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertTagRequired(aTag) }) diff --git a/samples/server/petstore/go-api-server/go/model_user.go b/samples/server/petstore/go-api-server/go/model_user.go index 83ac114e3c59..a52e4d55560a 100644 --- a/samples/server/petstore/go-api-server/go/model_user.go +++ b/samples/server/petstore/go-api-server/go/model_user.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // User - A User who is purchasing from the pet store type User struct { @@ -38,10 +42,10 @@ func AssertUserRequired(obj User) error { // AssertRecurseUserRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of User (e.g. [][]User), otherwise ErrTypeAssertionError is thrown. func AssertRecurseUserRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aUser, ok := obj.(User) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertUserRequired(aUser) }) diff --git a/samples/server/petstore/go-api-server/main.go b/samples/server/petstore/go-api-server/main.go index ddc5258297ca..7b22919e9839 100644 --- a/samples/server/petstore/go-api-server/main.go +++ b/samples/server/petstore/go-api-server/main.go @@ -14,6 +14,7 @@ import ( "net/http" petstoreserver "github.com/GIT_USER_ID/GIT_REPO_ID/go" + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" ) func main() { @@ -28,7 +29,7 @@ func main() { UserApiService := petstoreserver.NewUserApiService() UserApiController := petstoreserver.NewUserApiController(UserApiService) - router := petstoreserver.NewRouter(PetApiController, StoreApiController, UserApiController) + router := support.NewRouter(PetApiController, StoreApiController, UserApiController) log.Fatal(http.ListenAndServe(":8080", router)) } diff --git a/samples/server/petstore/go-api-server/go/error.go b/samples/server/petstore/go-api-server/support/error.go similarity index 98% rename from samples/server/petstore/go-api-server/go/error.go rename to samples/server/petstore/go-api-server/support/error.go index 2c0b010fe8da..e9c4795ffe3e 100644 --- a/samples/server/petstore/go-api-server/go/error.go +++ b/samples/server/petstore/go-api-server/support/error.go @@ -7,7 +7,7 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support import ( "errors" diff --git a/samples/server/petstore/go-chi-server/go/helpers.go b/samples/server/petstore/go-api-server/support/helpers.go similarity index 70% rename from samples/server/petstore/go-chi-server/go/helpers.go rename to samples/server/petstore/go-api-server/support/helpers.go index f18a261018dd..ce5dcce4819e 100644 --- a/samples/server/petstore/go-chi-server/go/helpers.go +++ b/samples/server/petstore/go-api-server/support/helpers.go @@ -7,9 +7,12 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support import ( + "encoding/json" + "net/http" + "io" "reflect" ) @@ -62,3 +65,28 @@ func AssertRecurseValueRequired(value reflect.Value, callback func(interface{}) } return nil } + +// EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code +func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, w http.ResponseWriter) error { + wHeader := w.Header() + if headers != nil { + for key, values := range headers { + for _, value := range values { + wHeader.Add(key, value) + } + } + } + wHeader.Set("Content-Type", "application/json; charset=UTF-8") + if status != nil { + w.WriteHeader(*status) + } else { + w.WriteHeader(http.StatusOK) + } + + return json.NewEncoder(w).Encode(i) +} + +// NewJSONDecoder creates a jew json decoder to decode an http body. +func NewJSONDecoder(r io.Reader) *json.Decoder { + return json.NewDecoder(r) +} diff --git a/samples/server/petstore/go-chi-server/go/impl.go b/samples/server/petstore/go-api-server/support/impl.go similarity index 94% rename from samples/server/petstore/go-chi-server/go/impl.go rename to samples/server/petstore/go-api-server/support/impl.go index 8c72e26a342a..54db797feb04 100644 --- a/samples/server/petstore/go-chi-server/go/impl.go +++ b/samples/server/petstore/go-api-server/support/impl.go @@ -7,7 +7,7 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support // ImplResponse response defines an error code with the associated body type ImplResponse struct { diff --git a/samples/server/petstore/go-server-required/go/logger.go b/samples/server/petstore/go-api-server/support/logger.go similarity index 96% rename from samples/server/petstore/go-server-required/go/logger.go rename to samples/server/petstore/go-api-server/support/logger.go index 08cc0ea3f1d2..cb27ef95fd71 100644 --- a/samples/server/petstore/go-server-required/go/logger.go +++ b/samples/server/petstore/go-api-server/support/logger.go @@ -7,7 +7,7 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support import ( "log" diff --git a/samples/server/petstore/go-api-server/go/routers.go b/samples/server/petstore/go-api-server/support/routers.go similarity index 75% rename from samples/server/petstore/go-api-server/go/routers.go rename to samples/server/petstore/go-api-server/support/routers.go index 2b34778c5a1b..76e0a071652a 100644 --- a/samples/server/petstore/go-api-server/go/routers.go +++ b/samples/server/petstore/go-api-server/support/routers.go @@ -7,10 +7,9 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support import ( - "encoding/json" "errors" "github.com/gorilla/mux" "io/ioutil" @@ -59,26 +58,6 @@ func NewRouter(routers ...Router) *mux.Router { return router } -// EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code -func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, w http.ResponseWriter) error { - wHeader := w.Header() - if headers != nil { - for key, values := range headers { - for _, value := range values { - wHeader.Add(key, value) - } - } - } - wHeader.Set("Content-Type", "application/json; charset=UTF-8") - if status != nil { - w.WriteHeader(*status) - } else { - w.WriteHeader(http.StatusOK) - } - - return json.NewEncoder(w).Encode(i) -} - // ReadFormFileToTempFile reads file data from a request form and writes it to a temporary file func ReadFormFileToTempFile(r *http.Request, key string) (*os.File, error) { _, fileHeader, err := r.FormFile(key) @@ -135,8 +114,8 @@ func readFileHeaderToTempFile(fileHeader *multipart.FileHeader) (*os.File, error return file, nil } -// parseInt64Parameter parses a string parameter to an int64. -func parseInt64Parameter(param string, required bool) (int64, error) { +// ParseInt64Parameter parses a string parameter to an int64. +func ParseInt64Parameter(param string, required bool) (int64, error) { if param == "" { if required { return 0, errors.New(errMsgRequiredMissing) @@ -148,8 +127,8 @@ func parseInt64Parameter(param string, required bool) (int64, error) { return strconv.ParseInt(param, 10, 64) } -// parseInt32Parameter parses a string parameter to an int32. -func parseInt32Parameter(param string, required bool) (int32, error) { +// ParseInt32Parameter parses a string parameter to an int32. +func ParseInt32Parameter(param string, required bool) (int32, error) { if param == "" { if required { return 0, errors.New(errMsgRequiredMissing) @@ -166,8 +145,8 @@ func parseInt32Parameter(param string, required bool) (int32, error) { return int32(val), nil } -// parseBoolParameter parses a string parameter to a bool -func parseBoolParameter(param string) (bool, error) { +// ParseBoolParameter parses a string parameter to a bool +func ParseBoolParameter(param string) (bool, error) { val, err := strconv.ParseBool(param) if err != nil { return false, err @@ -176,8 +155,8 @@ func parseBoolParameter(param string) (bool, error) { return bool(val), nil } -// parseInt64ArrayParameter parses a string parameter containing array of values to []int64. -func parseInt64ArrayParameter(param, delim string, required bool) ([]int64, error) { +// ParseInt64ArrayParameter parses a string parameter containing array of values to []int64. +func ParseInt64ArrayParameter(param, delim string, required bool) ([]int64, error) { if param == "" { if required { return nil, errors.New(errMsgRequiredMissing) @@ -200,8 +179,8 @@ func parseInt64ArrayParameter(param, delim string, required bool) ([]int64, erro return ints, nil } -// parseInt32ArrayParameter parses a string parameter containing array of values to []int32. -func parseInt32ArrayParameter(param, delim string, required bool) ([]int32, error) { +// ParseInt32ArrayParameter parses a string parameter containing array of values to []int32. +func ParseInt32ArrayParameter(param, delim string, required bool) ([]int32, error) { if param == "" { if required { return nil, errors.New(errMsgRequiredMissing) @@ -222,4 +201,4 @@ func parseInt32ArrayParameter(param, delim string, required bool) ([]int32, erro } return ints, nil -} \ No newline at end of file +} diff --git a/samples/server/petstore/go-chi-server/.openapi-generator/FILES b/samples/server/petstore/go-chi-server/.openapi-generator/FILES index 59b4003ddcec..f8bd847b8887 100644 --- a/samples/server/petstore/go-chi-server/.openapi-generator/FILES +++ b/samples/server/petstore/go-chi-server/.openapi-generator/FILES @@ -9,15 +9,15 @@ go/api_store.go go/api_store_service.go go/api_user.go go/api_user_service.go -go/error.go -go/helpers.go -go/impl.go -go/logger.go go/model_api_response.go go/model_category.go go/model_order.go go/model_pet.go go/model_tag.go go/model_user.go -go/routers.go main.go +support/error.go +support/helpers.go +support/impl.go +support/logger.go +support/routers.go diff --git a/samples/server/petstore/go-chi-server/go/api.go b/samples/server/petstore/go-chi-server/go/api.go index bedb0f7985e5..b807031a503d 100644 --- a/samples/server/petstore/go-chi-server/go/api.go +++ b/samples/server/petstore/go-chi-server/go/api.go @@ -13,6 +13,8 @@ import ( "context" "net/http" "os" + "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) @@ -60,15 +62,15 @@ type UserApiRouter interface { // while the service implementation can be ignored with the .openapi-generator-ignore file // and updated with the logic required for the API. type PetApiServicer interface { - AddPet(context.Context, Pet) (ImplResponse, error) - DeletePet(context.Context, int64, string) (ImplResponse, error) - FindPetsByStatus(context.Context, []string) (ImplResponse, error) + AddPet(context.Context, Pet) (support.ImplResponse, error) + DeletePet(context.Context, int64, string) (support.ImplResponse, error) + FindPetsByStatus(context.Context, []string) (support.ImplResponse, error) // Deprecated - FindPetsByTags(context.Context, []string) (ImplResponse, error) - GetPetById(context.Context, int64) (ImplResponse, error) - UpdatePet(context.Context, Pet) (ImplResponse, error) - UpdatePetWithForm(context.Context, int64, string, string) (ImplResponse, error) - UploadFile(context.Context, int64, string, *os.File) (ImplResponse, error) + FindPetsByTags(context.Context, []string) (support.ImplResponse, error) + GetPetById(context.Context, int64) (support.ImplResponse, error) + UpdatePet(context.Context, Pet) (support.ImplResponse, error) + UpdatePetWithForm(context.Context, int64, string, string) (support.ImplResponse, error) + UploadFile(context.Context, int64, string, *os.File) (support.ImplResponse, error) } @@ -77,10 +79,10 @@ type PetApiServicer interface { // while the service implementation can be ignored with the .openapi-generator-ignore file // and updated with the logic required for the API. type StoreApiServicer interface { - DeleteOrder(context.Context, string) (ImplResponse, error) - GetInventory(context.Context) (ImplResponse, error) - GetOrderById(context.Context, int64) (ImplResponse, error) - PlaceOrder(context.Context, Order) (ImplResponse, error) + DeleteOrder(context.Context, string) (support.ImplResponse, error) + GetInventory(context.Context) (support.ImplResponse, error) + GetOrderById(context.Context, int64) (support.ImplResponse, error) + PlaceOrder(context.Context, Order) (support.ImplResponse, error) } @@ -89,12 +91,12 @@ type StoreApiServicer interface { // while the service implementation can be ignored with the .openapi-generator-ignore file // and updated with the logic required for the API. type UserApiServicer interface { - CreateUser(context.Context, User) (ImplResponse, error) - CreateUsersWithArrayInput(context.Context, []User) (ImplResponse, error) - CreateUsersWithListInput(context.Context, []User) (ImplResponse, error) - DeleteUser(context.Context, string) (ImplResponse, error) - GetUserByName(context.Context, string) (ImplResponse, error) - LoginUser(context.Context, string, string) (ImplResponse, error) - LogoutUser(context.Context) (ImplResponse, error) - UpdateUser(context.Context, string, User) (ImplResponse, error) + CreateUser(context.Context, User) (support.ImplResponse, error) + CreateUsersWithArrayInput(context.Context, []User) (support.ImplResponse, error) + CreateUsersWithListInput(context.Context, []User) (support.ImplResponse, error) + DeleteUser(context.Context, string) (support.ImplResponse, error) + GetUserByName(context.Context, string) (support.ImplResponse, error) + LoginUser(context.Context, string, string) (support.ImplResponse, error) + LogoutUser(context.Context) (support.ImplResponse, error) + UpdateUser(context.Context, string, User) (support.ImplResponse, error) } diff --git a/samples/server/petstore/go-chi-server/go/api_pet.go b/samples/server/petstore/go-chi-server/go/api_pet.go index 2202804fb200..067d7534e7f3 100644 --- a/samples/server/petstore/go-chi-server/go/api_pet.go +++ b/samples/server/petstore/go-chi-server/go/api_pet.go @@ -10,34 +10,36 @@ package petstoreserver import ( - "encoding/json" "net/http" "strings" "github.com/go-chi/chi/v5" + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // PetApiController binds http requests to an api service and writes the service results to the http response type PetApiController struct { service PetApiServicer - errorHandler ErrorHandler + errorHandler support.ErrorHandler } // PetApiOption for how the controller is set up. type PetApiOption func(*PetApiController) // WithPetApiErrorHandler inject ErrorHandler into controller -func WithPetApiErrorHandler(h ErrorHandler) PetApiOption { +func WithPetApiErrorHandler(h support.ErrorHandler) PetApiOption { return func(c *PetApiController) { c.errorHandler = h } } // NewPetApiController creates a default api controller -func NewPetApiController(s PetApiServicer, opts ...PetApiOption) Router { +func NewPetApiController(s PetApiServicer, opts ...PetApiOption) support.Router { controller := &PetApiController{ service: s, - errorHandler: DefaultErrorHandler, + errorHandler: support.DefaultErrorHandler, } for _, opt := range opts { @@ -48,8 +50,8 @@ func NewPetApiController(s PetApiServicer, opts ...PetApiOption) Router { } // Routes returns all the api routes for the PetApiController -func (c *PetApiController) Routes() Routes { - return Routes{ +func (c *PetApiController) Routes() support.Routes { + return support.Routes{ { "AddPet", strings.ToUpper("Post"), @@ -104,10 +106,10 @@ func (c *PetApiController) Routes() Routes { // AddPet - Add a new pet to the store func (c *PetApiController) AddPet(w http.ResponseWriter, r *http.Request) { petParam := Pet{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&petParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertPetRequired(petParam); err != nil { @@ -121,15 +123,15 @@ func (c *PetApiController) AddPet(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // DeletePet - Deletes a pet func (c *PetApiController) DeletePet(w http.ResponseWriter, r *http.Request) { - petIdParam, err := parseInt64Parameter(chi.URLParam(r, "petId"), true) + petIdParam, err := support.ParseInt64Parameter(chi.URLParam(r, "petId"), true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } @@ -141,7 +143,7 @@ func (c *PetApiController) DeletePet(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -156,7 +158,7 @@ func (c *PetApiController) FindPetsByStatus(w http.ResponseWriter, r *http.Reque return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -172,15 +174,15 @@ func (c *PetApiController) FindPetsByTags(w http.ResponseWriter, r *http.Request return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // GetPetById - Find pet by ID func (c *PetApiController) GetPetById(w http.ResponseWriter, r *http.Request) { - petIdParam, err := parseInt64Parameter(chi.URLParam(r, "petId"), true) + petIdParam, err := support.ParseInt64Parameter(chi.URLParam(r, "petId"), true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } @@ -191,17 +193,17 @@ func (c *PetApiController) GetPetById(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // UpdatePet - Update an existing pet func (c *PetApiController) UpdatePet(w http.ResponseWriter, r *http.Request) { petParam := Pet{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&petParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertPetRequired(petParam); err != nil { @@ -215,19 +217,19 @@ func (c *PetApiController) UpdatePet(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // UpdatePetWithForm - Updates a pet in the store with form data func (c *PetApiController) UpdatePetWithForm(w http.ResponseWriter, r *http.Request) { if err := r.ParseForm(); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } - petIdParam, err := parseInt64Parameter(chi.URLParam(r, "petId"), true) + petIdParam, err := support.ParseInt64Parameter(chi.URLParam(r, "petId"), true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } @@ -240,27 +242,27 @@ func (c *PetApiController) UpdatePetWithForm(w http.ResponseWriter, r *http.Requ return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // UploadFile - uploads an image func (c *PetApiController) UploadFile(w http.ResponseWriter, r *http.Request) { if err := r.ParseMultipartForm(32 << 20); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } - petIdParam, err := parseInt64Parameter(chi.URLParam(r, "petId"), true) + petIdParam, err := support.ParseInt64Parameter(chi.URLParam(r, "petId"), true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } additionalMetadataParam := r.FormValue("additionalMetadata") - fileParam, err := ReadFormFileToTempFile(r, "file") + fileParam, err := support.ReadFormFileToTempFile(r, "file") if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } result, err := c.service.UploadFile(r.Context(), petIdParam, additionalMetadataParam, fileParam) @@ -270,6 +272,6 @@ func (c *PetApiController) UploadFile(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } diff --git a/samples/server/petstore/go-chi-server/go/api_pet_service.go b/samples/server/petstore/go-chi-server/go/api_pet_service.go index 9a390ecef3d0..02a73080f808 100644 --- a/samples/server/petstore/go-chi-server/go/api_pet_service.go +++ b/samples/server/petstore/go-chi-server/go/api_pet_service.go @@ -11,9 +11,12 @@ package petstoreserver import ( "context" - "net/http" "errors" + "net/http" "os" + + "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // PetApiService is a service that implements the logic for the PetApiServicer @@ -28,114 +31,114 @@ func NewPetApiService() PetApiServicer { } // AddPet - Add a new pet to the store -func (s *PetApiService) AddPet(ctx context.Context, pet Pet) (ImplResponse, error) { +func (s *PetApiService) AddPet(ctx context.Context, pet Pet) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ... - //return Response(200, Pet{}), nil + //return support.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 support.Response(405, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("AddPet method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("AddPet method not implemented") } // DeletePet - Deletes a pet -func (s *PetApiService) DeletePet(ctx context.Context, petId int64, apiKey string) (ImplResponse, error) { +func (s *PetApiService) DeletePet(ctx context.Context, petId int64, apiKey string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... - //return Response(400, nil),nil + //return support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("DeletePet method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("DeletePet method not implemented") } // FindPetsByStatus - Finds Pets by status -func (s *PetApiService) FindPetsByStatus(ctx context.Context, status []string) (ImplResponse, error) { +func (s *PetApiService) FindPetsByStatus(ctx context.Context, status []string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, []Pet{}) or use other options such as http.Ok ... - //return Response(200, []Pet{}), nil + //return support.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 support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("FindPetsByStatus method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("FindPetsByStatus method not implemented") } // FindPetsByTags - Finds Pets by tags // Deprecated -func (s *PetApiService) FindPetsByTags(ctx context.Context, tags []string) (ImplResponse, error) { +func (s *PetApiService) FindPetsByTags(ctx context.Context, tags []string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, []Pet{}) or use other options such as http.Ok ... - //return Response(200, []Pet{}), nil + //return support.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 support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("FindPetsByTags method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("FindPetsByTags method not implemented") } // GetPetById - Find pet by ID -func (s *PetApiService) GetPetById(ctx context.Context, petId int64) (ImplResponse, error) { +func (s *PetApiService) GetPetById(ctx context.Context, petId int64) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ... - //return Response(200, Pet{}), nil + //return support.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 support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("GetPetById method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("GetPetById method not implemented") } // UpdatePet - Update an existing pet -func (s *PetApiService) UpdatePet(ctx context.Context, pet Pet) (ImplResponse, error) { +func (s *PetApiService) UpdatePet(ctx context.Context, pet Pet) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ... - //return Response(200, Pet{}), nil + //return support.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 support.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 support.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 support.Response(405, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("UpdatePet method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("UpdatePet method not implemented") } // UpdatePetWithForm - Updates a pet in the store with form data -func (s *PetApiService) UpdatePetWithForm(ctx context.Context, petId int64, name string, status string) (ImplResponse, error) { +func (s *PetApiService) UpdatePetWithForm(ctx context.Context, petId int64, name string, status string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(405, {}) or use other options such as http.Ok ... - //return Response(405, nil),nil + //return support.Response(405, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("UpdatePetWithForm method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("UpdatePetWithForm method not implemented") } // UploadFile - uploads an image -func (s *PetApiService) UploadFile(ctx context.Context, petId int64, additionalMetadata string, file *os.File) (ImplResponse, error) { +func (s *PetApiService) UploadFile(ctx context.Context, petId int64, additionalMetadata string, file *os.File) (support.ImplResponse, error) { // 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. //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 support.Response(200, ApiResponse{}), nil - return Response(http.StatusNotImplemented, nil), errors.New("UploadFile method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("UploadFile method not implemented") } diff --git a/samples/server/petstore/go-chi-server/go/api_store.go b/samples/server/petstore/go-chi-server/go/api_store.go index 67a30090afb3..a1153fe75c4f 100644 --- a/samples/server/petstore/go-chi-server/go/api_store.go +++ b/samples/server/petstore/go-chi-server/go/api_store.go @@ -10,34 +10,36 @@ package petstoreserver import ( - "encoding/json" "net/http" "strings" "github.com/go-chi/chi/v5" + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // StoreApiController binds http requests to an api service and writes the service results to the http response type StoreApiController struct { service StoreApiServicer - errorHandler ErrorHandler + errorHandler support.ErrorHandler } // StoreApiOption for how the controller is set up. type StoreApiOption func(*StoreApiController) // WithStoreApiErrorHandler inject ErrorHandler into controller -func WithStoreApiErrorHandler(h ErrorHandler) StoreApiOption { +func WithStoreApiErrorHandler(h support.ErrorHandler) StoreApiOption { return func(c *StoreApiController) { c.errorHandler = h } } // NewStoreApiController creates a default api controller -func NewStoreApiController(s StoreApiServicer, opts ...StoreApiOption) Router { +func NewStoreApiController(s StoreApiServicer, opts ...StoreApiOption) support.Router { controller := &StoreApiController{ service: s, - errorHandler: DefaultErrorHandler, + errorHandler: support.DefaultErrorHandler, } for _, opt := range opts { @@ -48,8 +50,8 @@ func NewStoreApiController(s StoreApiServicer, opts ...StoreApiOption) Router { } // Routes returns all the api routes for the StoreApiController -func (c *StoreApiController) Routes() Routes { - return Routes{ +func (c *StoreApiController) Routes() support.Routes { + return support.Routes{ { "DeleteOrder", strings.ToUpper("Delete"), @@ -88,7 +90,7 @@ func (c *StoreApiController) DeleteOrder(w http.ResponseWriter, r *http.Request) return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -101,15 +103,15 @@ func (c *StoreApiController) GetInventory(w http.ResponseWriter, r *http.Request return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // GetOrderById - Find purchase order by ID func (c *StoreApiController) GetOrderById(w http.ResponseWriter, r *http.Request) { - orderIdParam, err := parseInt64Parameter(chi.URLParam(r, "orderId"), true) + orderIdParam, err := support.ParseInt64Parameter(chi.URLParam(r, "orderId"), true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } @@ -120,17 +122,17 @@ func (c *StoreApiController) GetOrderById(w http.ResponseWriter, r *http.Request return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // PlaceOrder - Place an order for a pet func (c *StoreApiController) PlaceOrder(w http.ResponseWriter, r *http.Request) { orderParam := Order{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&orderParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertOrderRequired(orderParam); err != nil { @@ -144,6 +146,6 @@ func (c *StoreApiController) PlaceOrder(w http.ResponseWriter, r *http.Request) return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } diff --git a/samples/server/petstore/go-chi-server/go/api_store_service.go b/samples/server/petstore/go-chi-server/go/api_store_service.go index 3c91040fa9f7..62044deb2218 100644 --- a/samples/server/petstore/go-chi-server/go/api_store_service.go +++ b/samples/server/petstore/go-chi-server/go/api_store_service.go @@ -11,8 +11,11 @@ package petstoreserver import ( "context" - "net/http" "errors" + "net/http" + + "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // StoreApiService is a service that implements the logic for the StoreApiServicer @@ -27,57 +30,57 @@ func NewStoreApiService() StoreApiServicer { } // DeleteOrder - Delete purchase order by ID -func (s *StoreApiService) DeleteOrder(ctx context.Context, orderId string) (ImplResponse, error) { +func (s *StoreApiService) DeleteOrder(ctx context.Context, orderId string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... - //return Response(400, nil),nil + //return support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("DeleteOrder method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("DeleteOrder method not implemented") } // GetInventory - Returns pet inventories by status -func (s *StoreApiService) GetInventory(ctx context.Context) (ImplResponse, error) { +func (s *StoreApiService) GetInventory(ctx context.Context) (support.ImplResponse, error) { // 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. //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 support.Response(200, map[string]int32{}), nil - return Response(http.StatusNotImplemented, nil), errors.New("GetInventory method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("GetInventory method not implemented") } // GetOrderById - Find purchase order by ID -func (s *StoreApiService) GetOrderById(ctx context.Context, orderId int64) (ImplResponse, error) { +func (s *StoreApiService) GetOrderById(ctx context.Context, orderId int64) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Order{}) or use other options such as http.Ok ... - //return Response(200, Order{}), nil + //return support.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 support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("GetOrderById method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("GetOrderById method not implemented") } // PlaceOrder - Place an order for a pet -func (s *StoreApiService) PlaceOrder(ctx context.Context, order Order) (ImplResponse, error) { +func (s *StoreApiService) PlaceOrder(ctx context.Context, order Order) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Order{}) or use other options such as http.Ok ... - //return Response(200, Order{}), nil + //return support.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 support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("PlaceOrder method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("PlaceOrder method not implemented") } diff --git a/samples/server/petstore/go-chi-server/go/api_user.go b/samples/server/petstore/go-chi-server/go/api_user.go index a48ab1c454a4..7b19825ed32b 100644 --- a/samples/server/petstore/go-chi-server/go/api_user.go +++ b/samples/server/petstore/go-chi-server/go/api_user.go @@ -10,34 +10,36 @@ package petstoreserver import ( - "encoding/json" "net/http" "strings" "github.com/go-chi/chi/v5" + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // UserApiController binds http requests to an api service and writes the service results to the http response type UserApiController struct { service UserApiServicer - errorHandler ErrorHandler + errorHandler support.ErrorHandler } // UserApiOption for how the controller is set up. type UserApiOption func(*UserApiController) // WithUserApiErrorHandler inject ErrorHandler into controller -func WithUserApiErrorHandler(h ErrorHandler) UserApiOption { +func WithUserApiErrorHandler(h support.ErrorHandler) UserApiOption { return func(c *UserApiController) { c.errorHandler = h } } // NewUserApiController creates a default api controller -func NewUserApiController(s UserApiServicer, opts ...UserApiOption) Router { +func NewUserApiController(s UserApiServicer, opts ...UserApiOption) support.Router { controller := &UserApiController{ service: s, - errorHandler: DefaultErrorHandler, + errorHandler: support.DefaultErrorHandler, } for _, opt := range opts { @@ -48,8 +50,8 @@ func NewUserApiController(s UserApiServicer, opts ...UserApiOption) Router { } // Routes returns all the api routes for the UserApiController -func (c *UserApiController) Routes() Routes { - return Routes{ +func (c *UserApiController) Routes() support.Routes { + return support.Routes{ { "CreateUser", strings.ToUpper("Post"), @@ -104,10 +106,10 @@ func (c *UserApiController) Routes() Routes { // CreateUser - Create user func (c *UserApiController) CreateUser(w http.ResponseWriter, r *http.Request) { userParam := User{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&userParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertUserRequired(userParam); err != nil { @@ -121,17 +123,17 @@ func (c *UserApiController) CreateUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // CreateUsersWithArrayInput - Creates list of users with given input array func (c *UserApiController) CreateUsersWithArrayInput(w http.ResponseWriter, r *http.Request) { userParam := []User{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&userParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } for _, el := range userParam { @@ -147,17 +149,17 @@ func (c *UserApiController) CreateUsersWithArrayInput(w http.ResponseWriter, r * return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // CreateUsersWithListInput - Creates list of users with given input array func (c *UserApiController) CreateUsersWithListInput(w http.ResponseWriter, r *http.Request) { userParam := []User{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&userParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } for _, el := range userParam { @@ -173,7 +175,7 @@ func (c *UserApiController) CreateUsersWithListInput(w http.ResponseWriter, r *h return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -188,7 +190,7 @@ func (c *UserApiController) DeleteUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -203,7 +205,7 @@ func (c *UserApiController) GetUserByName(w http.ResponseWriter, r *http.Request return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -219,7 +221,7 @@ func (c *UserApiController) LoginUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -232,7 +234,7 @@ func (c *UserApiController) LogoutUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -241,10 +243,10 @@ func (c *UserApiController) UpdateUser(w http.ResponseWriter, r *http.Request) { usernameParam := chi.URLParam(r, "username") userParam := User{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&userParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertUserRequired(userParam); err != nil { @@ -258,6 +260,6 @@ func (c *UserApiController) UpdateUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } diff --git a/samples/server/petstore/go-chi-server/go/api_user_service.go b/samples/server/petstore/go-chi-server/go/api_user_service.go index 6ae5a6d751bc..d24f3c6084c0 100644 --- a/samples/server/petstore/go-chi-server/go/api_user_service.go +++ b/samples/server/petstore/go-chi-server/go/api_user_service.go @@ -11,8 +11,11 @@ package petstoreserver import ( "context" - "net/http" "errors" + "net/http" + + "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // UserApiService is a service that implements the logic for the UserApiServicer @@ -27,104 +30,104 @@ func NewUserApiService() UserApiServicer { } // CreateUser - Create user -func (s *UserApiService) CreateUser(ctx context.Context, user User) (ImplResponse, error) { +func (s *UserApiService) CreateUser(ctx context.Context, user User) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... - //return Response(0, nil),nil + //return support.Response(0, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("CreateUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("CreateUser method not implemented") } // CreateUsersWithArrayInput - Creates list of users with given input array -func (s *UserApiService) CreateUsersWithArrayInput(ctx context.Context, user []User) (ImplResponse, error) { +func (s *UserApiService) CreateUsersWithArrayInput(ctx context.Context, user []User) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... - //return Response(0, nil),nil + //return support.Response(0, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithArrayInput method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithArrayInput method not implemented") } // CreateUsersWithListInput - Creates list of users with given input array -func (s *UserApiService) CreateUsersWithListInput(ctx context.Context, user []User) (ImplResponse, error) { +func (s *UserApiService) CreateUsersWithListInput(ctx context.Context, user []User) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... - //return Response(0, nil),nil + //return support.Response(0, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithListInput method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithListInput method not implemented") } // DeleteUser - Delete user -func (s *UserApiService) DeleteUser(ctx context.Context, username string) (ImplResponse, error) { +func (s *UserApiService) DeleteUser(ctx context.Context, username string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... - //return Response(400, nil),nil + //return support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("DeleteUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("DeleteUser method not implemented") } // GetUserByName - Get user by user name -func (s *UserApiService) GetUserByName(ctx context.Context, username string) (ImplResponse, error) { +func (s *UserApiService) GetUserByName(ctx context.Context, username string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, User{}) or use other options such as http.Ok ... - //return Response(200, User{}), nil + //return support.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 + //return support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("GetUserByName method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("GetUserByName method not implemented") } // LoginUser - Logs user into the system -func (s *UserApiService) LoginUser(ctx context.Context, username string, password string) (ImplResponse, error) { +func (s *UserApiService) LoginUser(ctx context.Context, username string, password string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, string{}) or use other options such as http.Ok ... - //return Response(200, string{}), nil + //return support.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 support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("LoginUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("LoginUser method not implemented") } // LogoutUser - Logs out current logged in user session -func (s *UserApiService) LogoutUser(ctx context.Context) (ImplResponse, error) { +func (s *UserApiService) LogoutUser(ctx context.Context) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... - //return Response(0, nil),nil + //return support.Response(0, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("LogoutUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("LogoutUser method not implemented") } // UpdateUser - Updated user -func (s *UserApiService) UpdateUser(ctx context.Context, username string, user User) (ImplResponse, error) { +func (s *UserApiService) UpdateUser(ctx context.Context, username string, user User) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... - //return Response(400, nil),nil + //return support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("UpdateUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("UpdateUser method not implemented") } diff --git a/samples/server/petstore/go-chi-server/go/model_api_response.go b/samples/server/petstore/go-chi-server/go/model_api_response.go index 324cfbe08444..37b1391b3200 100644 --- a/samples/server/petstore/go-chi-server/go/model_api_response.go +++ b/samples/server/petstore/go-chi-server/go/model_api_response.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // ApiResponse - Describes the result of uploading an image resource type ApiResponse struct { @@ -27,10 +31,10 @@ func AssertApiResponseRequired(obj ApiResponse) error { // AssertRecurseApiResponseRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of ApiResponse (e.g. [][]ApiResponse), otherwise ErrTypeAssertionError is thrown. func AssertRecurseApiResponseRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aApiResponse, ok := obj.(ApiResponse) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertApiResponseRequired(aApiResponse) }) diff --git a/samples/server/petstore/go-chi-server/go/model_category.go b/samples/server/petstore/go-chi-server/go/model_category.go index 3ae01892a3fc..b742f6629e83 100644 --- a/samples/server/petstore/go-chi-server/go/model_category.go +++ b/samples/server/petstore/go-chi-server/go/model_category.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // Category - A category for a pet type Category struct { @@ -25,10 +29,10 @@ func AssertCategoryRequired(obj Category) error { // AssertRecurseCategoryRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of Category (e.g. [][]Category), otherwise ErrTypeAssertionError is thrown. func AssertRecurseCategoryRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aCategory, ok := obj.(Category) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertCategoryRequired(aCategory) }) diff --git a/samples/server/petstore/go-chi-server/go/model_order.go b/samples/server/petstore/go-chi-server/go/model_order.go index 80ecfea3dc7f..d0d11d434d0a 100644 --- a/samples/server/petstore/go-chi-server/go/model_order.go +++ b/samples/server/petstore/go-chi-server/go/model_order.go @@ -8,9 +8,9 @@ */ package petstoreserver - import ( "time" + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" ) // Order - An order for a pets from the pet store @@ -38,10 +38,10 @@ func AssertOrderRequired(obj Order) error { // AssertRecurseOrderRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of Order (e.g. [][]Order), otherwise ErrTypeAssertionError is thrown. func AssertRecurseOrderRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aOrder, ok := obj.(Order) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertOrderRequired(aOrder) }) diff --git a/samples/server/petstore/go-chi-server/go/model_pet.go b/samples/server/petstore/go-chi-server/go/model_pet.go index 8e3dc7ad66f1..9dab6f10be93 100644 --- a/samples/server/petstore/go-chi-server/go/model_pet.go +++ b/samples/server/petstore/go-chi-server/go/model_pet.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // Pet - A pet for sale in the pet store type Pet struct { @@ -34,8 +38,8 @@ func AssertPetRequired(obj Pet) error { "photoUrls": obj.PhotoUrls, } for name, el := range elements { - if isZero := IsZeroValue(el); isZero { - return &RequiredError{Field: name} + if isZero := support.IsZeroValue(el); isZero { + return &support.RequiredError{Field: name} } } @@ -53,10 +57,10 @@ func AssertPetRequired(obj Pet) error { // AssertRecursePetRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of Pet (e.g. [][]Pet), otherwise ErrTypeAssertionError is thrown. func AssertRecursePetRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aPet, ok := obj.(Pet) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertPetRequired(aPet) }) diff --git a/samples/server/petstore/go-chi-server/go/model_tag.go b/samples/server/petstore/go-chi-server/go/model_tag.go index 0631ccc4866f..9a442e48b2ec 100644 --- a/samples/server/petstore/go-chi-server/go/model_tag.go +++ b/samples/server/petstore/go-chi-server/go/model_tag.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // Tag - A tag for a pet type Tag struct { @@ -25,10 +29,10 @@ func AssertTagRequired(obj Tag) error { // AssertRecurseTagRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of Tag (e.g. [][]Tag), otherwise ErrTypeAssertionError is thrown. func AssertRecurseTagRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aTag, ok := obj.(Tag) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertTagRequired(aTag) }) diff --git a/samples/server/petstore/go-chi-server/go/model_user.go b/samples/server/petstore/go-chi-server/go/model_user.go index 83ac114e3c59..a52e4d55560a 100644 --- a/samples/server/petstore/go-chi-server/go/model_user.go +++ b/samples/server/petstore/go-chi-server/go/model_user.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // User - A User who is purchasing from the pet store type User struct { @@ -38,10 +42,10 @@ func AssertUserRequired(obj User) error { // AssertRecurseUserRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of User (e.g. [][]User), otherwise ErrTypeAssertionError is thrown. func AssertRecurseUserRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aUser, ok := obj.(User) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertUserRequired(aUser) }) diff --git a/samples/server/petstore/go-chi-server/main.go b/samples/server/petstore/go-chi-server/main.go index ddc5258297ca..7b22919e9839 100644 --- a/samples/server/petstore/go-chi-server/main.go +++ b/samples/server/petstore/go-chi-server/main.go @@ -14,6 +14,7 @@ import ( "net/http" petstoreserver "github.com/GIT_USER_ID/GIT_REPO_ID/go" + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" ) func main() { @@ -28,7 +29,7 @@ func main() { UserApiService := petstoreserver.NewUserApiService() UserApiController := petstoreserver.NewUserApiController(UserApiService) - router := petstoreserver.NewRouter(PetApiController, StoreApiController, UserApiController) + router := support.NewRouter(PetApiController, StoreApiController, UserApiController) log.Fatal(http.ListenAndServe(":8080", router)) } diff --git a/samples/server/petstore/go-server-required/go/error.go b/samples/server/petstore/go-chi-server/support/error.go similarity index 98% rename from samples/server/petstore/go-server-required/go/error.go rename to samples/server/petstore/go-chi-server/support/error.go index 2c0b010fe8da..e9c4795ffe3e 100644 --- a/samples/server/petstore/go-server-required/go/error.go +++ b/samples/server/petstore/go-chi-server/support/error.go @@ -7,7 +7,7 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support import ( "errors" diff --git a/samples/server/petstore/go-api-server/go/helpers.go b/samples/server/petstore/go-chi-server/support/helpers.go similarity index 70% rename from samples/server/petstore/go-api-server/go/helpers.go rename to samples/server/petstore/go-chi-server/support/helpers.go index f18a261018dd..ce5dcce4819e 100644 --- a/samples/server/petstore/go-api-server/go/helpers.go +++ b/samples/server/petstore/go-chi-server/support/helpers.go @@ -7,9 +7,12 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support import ( + "encoding/json" + "net/http" + "io" "reflect" ) @@ -62,3 +65,28 @@ func AssertRecurseValueRequired(value reflect.Value, callback func(interface{}) } return nil } + +// EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code +func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, w http.ResponseWriter) error { + wHeader := w.Header() + if headers != nil { + for key, values := range headers { + for _, value := range values { + wHeader.Add(key, value) + } + } + } + wHeader.Set("Content-Type", "application/json; charset=UTF-8") + if status != nil { + w.WriteHeader(*status) + } else { + w.WriteHeader(http.StatusOK) + } + + return json.NewEncoder(w).Encode(i) +} + +// NewJSONDecoder creates a jew json decoder to decode an http body. +func NewJSONDecoder(r io.Reader) *json.Decoder { + return json.NewDecoder(r) +} diff --git a/samples/server/petstore/go-server-required/go/impl.go b/samples/server/petstore/go-chi-server/support/impl.go similarity index 94% rename from samples/server/petstore/go-server-required/go/impl.go rename to samples/server/petstore/go-chi-server/support/impl.go index 8c72e26a342a..54db797feb04 100644 --- a/samples/server/petstore/go-server-required/go/impl.go +++ b/samples/server/petstore/go-chi-server/support/impl.go @@ -7,7 +7,7 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support // ImplResponse response defines an error code with the associated body type ImplResponse struct { diff --git a/samples/server/petstore/go-chi-server/go/logger.go b/samples/server/petstore/go-chi-server/support/logger.go similarity index 96% rename from samples/server/petstore/go-chi-server/go/logger.go rename to samples/server/petstore/go-chi-server/support/logger.go index 08cc0ea3f1d2..cb27ef95fd71 100644 --- a/samples/server/petstore/go-chi-server/go/logger.go +++ b/samples/server/petstore/go-chi-server/support/logger.go @@ -7,7 +7,7 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support import ( "log" diff --git a/samples/server/petstore/go-chi-server/go/routers.go b/samples/server/petstore/go-chi-server/support/routers.go similarity index 75% rename from samples/server/petstore/go-chi-server/go/routers.go rename to samples/server/petstore/go-chi-server/support/routers.go index 3213d5dde239..88984b2acb38 100644 --- a/samples/server/petstore/go-chi-server/go/routers.go +++ b/samples/server/petstore/go-chi-server/support/routers.go @@ -7,10 +7,9 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support import ( - "encoding/json" "errors" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" @@ -55,26 +54,6 @@ func NewRouter(routers ...Router) chi.Router { return router } -// EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code -func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, w http.ResponseWriter) error { - wHeader := w.Header() - if headers != nil { - for key, values := range headers { - for _, value := range values { - wHeader.Add(key, value) - } - } - } - wHeader.Set("Content-Type", "application/json; charset=UTF-8") - if status != nil { - w.WriteHeader(*status) - } else { - w.WriteHeader(http.StatusOK) - } - - return json.NewEncoder(w).Encode(i) -} - // ReadFormFileToTempFile reads file data from a request form and writes it to a temporary file func ReadFormFileToTempFile(r *http.Request, key string) (*os.File, error) { _, fileHeader, err := r.FormFile(key) @@ -131,8 +110,8 @@ func readFileHeaderToTempFile(fileHeader *multipart.FileHeader) (*os.File, error return file, nil } -// parseInt64Parameter parses a string parameter to an int64. -func parseInt64Parameter(param string, required bool) (int64, error) { +// ParseInt64Parameter parses a string parameter to an int64. +func ParseInt64Parameter(param string, required bool) (int64, error) { if param == "" { if required { return 0, errors.New(errMsgRequiredMissing) @@ -144,8 +123,8 @@ func parseInt64Parameter(param string, required bool) (int64, error) { return strconv.ParseInt(param, 10, 64) } -// parseInt32Parameter parses a string parameter to an int32. -func parseInt32Parameter(param string, required bool) (int32, error) { +// ParseInt32Parameter parses a string parameter to an int32. +func ParseInt32Parameter(param string, required bool) (int32, error) { if param == "" { if required { return 0, errors.New(errMsgRequiredMissing) @@ -162,8 +141,8 @@ func parseInt32Parameter(param string, required bool) (int32, error) { return int32(val), nil } -// parseBoolParameter parses a string parameter to a bool -func parseBoolParameter(param string) (bool, error) { +// ParseBoolParameter parses a string parameter to a bool +func ParseBoolParameter(param string) (bool, error) { val, err := strconv.ParseBool(param) if err != nil { return false, err @@ -172,8 +151,8 @@ func parseBoolParameter(param string) (bool, error) { return bool(val), nil } -// parseInt64ArrayParameter parses a string parameter containing array of values to []int64. -func parseInt64ArrayParameter(param, delim string, required bool) ([]int64, error) { +// ParseInt64ArrayParameter parses a string parameter containing array of values to []int64. +func ParseInt64ArrayParameter(param, delim string, required bool) ([]int64, error) { if param == "" { if required { return nil, errors.New(errMsgRequiredMissing) @@ -196,8 +175,8 @@ func parseInt64ArrayParameter(param, delim string, required bool) ([]int64, erro return ints, nil } -// parseInt32ArrayParameter parses a string parameter containing array of values to []int32. -func parseInt32ArrayParameter(param, delim string, required bool) ([]int32, error) { +// ParseInt32ArrayParameter parses a string parameter containing array of values to []int32. +func ParseInt32ArrayParameter(param, delim string, required bool) ([]int32, error) { if param == "" { if required { return nil, errors.New(errMsgRequiredMissing) @@ -218,4 +197,4 @@ func parseInt32ArrayParameter(param, delim string, required bool) ([]int32, erro } return ints, nil -} \ No newline at end of file +} diff --git a/samples/server/petstore/go-server-required/.openapi-generator/FILES b/samples/server/petstore/go-server-required/.openapi-generator/FILES index 26b2edca0b85..9d3c0baf489e 100644 --- a/samples/server/petstore/go-server-required/.openapi-generator/FILES +++ b/samples/server/petstore/go-server-required/.openapi-generator/FILES @@ -9,10 +9,6 @@ go/api_store.go go/api_store_service.go go/api_user.go go/api_user_service.go -go/error.go -go/helpers.go -go/impl.go -go/logger.go go/model_api_response.go go/model_category.go go/model_order.go @@ -21,5 +17,9 @@ go/model_pet.go go/model_special_info.go go/model_tag.go go/model_user.go -go/routers.go main.go +support/error.go +support/helpers.go +support/impl.go +support/logger.go +support/routers.go diff --git a/samples/server/petstore/go-server-required/go/api.go b/samples/server/petstore/go-server-required/go/api.go index bedb0f7985e5..b807031a503d 100644 --- a/samples/server/petstore/go-server-required/go/api.go +++ b/samples/server/petstore/go-server-required/go/api.go @@ -13,6 +13,8 @@ import ( "context" "net/http" "os" + "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) @@ -60,15 +62,15 @@ type UserApiRouter interface { // while the service implementation can be ignored with the .openapi-generator-ignore file // and updated with the logic required for the API. type PetApiServicer interface { - AddPet(context.Context, Pet) (ImplResponse, error) - DeletePet(context.Context, int64, string) (ImplResponse, error) - FindPetsByStatus(context.Context, []string) (ImplResponse, error) + AddPet(context.Context, Pet) (support.ImplResponse, error) + DeletePet(context.Context, int64, string) (support.ImplResponse, error) + FindPetsByStatus(context.Context, []string) (support.ImplResponse, error) // Deprecated - FindPetsByTags(context.Context, []string) (ImplResponse, error) - GetPetById(context.Context, int64) (ImplResponse, error) - UpdatePet(context.Context, Pet) (ImplResponse, error) - UpdatePetWithForm(context.Context, int64, string, string) (ImplResponse, error) - UploadFile(context.Context, int64, string, *os.File) (ImplResponse, error) + FindPetsByTags(context.Context, []string) (support.ImplResponse, error) + GetPetById(context.Context, int64) (support.ImplResponse, error) + UpdatePet(context.Context, Pet) (support.ImplResponse, error) + UpdatePetWithForm(context.Context, int64, string, string) (support.ImplResponse, error) + UploadFile(context.Context, int64, string, *os.File) (support.ImplResponse, error) } @@ -77,10 +79,10 @@ type PetApiServicer interface { // while the service implementation can be ignored with the .openapi-generator-ignore file // and updated with the logic required for the API. type StoreApiServicer interface { - DeleteOrder(context.Context, string) (ImplResponse, error) - GetInventory(context.Context) (ImplResponse, error) - GetOrderById(context.Context, int64) (ImplResponse, error) - PlaceOrder(context.Context, Order) (ImplResponse, error) + DeleteOrder(context.Context, string) (support.ImplResponse, error) + GetInventory(context.Context) (support.ImplResponse, error) + GetOrderById(context.Context, int64) (support.ImplResponse, error) + PlaceOrder(context.Context, Order) (support.ImplResponse, error) } @@ -89,12 +91,12 @@ type StoreApiServicer interface { // while the service implementation can be ignored with the .openapi-generator-ignore file // and updated with the logic required for the API. type UserApiServicer interface { - CreateUser(context.Context, User) (ImplResponse, error) - CreateUsersWithArrayInput(context.Context, []User) (ImplResponse, error) - CreateUsersWithListInput(context.Context, []User) (ImplResponse, error) - DeleteUser(context.Context, string) (ImplResponse, error) - GetUserByName(context.Context, string) (ImplResponse, error) - LoginUser(context.Context, string, string) (ImplResponse, error) - LogoutUser(context.Context) (ImplResponse, error) - UpdateUser(context.Context, string, User) (ImplResponse, error) + CreateUser(context.Context, User) (support.ImplResponse, error) + CreateUsersWithArrayInput(context.Context, []User) (support.ImplResponse, error) + CreateUsersWithListInput(context.Context, []User) (support.ImplResponse, error) + DeleteUser(context.Context, string) (support.ImplResponse, error) + GetUserByName(context.Context, string) (support.ImplResponse, error) + LoginUser(context.Context, string, string) (support.ImplResponse, error) + LogoutUser(context.Context) (support.ImplResponse, error) + UpdateUser(context.Context, string, User) (support.ImplResponse, error) } diff --git a/samples/server/petstore/go-server-required/go/api_pet.go b/samples/server/petstore/go-server-required/go/api_pet.go index 2202804fb200..067d7534e7f3 100644 --- a/samples/server/petstore/go-server-required/go/api_pet.go +++ b/samples/server/petstore/go-server-required/go/api_pet.go @@ -10,34 +10,36 @@ package petstoreserver import ( - "encoding/json" "net/http" "strings" "github.com/go-chi/chi/v5" + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // PetApiController binds http requests to an api service and writes the service results to the http response type PetApiController struct { service PetApiServicer - errorHandler ErrorHandler + errorHandler support.ErrorHandler } // PetApiOption for how the controller is set up. type PetApiOption func(*PetApiController) // WithPetApiErrorHandler inject ErrorHandler into controller -func WithPetApiErrorHandler(h ErrorHandler) PetApiOption { +func WithPetApiErrorHandler(h support.ErrorHandler) PetApiOption { return func(c *PetApiController) { c.errorHandler = h } } // NewPetApiController creates a default api controller -func NewPetApiController(s PetApiServicer, opts ...PetApiOption) Router { +func NewPetApiController(s PetApiServicer, opts ...PetApiOption) support.Router { controller := &PetApiController{ service: s, - errorHandler: DefaultErrorHandler, + errorHandler: support.DefaultErrorHandler, } for _, opt := range opts { @@ -48,8 +50,8 @@ func NewPetApiController(s PetApiServicer, opts ...PetApiOption) Router { } // Routes returns all the api routes for the PetApiController -func (c *PetApiController) Routes() Routes { - return Routes{ +func (c *PetApiController) Routes() support.Routes { + return support.Routes{ { "AddPet", strings.ToUpper("Post"), @@ -104,10 +106,10 @@ func (c *PetApiController) Routes() Routes { // AddPet - Add a new pet to the store func (c *PetApiController) AddPet(w http.ResponseWriter, r *http.Request) { petParam := Pet{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&petParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertPetRequired(petParam); err != nil { @@ -121,15 +123,15 @@ func (c *PetApiController) AddPet(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // DeletePet - Deletes a pet func (c *PetApiController) DeletePet(w http.ResponseWriter, r *http.Request) { - petIdParam, err := parseInt64Parameter(chi.URLParam(r, "petId"), true) + petIdParam, err := support.ParseInt64Parameter(chi.URLParam(r, "petId"), true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } @@ -141,7 +143,7 @@ func (c *PetApiController) DeletePet(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -156,7 +158,7 @@ func (c *PetApiController) FindPetsByStatus(w http.ResponseWriter, r *http.Reque return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -172,15 +174,15 @@ func (c *PetApiController) FindPetsByTags(w http.ResponseWriter, r *http.Request return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // GetPetById - Find pet by ID func (c *PetApiController) GetPetById(w http.ResponseWriter, r *http.Request) { - petIdParam, err := parseInt64Parameter(chi.URLParam(r, "petId"), true) + petIdParam, err := support.ParseInt64Parameter(chi.URLParam(r, "petId"), true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } @@ -191,17 +193,17 @@ func (c *PetApiController) GetPetById(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // UpdatePet - Update an existing pet func (c *PetApiController) UpdatePet(w http.ResponseWriter, r *http.Request) { petParam := Pet{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&petParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertPetRequired(petParam); err != nil { @@ -215,19 +217,19 @@ func (c *PetApiController) UpdatePet(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // UpdatePetWithForm - Updates a pet in the store with form data func (c *PetApiController) UpdatePetWithForm(w http.ResponseWriter, r *http.Request) { if err := r.ParseForm(); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } - petIdParam, err := parseInt64Parameter(chi.URLParam(r, "petId"), true) + petIdParam, err := support.ParseInt64Parameter(chi.URLParam(r, "petId"), true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } @@ -240,27 +242,27 @@ func (c *PetApiController) UpdatePetWithForm(w http.ResponseWriter, r *http.Requ return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // UploadFile - uploads an image func (c *PetApiController) UploadFile(w http.ResponseWriter, r *http.Request) { if err := r.ParseMultipartForm(32 << 20); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } - petIdParam, err := parseInt64Parameter(chi.URLParam(r, "petId"), true) + petIdParam, err := support.ParseInt64Parameter(chi.URLParam(r, "petId"), true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } additionalMetadataParam := r.FormValue("additionalMetadata") - fileParam, err := ReadFormFileToTempFile(r, "file") + fileParam, err := support.ReadFormFileToTempFile(r, "file") if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } result, err := c.service.UploadFile(r.Context(), petIdParam, additionalMetadataParam, fileParam) @@ -270,6 +272,6 @@ func (c *PetApiController) UploadFile(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } diff --git a/samples/server/petstore/go-server-required/go/api_pet_service.go b/samples/server/petstore/go-server-required/go/api_pet_service.go index 9a390ecef3d0..02a73080f808 100644 --- a/samples/server/petstore/go-server-required/go/api_pet_service.go +++ b/samples/server/petstore/go-server-required/go/api_pet_service.go @@ -11,9 +11,12 @@ package petstoreserver import ( "context" - "net/http" "errors" + "net/http" "os" + + "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // PetApiService is a service that implements the logic for the PetApiServicer @@ -28,114 +31,114 @@ func NewPetApiService() PetApiServicer { } // AddPet - Add a new pet to the store -func (s *PetApiService) AddPet(ctx context.Context, pet Pet) (ImplResponse, error) { +func (s *PetApiService) AddPet(ctx context.Context, pet Pet) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ... - //return Response(200, Pet{}), nil + //return support.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 support.Response(405, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("AddPet method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("AddPet method not implemented") } // DeletePet - Deletes a pet -func (s *PetApiService) DeletePet(ctx context.Context, petId int64, apiKey string) (ImplResponse, error) { +func (s *PetApiService) DeletePet(ctx context.Context, petId int64, apiKey string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... - //return Response(400, nil),nil + //return support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("DeletePet method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("DeletePet method not implemented") } // FindPetsByStatus - Finds Pets by status -func (s *PetApiService) FindPetsByStatus(ctx context.Context, status []string) (ImplResponse, error) { +func (s *PetApiService) FindPetsByStatus(ctx context.Context, status []string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, []Pet{}) or use other options such as http.Ok ... - //return Response(200, []Pet{}), nil + //return support.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 support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("FindPetsByStatus method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("FindPetsByStatus method not implemented") } // FindPetsByTags - Finds Pets by tags // Deprecated -func (s *PetApiService) FindPetsByTags(ctx context.Context, tags []string) (ImplResponse, error) { +func (s *PetApiService) FindPetsByTags(ctx context.Context, tags []string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, []Pet{}) or use other options such as http.Ok ... - //return Response(200, []Pet{}), nil + //return support.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 support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("FindPetsByTags method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("FindPetsByTags method not implemented") } // GetPetById - Find pet by ID -func (s *PetApiService) GetPetById(ctx context.Context, petId int64) (ImplResponse, error) { +func (s *PetApiService) GetPetById(ctx context.Context, petId int64) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ... - //return Response(200, Pet{}), nil + //return support.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 support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("GetPetById method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("GetPetById method not implemented") } // UpdatePet - Update an existing pet -func (s *PetApiService) UpdatePet(ctx context.Context, pet Pet) (ImplResponse, error) { +func (s *PetApiService) UpdatePet(ctx context.Context, pet Pet) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Pet{}) or use other options such as http.Ok ... - //return Response(200, Pet{}), nil + //return support.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 support.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 support.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 support.Response(405, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("UpdatePet method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("UpdatePet method not implemented") } // UpdatePetWithForm - Updates a pet in the store with form data -func (s *PetApiService) UpdatePetWithForm(ctx context.Context, petId int64, name string, status string) (ImplResponse, error) { +func (s *PetApiService) UpdatePetWithForm(ctx context.Context, petId int64, name string, status string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(405, {}) or use other options such as http.Ok ... - //return Response(405, nil),nil + //return support.Response(405, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("UpdatePetWithForm method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("UpdatePetWithForm method not implemented") } // UploadFile - uploads an image -func (s *PetApiService) UploadFile(ctx context.Context, petId int64, additionalMetadata string, file *os.File) (ImplResponse, error) { +func (s *PetApiService) UploadFile(ctx context.Context, petId int64, additionalMetadata string, file *os.File) (support.ImplResponse, error) { // 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. //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 support.Response(200, ApiResponse{}), nil - return Response(http.StatusNotImplemented, nil), errors.New("UploadFile method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("UploadFile method not implemented") } diff --git a/samples/server/petstore/go-server-required/go/api_store.go b/samples/server/petstore/go-server-required/go/api_store.go index 67a30090afb3..a1153fe75c4f 100644 --- a/samples/server/petstore/go-server-required/go/api_store.go +++ b/samples/server/petstore/go-server-required/go/api_store.go @@ -10,34 +10,36 @@ package petstoreserver import ( - "encoding/json" "net/http" "strings" "github.com/go-chi/chi/v5" + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // StoreApiController binds http requests to an api service and writes the service results to the http response type StoreApiController struct { service StoreApiServicer - errorHandler ErrorHandler + errorHandler support.ErrorHandler } // StoreApiOption for how the controller is set up. type StoreApiOption func(*StoreApiController) // WithStoreApiErrorHandler inject ErrorHandler into controller -func WithStoreApiErrorHandler(h ErrorHandler) StoreApiOption { +func WithStoreApiErrorHandler(h support.ErrorHandler) StoreApiOption { return func(c *StoreApiController) { c.errorHandler = h } } // NewStoreApiController creates a default api controller -func NewStoreApiController(s StoreApiServicer, opts ...StoreApiOption) Router { +func NewStoreApiController(s StoreApiServicer, opts ...StoreApiOption) support.Router { controller := &StoreApiController{ service: s, - errorHandler: DefaultErrorHandler, + errorHandler: support.DefaultErrorHandler, } for _, opt := range opts { @@ -48,8 +50,8 @@ func NewStoreApiController(s StoreApiServicer, opts ...StoreApiOption) Router { } // Routes returns all the api routes for the StoreApiController -func (c *StoreApiController) Routes() Routes { - return Routes{ +func (c *StoreApiController) Routes() support.Routes { + return support.Routes{ { "DeleteOrder", strings.ToUpper("Delete"), @@ -88,7 +90,7 @@ func (c *StoreApiController) DeleteOrder(w http.ResponseWriter, r *http.Request) return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -101,15 +103,15 @@ func (c *StoreApiController) GetInventory(w http.ResponseWriter, r *http.Request return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // GetOrderById - Find purchase order by ID func (c *StoreApiController) GetOrderById(w http.ResponseWriter, r *http.Request) { - orderIdParam, err := parseInt64Parameter(chi.URLParam(r, "orderId"), true) + orderIdParam, err := support.ParseInt64Parameter(chi.URLParam(r, "orderId"), true) if err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } @@ -120,17 +122,17 @@ func (c *StoreApiController) GetOrderById(w http.ResponseWriter, r *http.Request return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // PlaceOrder - Place an order for a pet func (c *StoreApiController) PlaceOrder(w http.ResponseWriter, r *http.Request) { orderParam := Order{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&orderParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertOrderRequired(orderParam); err != nil { @@ -144,6 +146,6 @@ func (c *StoreApiController) PlaceOrder(w http.ResponseWriter, r *http.Request) return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } diff --git a/samples/server/petstore/go-server-required/go/api_store_service.go b/samples/server/petstore/go-server-required/go/api_store_service.go index 3c91040fa9f7..62044deb2218 100644 --- a/samples/server/petstore/go-server-required/go/api_store_service.go +++ b/samples/server/petstore/go-server-required/go/api_store_service.go @@ -11,8 +11,11 @@ package petstoreserver import ( "context" - "net/http" "errors" + "net/http" + + "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // StoreApiService is a service that implements the logic for the StoreApiServicer @@ -27,57 +30,57 @@ func NewStoreApiService() StoreApiServicer { } // DeleteOrder - Delete purchase order by ID -func (s *StoreApiService) DeleteOrder(ctx context.Context, orderId string) (ImplResponse, error) { +func (s *StoreApiService) DeleteOrder(ctx context.Context, orderId string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... - //return Response(400, nil),nil + //return support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("DeleteOrder method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("DeleteOrder method not implemented") } // GetInventory - Returns pet inventories by status -func (s *StoreApiService) GetInventory(ctx context.Context) (ImplResponse, error) { +func (s *StoreApiService) GetInventory(ctx context.Context) (support.ImplResponse, error) { // 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. //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 support.Response(200, map[string]int32{}), nil - return Response(http.StatusNotImplemented, nil), errors.New("GetInventory method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("GetInventory method not implemented") } // GetOrderById - Find purchase order by ID -func (s *StoreApiService) GetOrderById(ctx context.Context, orderId int64) (ImplResponse, error) { +func (s *StoreApiService) GetOrderById(ctx context.Context, orderId int64) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Order{}) or use other options such as http.Ok ... - //return Response(200, Order{}), nil + //return support.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 support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("GetOrderById method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("GetOrderById method not implemented") } // PlaceOrder - Place an order for a pet -func (s *StoreApiService) PlaceOrder(ctx context.Context, order Order) (ImplResponse, error) { +func (s *StoreApiService) PlaceOrder(ctx context.Context, order Order) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, Order{}) or use other options such as http.Ok ... - //return Response(200, Order{}), nil + //return support.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 support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("PlaceOrder method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("PlaceOrder method not implemented") } diff --git a/samples/server/petstore/go-server-required/go/api_user.go b/samples/server/petstore/go-server-required/go/api_user.go index a48ab1c454a4..7b19825ed32b 100644 --- a/samples/server/petstore/go-server-required/go/api_user.go +++ b/samples/server/petstore/go-server-required/go/api_user.go @@ -10,34 +10,36 @@ package petstoreserver import ( - "encoding/json" "net/http" "strings" "github.com/go-chi/chi/v5" + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // UserApiController binds http requests to an api service and writes the service results to the http response type UserApiController struct { service UserApiServicer - errorHandler ErrorHandler + errorHandler support.ErrorHandler } // UserApiOption for how the controller is set up. type UserApiOption func(*UserApiController) // WithUserApiErrorHandler inject ErrorHandler into controller -func WithUserApiErrorHandler(h ErrorHandler) UserApiOption { +func WithUserApiErrorHandler(h support.ErrorHandler) UserApiOption { return func(c *UserApiController) { c.errorHandler = h } } // NewUserApiController creates a default api controller -func NewUserApiController(s UserApiServicer, opts ...UserApiOption) Router { +func NewUserApiController(s UserApiServicer, opts ...UserApiOption) support.Router { controller := &UserApiController{ service: s, - errorHandler: DefaultErrorHandler, + errorHandler: support.DefaultErrorHandler, } for _, opt := range opts { @@ -48,8 +50,8 @@ func NewUserApiController(s UserApiServicer, opts ...UserApiOption) Router { } // Routes returns all the api routes for the UserApiController -func (c *UserApiController) Routes() Routes { - return Routes{ +func (c *UserApiController) Routes() support.Routes { + return support.Routes{ { "CreateUser", strings.ToUpper("Post"), @@ -104,10 +106,10 @@ func (c *UserApiController) Routes() Routes { // CreateUser - Create user func (c *UserApiController) CreateUser(w http.ResponseWriter, r *http.Request) { userParam := User{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&userParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertUserRequired(userParam); err != nil { @@ -121,17 +123,17 @@ func (c *UserApiController) CreateUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // CreateUsersWithArrayInput - Creates list of users with given input array func (c *UserApiController) CreateUsersWithArrayInput(w http.ResponseWriter, r *http.Request) { userParam := []User{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&userParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } for _, el := range userParam { @@ -147,17 +149,17 @@ func (c *UserApiController) CreateUsersWithArrayInput(w http.ResponseWriter, r * return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } // CreateUsersWithListInput - Creates list of users with given input array func (c *UserApiController) CreateUsersWithListInput(w http.ResponseWriter, r *http.Request) { userParam := []User{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&userParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } for _, el := range userParam { @@ -173,7 +175,7 @@ func (c *UserApiController) CreateUsersWithListInput(w http.ResponseWriter, r *h return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -188,7 +190,7 @@ func (c *UserApiController) DeleteUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -203,7 +205,7 @@ func (c *UserApiController) GetUserByName(w http.ResponseWriter, r *http.Request return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -219,7 +221,7 @@ func (c *UserApiController) LoginUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -232,7 +234,7 @@ func (c *UserApiController) LogoutUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } @@ -241,10 +243,10 @@ func (c *UserApiController) UpdateUser(w http.ResponseWriter, r *http.Request) { usernameParam := chi.URLParam(r, "username") userParam := User{} - d := json.NewDecoder(r.Body) + d := support.NewJSONDecoder(r.Body) d.DisallowUnknownFields() if err := d.Decode(&userParam); err != nil { - c.errorHandler(w, r, &ParsingError{Err: err}, nil) + c.errorHandler(w, r, &support.ParsingError{Err: err}, nil) return } if err := AssertUserRequired(userParam); err != nil { @@ -258,6 +260,6 @@ func (c *UserApiController) UpdateUser(w http.ResponseWriter, r *http.Request) { return } // If no error, encode the body and the result code - EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) + support.EncodeJSONResponse(result.Body, &result.Code, result.Headers, w) } diff --git a/samples/server/petstore/go-server-required/go/api_user_service.go b/samples/server/petstore/go-server-required/go/api_user_service.go index 6ae5a6d751bc..d24f3c6084c0 100644 --- a/samples/server/petstore/go-server-required/go/api_user_service.go +++ b/samples/server/petstore/go-server-required/go/api_user_service.go @@ -11,8 +11,11 @@ package petstoreserver import ( "context" - "net/http" "errors" + "net/http" + + "github.com/GIT_USER_ID/GIT_REPO_ID/support" + ) // UserApiService is a service that implements the logic for the UserApiServicer @@ -27,104 +30,104 @@ func NewUserApiService() UserApiServicer { } // CreateUser - Create user -func (s *UserApiService) CreateUser(ctx context.Context, user User) (ImplResponse, error) { +func (s *UserApiService) CreateUser(ctx context.Context, user User) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... - //return Response(0, nil),nil + //return support.Response(0, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("CreateUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("CreateUser method not implemented") } // CreateUsersWithArrayInput - Creates list of users with given input array -func (s *UserApiService) CreateUsersWithArrayInput(ctx context.Context, user []User) (ImplResponse, error) { +func (s *UserApiService) CreateUsersWithArrayInput(ctx context.Context, user []User) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... - //return Response(0, nil),nil + //return support.Response(0, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithArrayInput method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithArrayInput method not implemented") } // CreateUsersWithListInput - Creates list of users with given input array -func (s *UserApiService) CreateUsersWithListInput(ctx context.Context, user []User) (ImplResponse, error) { +func (s *UserApiService) CreateUsersWithListInput(ctx context.Context, user []User) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... - //return Response(0, nil),nil + //return support.Response(0, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithListInput method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithListInput method not implemented") } // DeleteUser - Delete user -func (s *UserApiService) DeleteUser(ctx context.Context, username string) (ImplResponse, error) { +func (s *UserApiService) DeleteUser(ctx context.Context, username string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... - //return Response(400, nil),nil + //return support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("DeleteUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("DeleteUser method not implemented") } // GetUserByName - Get user by user name -func (s *UserApiService) GetUserByName(ctx context.Context, username string) (ImplResponse, error) { +func (s *UserApiService) GetUserByName(ctx context.Context, username string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, User{}) or use other options such as http.Ok ... - //return Response(200, User{}), nil + //return support.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 + //return support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("GetUserByName method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("GetUserByName method not implemented") } // LoginUser - Logs user into the system -func (s *UserApiService) LoginUser(ctx context.Context, username string, password string) (ImplResponse, error) { +func (s *UserApiService) LoginUser(ctx context.Context, username string, password string) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(200, string{}) or use other options such as http.Ok ... - //return Response(200, string{}), nil + //return support.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 support.Response(400, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("LoginUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("LoginUser method not implemented") } // LogoutUser - Logs out current logged in user session -func (s *UserApiService) LogoutUser(ctx context.Context) (ImplResponse, error) { +func (s *UserApiService) LogoutUser(ctx context.Context) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(0, {}) or use other options such as http.Ok ... - //return Response(0, nil),nil + //return support.Response(0, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("LogoutUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("LogoutUser method not implemented") } // UpdateUser - Updated user -func (s *UserApiService) UpdateUser(ctx context.Context, username string, user User) (ImplResponse, error) { +func (s *UserApiService) UpdateUser(ctx context.Context, username string, user User) (support.ImplResponse, error) { // 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. //TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ... - //return Response(400, nil),nil + //return support.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 support.Response(404, nil),nil - return Response(http.StatusNotImplemented, nil), errors.New("UpdateUser method not implemented") + return support.Response(http.StatusNotImplemented, nil), errors.New("UpdateUser method not implemented") } diff --git a/samples/server/petstore/go-server-required/go/model_api_response.go b/samples/server/petstore/go-server-required/go/model_api_response.go index 324cfbe08444..37b1391b3200 100644 --- a/samples/server/petstore/go-server-required/go/model_api_response.go +++ b/samples/server/petstore/go-server-required/go/model_api_response.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // ApiResponse - Describes the result of uploading an image resource type ApiResponse struct { @@ -27,10 +31,10 @@ func AssertApiResponseRequired(obj ApiResponse) error { // AssertRecurseApiResponseRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of ApiResponse (e.g. [][]ApiResponse), otherwise ErrTypeAssertionError is thrown. func AssertRecurseApiResponseRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aApiResponse, ok := obj.(ApiResponse) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertApiResponseRequired(aApiResponse) }) diff --git a/samples/server/petstore/go-server-required/go/model_category.go b/samples/server/petstore/go-server-required/go/model_category.go index 3ae01892a3fc..b742f6629e83 100644 --- a/samples/server/petstore/go-server-required/go/model_category.go +++ b/samples/server/petstore/go-server-required/go/model_category.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // Category - A category for a pet type Category struct { @@ -25,10 +29,10 @@ func AssertCategoryRequired(obj Category) error { // AssertRecurseCategoryRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of Category (e.g. [][]Category), otherwise ErrTypeAssertionError is thrown. func AssertRecurseCategoryRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aCategory, ok := obj.(Category) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertCategoryRequired(aCategory) }) diff --git a/samples/server/petstore/go-server-required/go/model_order.go b/samples/server/petstore/go-server-required/go/model_order.go index f3441fa8c7b5..8ec2a718a5a6 100644 --- a/samples/server/petstore/go-server-required/go/model_order.go +++ b/samples/server/petstore/go-server-required/go/model_order.go @@ -8,9 +8,9 @@ */ package petstoreserver - import ( "time" + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" ) // Order - An order for a pets from the pet store @@ -39,8 +39,8 @@ func AssertOrderRequired(obj Order) error { "comment": obj.Comment, } for name, el := range elements { - if isZero := IsZeroValue(el); isZero { - return &RequiredError{Field: name} + if isZero := support.IsZeroValue(el); isZero { + return &support.RequiredError{Field: name} } } @@ -54,10 +54,10 @@ func AssertOrderRequired(obj Order) error { // AssertRecurseOrderRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of Order (e.g. [][]Order), otherwise ErrTypeAssertionError is thrown. func AssertRecurseOrderRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aOrder, ok := obj.(Order) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertOrderRequired(aOrder) }) diff --git a/samples/server/petstore/go-server-required/go/model_order_info.go b/samples/server/petstore/go-server-required/go/model_order_info.go index 3c6bb2704c94..ce2b1c0f2133 100644 --- a/samples/server/petstore/go-server-required/go/model_order_info.go +++ b/samples/server/petstore/go-server-required/go/model_order_info.go @@ -8,9 +8,9 @@ */ package petstoreserver - import ( "time" + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" ) // OrderInfo - An order info for a pets from the pet store @@ -31,10 +31,10 @@ func AssertOrderInfoRequired(obj OrderInfo) error { // AssertRecurseOrderInfoRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of OrderInfo (e.g. [][]OrderInfo), otherwise ErrTypeAssertionError is thrown. func AssertRecurseOrderInfoRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aOrderInfo, ok := obj.(OrderInfo) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertOrderInfoRequired(aOrderInfo) }) diff --git a/samples/server/petstore/go-server-required/go/model_pet.go b/samples/server/petstore/go-server-required/go/model_pet.go index 5c71af290f61..7b63c10975ce 100644 --- a/samples/server/petstore/go-server-required/go/model_pet.go +++ b/samples/server/petstore/go-server-required/go/model_pet.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // Pet - A pet for sale in the pet store type Pet struct { @@ -33,8 +37,8 @@ func AssertPetRequired(obj Pet) error { "photoUrls": obj.PhotoUrls, } for name, el := range elements { - if isZero := IsZeroValue(el); isZero { - return &RequiredError{Field: name} + if isZero := support.IsZeroValue(el); isZero { + return &support.RequiredError{Field: name} } } @@ -56,10 +60,10 @@ func AssertPetRequired(obj Pet) error { // AssertRecursePetRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of Pet (e.g. [][]Pet), otherwise ErrTypeAssertionError is thrown. func AssertRecursePetRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aPet, ok := obj.(Pet) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertPetRequired(aPet) }) diff --git a/samples/server/petstore/go-server-required/go/model_special_info.go b/samples/server/petstore/go-server-required/go/model_special_info.go index 73bea15959c1..ded470786584 100644 --- a/samples/server/petstore/go-server-required/go/model_special_info.go +++ b/samples/server/petstore/go-server-required/go/model_special_info.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // SpecialInfo - An order info for a pets from the pet store type SpecialInfo struct { @@ -25,10 +29,10 @@ func AssertSpecialInfoRequired(obj SpecialInfo) error { // AssertRecurseSpecialInfoRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of SpecialInfo (e.g. [][]SpecialInfo), otherwise ErrTypeAssertionError is thrown. func AssertRecurseSpecialInfoRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aSpecialInfo, ok := obj.(SpecialInfo) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertSpecialInfoRequired(aSpecialInfo) }) diff --git a/samples/server/petstore/go-server-required/go/model_tag.go b/samples/server/petstore/go-server-required/go/model_tag.go index 0631ccc4866f..9a442e48b2ec 100644 --- a/samples/server/petstore/go-server-required/go/model_tag.go +++ b/samples/server/petstore/go-server-required/go/model_tag.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // Tag - A tag for a pet type Tag struct { @@ -25,10 +29,10 @@ func AssertTagRequired(obj Tag) error { // AssertRecurseTagRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of Tag (e.g. [][]Tag), otherwise ErrTypeAssertionError is thrown. func AssertRecurseTagRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aTag, ok := obj.(Tag) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertTagRequired(aTag) }) diff --git a/samples/server/petstore/go-server-required/go/model_user.go b/samples/server/petstore/go-server-required/go/model_user.go index 037b2f1ede62..e1379f2f3307 100644 --- a/samples/server/petstore/go-server-required/go/model_user.go +++ b/samples/server/petstore/go-server-required/go/model_user.go @@ -8,6 +8,10 @@ */ package petstoreserver +import ( + + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" +) // User - A User who is purchasing from the pet store type User struct { @@ -42,8 +46,8 @@ func AssertUserRequired(obj User) error { "deepSliceModel": obj.DeepSliceModel, } for name, el := range elements { - if isZero := IsZeroValue(el); isZero { - return &RequiredError{Field: name} + if isZero := support.IsZeroValue(el); isZero { + return &support.RequiredError{Field: name} } } @@ -58,10 +62,10 @@ func AssertUserRequired(obj User) error { // AssertRecurseUserRequired recursively checks if required fields are not zero-ed in a nested slice. // Accepts only nested slice of User (e.g. [][]User), otherwise ErrTypeAssertionError is thrown. func AssertRecurseUserRequired(objSlice interface{}) error { - return AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { + return support.AssertRecurseInterfaceRequired(objSlice, func(obj interface{}) error { aUser, ok := obj.(User) if !ok { - return ErrTypeAssertionError + return support.ErrTypeAssertionError } return AssertUserRequired(aUser) }) diff --git a/samples/server/petstore/go-server-required/main.go b/samples/server/petstore/go-server-required/main.go index ddc5258297ca..7b22919e9839 100644 --- a/samples/server/petstore/go-server-required/main.go +++ b/samples/server/petstore/go-server-required/main.go @@ -14,6 +14,7 @@ import ( "net/http" petstoreserver "github.com/GIT_USER_ID/GIT_REPO_ID/go" + support "github.com/GIT_USER_ID/GIT_REPO_ID/support" ) func main() { @@ -28,7 +29,7 @@ func main() { UserApiService := petstoreserver.NewUserApiService() UserApiController := petstoreserver.NewUserApiController(UserApiService) - router := petstoreserver.NewRouter(PetApiController, StoreApiController, UserApiController) + router := support.NewRouter(PetApiController, StoreApiController, UserApiController) log.Fatal(http.ListenAndServe(":8080", router)) } diff --git a/samples/server/petstore/go-chi-server/go/error.go b/samples/server/petstore/go-server-required/support/error.go similarity index 98% rename from samples/server/petstore/go-chi-server/go/error.go rename to samples/server/petstore/go-server-required/support/error.go index 2c0b010fe8da..e9c4795ffe3e 100644 --- a/samples/server/petstore/go-chi-server/go/error.go +++ b/samples/server/petstore/go-server-required/support/error.go @@ -7,7 +7,7 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support import ( "errors" diff --git a/samples/server/petstore/go-server-required/go/helpers.go b/samples/server/petstore/go-server-required/support/helpers.go similarity index 70% rename from samples/server/petstore/go-server-required/go/helpers.go rename to samples/server/petstore/go-server-required/support/helpers.go index f18a261018dd..ce5dcce4819e 100644 --- a/samples/server/petstore/go-server-required/go/helpers.go +++ b/samples/server/petstore/go-server-required/support/helpers.go @@ -7,9 +7,12 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support import ( + "encoding/json" + "net/http" + "io" "reflect" ) @@ -62,3 +65,28 @@ func AssertRecurseValueRequired(value reflect.Value, callback func(interface{}) } return nil } + +// EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code +func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, w http.ResponseWriter) error { + wHeader := w.Header() + if headers != nil { + for key, values := range headers { + for _, value := range values { + wHeader.Add(key, value) + } + } + } + wHeader.Set("Content-Type", "application/json; charset=UTF-8") + if status != nil { + w.WriteHeader(*status) + } else { + w.WriteHeader(http.StatusOK) + } + + return json.NewEncoder(w).Encode(i) +} + +// NewJSONDecoder creates a jew json decoder to decode an http body. +func NewJSONDecoder(r io.Reader) *json.Decoder { + return json.NewDecoder(r) +} diff --git a/samples/server/petstore/go-api-server/go/impl.go b/samples/server/petstore/go-server-required/support/impl.go similarity index 94% rename from samples/server/petstore/go-api-server/go/impl.go rename to samples/server/petstore/go-server-required/support/impl.go index 8c72e26a342a..54db797feb04 100644 --- a/samples/server/petstore/go-api-server/go/impl.go +++ b/samples/server/petstore/go-server-required/support/impl.go @@ -7,7 +7,7 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support // ImplResponse response defines an error code with the associated body type ImplResponse struct { diff --git a/samples/server/petstore/go-api-server/go/logger.go b/samples/server/petstore/go-server-required/support/logger.go similarity index 96% rename from samples/server/petstore/go-api-server/go/logger.go rename to samples/server/petstore/go-server-required/support/logger.go index 08cc0ea3f1d2..cb27ef95fd71 100644 --- a/samples/server/petstore/go-api-server/go/logger.go +++ b/samples/server/petstore/go-server-required/support/logger.go @@ -7,7 +7,7 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support import ( "log" diff --git a/samples/server/petstore/go-server-required/go/routers.go b/samples/server/petstore/go-server-required/support/routers.go similarity index 75% rename from samples/server/petstore/go-server-required/go/routers.go rename to samples/server/petstore/go-server-required/support/routers.go index 3213d5dde239..88984b2acb38 100644 --- a/samples/server/petstore/go-server-required/go/routers.go +++ b/samples/server/petstore/go-server-required/support/routers.go @@ -7,10 +7,9 @@ * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ -package petstoreserver +package support import ( - "encoding/json" "errors" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" @@ -55,26 +54,6 @@ func NewRouter(routers ...Router) chi.Router { return router } -// EncodeJSONResponse uses the json encoder to write an interface to the http response with an optional status code -func EncodeJSONResponse(i interface{}, status *int, headers map[string][]string, w http.ResponseWriter) error { - wHeader := w.Header() - if headers != nil { - for key, values := range headers { - for _, value := range values { - wHeader.Add(key, value) - } - } - } - wHeader.Set("Content-Type", "application/json; charset=UTF-8") - if status != nil { - w.WriteHeader(*status) - } else { - w.WriteHeader(http.StatusOK) - } - - return json.NewEncoder(w).Encode(i) -} - // ReadFormFileToTempFile reads file data from a request form and writes it to a temporary file func ReadFormFileToTempFile(r *http.Request, key string) (*os.File, error) { _, fileHeader, err := r.FormFile(key) @@ -131,8 +110,8 @@ func readFileHeaderToTempFile(fileHeader *multipart.FileHeader) (*os.File, error return file, nil } -// parseInt64Parameter parses a string parameter to an int64. -func parseInt64Parameter(param string, required bool) (int64, error) { +// ParseInt64Parameter parses a string parameter to an int64. +func ParseInt64Parameter(param string, required bool) (int64, error) { if param == "" { if required { return 0, errors.New(errMsgRequiredMissing) @@ -144,8 +123,8 @@ func parseInt64Parameter(param string, required bool) (int64, error) { return strconv.ParseInt(param, 10, 64) } -// parseInt32Parameter parses a string parameter to an int32. -func parseInt32Parameter(param string, required bool) (int32, error) { +// ParseInt32Parameter parses a string parameter to an int32. +func ParseInt32Parameter(param string, required bool) (int32, error) { if param == "" { if required { return 0, errors.New(errMsgRequiredMissing) @@ -162,8 +141,8 @@ func parseInt32Parameter(param string, required bool) (int32, error) { return int32(val), nil } -// parseBoolParameter parses a string parameter to a bool -func parseBoolParameter(param string) (bool, error) { +// ParseBoolParameter parses a string parameter to a bool +func ParseBoolParameter(param string) (bool, error) { val, err := strconv.ParseBool(param) if err != nil { return false, err @@ -172,8 +151,8 @@ func parseBoolParameter(param string) (bool, error) { return bool(val), nil } -// parseInt64ArrayParameter parses a string parameter containing array of values to []int64. -func parseInt64ArrayParameter(param, delim string, required bool) ([]int64, error) { +// ParseInt64ArrayParameter parses a string parameter containing array of values to []int64. +func ParseInt64ArrayParameter(param, delim string, required bool) ([]int64, error) { if param == "" { if required { return nil, errors.New(errMsgRequiredMissing) @@ -196,8 +175,8 @@ func parseInt64ArrayParameter(param, delim string, required bool) ([]int64, erro return ints, nil } -// parseInt32ArrayParameter parses a string parameter containing array of values to []int32. -func parseInt32ArrayParameter(param, delim string, required bool) ([]int32, error) { +// ParseInt32ArrayParameter parses a string parameter containing array of values to []int32. +func ParseInt32ArrayParameter(param, delim string, required bool) ([]int32, error) { if param == "" { if required { return nil, errors.New(errMsgRequiredMissing) @@ -218,4 +197,4 @@ func parseInt32ArrayParameter(param, delim string, required bool) ([]int32, erro } return ints, nil -} \ No newline at end of file +}