forked from loafle/openapi-generator-original
[go-server] Add ability to handle nullable query param (#17321)
* Update * Regen
This commit is contained in:
+55
-10
@@ -31,6 +31,8 @@ import org.slf4j.LoggerFactory;
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
|
||||
import static org.openapitools.codegen.utils.StringUtils.camelize;
|
||||
|
||||
public class GoServerCodegen extends AbstractGoCodegen {
|
||||
|
||||
/**
|
||||
@@ -322,34 +324,77 @@ public class GoServerCodegen extends AbstractGoCodegen {
|
||||
|
||||
@Override
|
||||
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
|
||||
objs = super.postProcessOperationsWithModels(objs, allModels);
|
||||
// TODO: refactor abstractGoCodegen, decouple go client only code and remove this
|
||||
OperationMap objectMap = objs.getOperations();
|
||||
List<CodegenOperation> operations = objectMap.getOperation();
|
||||
|
||||
for (CodegenOperation operation : operations) {
|
||||
// http method verb conversion (e.g. PUT => Put)
|
||||
operation.httpMethod = camelize(operation.httpMethod.toLowerCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
// remove model imports to avoid error
|
||||
List<Map<String, String>> imports = objs.getImports();
|
||||
if (imports == null)
|
||||
return objs;
|
||||
|
||||
// override imports to only include packages for interface parameters
|
||||
imports.clear();
|
||||
Iterator<Map<String, String>> iterator = imports.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String _import = iterator.next().get("import");
|
||||
if (_import.startsWith(apiPackage))
|
||||
iterator.remove();
|
||||
}
|
||||
|
||||
boolean addedTimeImport = false;
|
||||
boolean addedOSImport = false;
|
||||
boolean addedReflectImport = false;
|
||||
for (CodegenOperation operation : operations) {
|
||||
for (CodegenParameter param : operation.allParams) {
|
||||
// import "os" if the operation uses files
|
||||
if (!addedOSImport && ("*os.File".equals(param.dataType) || ("[]*os.File".equals(param.dataType)))) {
|
||||
if (!addedOSImport && ("*os.File".equals(param.dataType) || "[]*os.File".equals(param.dataType))) {
|
||||
imports.add(createMapping("import", "os"));
|
||||
addedOSImport = true;
|
||||
}
|
||||
|
||||
// import "time" if the operation has a required time parameter
|
||||
if (param.required) {
|
||||
if (!addedTimeImport && "time.Time".equals(param.dataType)) {
|
||||
imports.add(createMapping("import", "time"));
|
||||
addedTimeImport = true;
|
||||
}
|
||||
// import "time" if the operation has a time parameter.
|
||||
if (!addedTimeImport && "time.Time".equals(param.dataType)) {
|
||||
imports.add(createMapping("import", "time"));
|
||||
addedTimeImport = true;
|
||||
}
|
||||
|
||||
// import "reflect" package if the parameter is collectionFormat=multi
|
||||
if (!addedReflectImport && param.isCollectionFormatMulti) {
|
||||
imports.add(createMapping("import", "reflect"));
|
||||
addedReflectImport = true;
|
||||
}
|
||||
|
||||
// set x-exportParamName
|
||||
char nameFirstChar = param.paramName.charAt(0);
|
||||
if (Character.isUpperCase(nameFirstChar)) {
|
||||
// First char is already uppercase, just use paramName.
|
||||
param.vendorExtensions.put("x-export-param-name", param.paramName);
|
||||
} else {
|
||||
// It's a lowercase first char, let's convert it to uppercase
|
||||
StringBuilder sb = new StringBuilder(param.paramName);
|
||||
sb.setCharAt(0, Character.toUpperCase(nameFirstChar));
|
||||
param.vendorExtensions.put("x-export-param-name", sb.toString());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// recursively add import for mapping one type to multiple imports
|
||||
List<Map<String, String>> recursiveImports = objs.getImports();
|
||||
if (recursiveImports == null)
|
||||
return objs;
|
||||
|
||||
ListIterator<Map<String, String>> listIterator = imports.listIterator();
|
||||
while (listIterator.hasNext()) {
|
||||
String _import = listIterator.next().get("import");
|
||||
// if the import package happens to be found in the importMapping (key)
|
||||
// add the corresponding import package to the list
|
||||
if (importMapping.containsKey(_import)) {
|
||||
listIterator.add(createMapping("import", importMapping.get(_import)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,5 +28,5 @@ type {{classname}}Servicer interface { {{#operations}}{{#operation}}
|
||||
{{#isDeprecated}}
|
||||
// Deprecated
|
||||
{{/isDeprecated}}
|
||||
{{operationId}}(context.Context{{#allParams}}, {{dataType}}{{/allParams}}) (ImplResponse, error){{/operation}}{{/operations}}
|
||||
{{operationId}}(context.Context{{#allParams}}, {{#isNullable}}*{{/isNullable}}{{dataType}}{{/allParams}}) (ImplResponse, error){{/operation}}{{/operations}}
|
||||
}{{/apis}}{{/apiInfo}}
|
||||
|
||||
+187
-118
@@ -1,6 +1,7 @@
|
||||
{{>partial_header}}
|
||||
package {{packageName}}
|
||||
|
||||
{{#operations}}
|
||||
import (
|
||||
"encoding/json"
|
||||
{{#isBodyParam}}
|
||||
@@ -11,6 +12,8 @@ import (
|
||||
{{/isBodyParam}}
|
||||
"net/http"
|
||||
"strings"
|
||||
{{#imports}} "{{import}}"
|
||||
{{/imports}}
|
||||
|
||||
{{#routers}}
|
||||
{{#mux}}
|
||||
@@ -21,6 +24,7 @@ import (
|
||||
{{/chi}}
|
||||
{{/routers}}
|
||||
)
|
||||
{{/operations}}
|
||||
|
||||
// {{classname}}Controller binds http requests to an api service and writes the service results to the http response
|
||||
type {{classname}}Controller struct {
|
||||
@@ -204,105 +208,188 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
{{/isPathParam}}
|
||||
{{#isQueryParam}}
|
||||
{{#isDateTime}}
|
||||
{{#required}}
|
||||
if !query.Has("{{baseName}}"){
|
||||
c.errorHandler(w, r, &RequiredError{"{{baseName}}"}, nil)
|
||||
return
|
||||
}
|
||||
{{paramName}}Param, err := parseTime(query.Get("{{baseName}}"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/required}}
|
||||
{{^required}}
|
||||
{{paramName}}Param, err := parseTime(query.Get("{{baseName}}"))
|
||||
if err != nil {
|
||||
var {{paramName}}Param {{#isNullable}}*{{/isNullable}}time.Time
|
||||
if query.Has("{{baseName}}"){
|
||||
param, err := parseTime(query.Get("{{baseName}}"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
} else {
|
||||
{{#required}}
|
||||
c.errorHandler(w, r, &RequiredError{"{{baseName}}"}, nil)
|
||||
return
|
||||
{{/required}}
|
||||
}
|
||||
{{/required}}
|
||||
{{/isDateTime}}
|
||||
{{#isNumber}}
|
||||
{{paramName}}Param, err := parseNumericParameter[float32](
|
||||
query.Get("{{baseName}}"),{{#defaultValue}}
|
||||
WithDefaultOrParse[float32]({{defaultValue}}, parseFloat32),{{/defaultValue}}{{^defaultValue}}{{#required}}
|
||||
WithRequire[float32](parseFloat32),{{/required}}{{/defaultValue}}{{^defaultValue}}{{^required}}
|
||||
WithParse[float32](parseFloat32),{{/required}}{{/defaultValue}}{{#minimum}}
|
||||
WithMinimum[float32]({{minimum}}),{{/minimum}}{{#maximum}}
|
||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var {{paramName}}Param {{#isNullable}}*{{/isNullable}}float32
|
||||
if query.Has("{{baseName}}") {
|
||||
param, err := parseNumericParameter[float32](
|
||||
query.Get("{{baseName}}"),
|
||||
WithParse[float32](parseFloat32),{{#minimum}}
|
||||
WithMinimum[float32]({{minimum}}),{{/minimum}}{{#maximum}}
|
||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
} else {
|
||||
{{#required}}
|
||||
c.errorHandler(w, r, &RequiredError{Field: "{{baseName}}"}, nil)
|
||||
return
|
||||
{{/required}}
|
||||
{{^required}}
|
||||
{{#defaultValue}}
|
||||
var param float32 = {{defaultValue}}
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
{{/defaultValue}}
|
||||
{{/required}}
|
||||
}
|
||||
{{/isNumber}}
|
||||
{{#isFloat}}
|
||||
{{paramName}}Param, err := parseNumericParameter[float32](
|
||||
query.Get("{{baseName}}"),{{#defaultValue}}
|
||||
WithDefaultOrParse[float32]({{defaultValue}}, parseFloat32),{{/defaultValue}}{{^defaultValue}}{{#required}}
|
||||
WithRequire[float32](parseFloat32),{{/required}}{{/defaultValue}}{{^defaultValue}}{{^required}}
|
||||
WithParse[float32](parseFloat32),{{/required}}{{/defaultValue}}{{#minimum}}
|
||||
WithMinimum[float32]({{minimum}}),{{/minimum}}{{#maximum}}
|
||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var {{paramName}}Param {{#isNullable}}*{{/isNullable}}float32
|
||||
if query.Has("{{baseName}}") {
|
||||
param, err := parseNumericParameter[float32](
|
||||
query.Get("{{baseName}}"),
|
||||
WithParse[float32](parseFloat32),{{#minimum}}
|
||||
WithMinimum[float32]({{minimum}}),{{/minimum}}{{#maximum}}
|
||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
} else {
|
||||
{{#required}}
|
||||
c.errorHandler(w, r, &RequiredError{Field: "{{baseName}}"}, nil)
|
||||
return
|
||||
{{/required}}
|
||||
{{^required}}
|
||||
{{#defaultValue}}
|
||||
var param float32 = {{defaultValue}}
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
{{/defaultValue}}
|
||||
{{/required}}
|
||||
}
|
||||
{{/isFloat}}
|
||||
{{#isDouble}}
|
||||
{{paramName}}Param, err := parseNumericParameter[float64](
|
||||
query.Get("{{baseName}}"),{{#defaultValue}}
|
||||
WithDefaultOrParse[float64]({{defaultValue}}, parseFloat64),{{/defaultValue}}{{^defaultValue}}{{#required}}
|
||||
WithRequire[float64](parseFloat64),{{/required}}{{/defaultValue}}{{^defaultValue}}{{^required}}
|
||||
WithParse[float64](parseFloat64),{{/required}}{{/defaultValue}}{{#minimum}}
|
||||
WithMinimum[float64]({{minimum}}),{{/minimum}}{{#maximum}}
|
||||
WithMaximum[float64]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var {{paramName}}Param {{#isNullable}}*{{/isNullable}}float64
|
||||
if query.Has("{{baseName}}") {
|
||||
param, err := parseNumericParameter[float64](
|
||||
query.Get("{{baseName}}"),
|
||||
WithParse[float64](parseFloat64),{{#minimum}}
|
||||
WithMinimum[float64]({{minimum}}),{{/minimum}}{{#maximum}}
|
||||
WithMaximum[float64]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
} else {
|
||||
{{#required}}
|
||||
c.errorHandler(w, r, &RequiredError{Field: "{{baseName}}"}, nil)
|
||||
return
|
||||
{{/required}}
|
||||
{{^required}}
|
||||
{{#defaultValue}}
|
||||
var param float64 = {{defaultValue}}
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
{{/defaultValue}}
|
||||
{{/required}}
|
||||
}
|
||||
{{/isDouble}}
|
||||
{{#isLong}}
|
||||
{{paramName}}Param, err := parseNumericParameter[int64](
|
||||
query.Get("{{baseName}}"),{{#defaultValue}}
|
||||
WithDefaultOrParse[int64]({{defaultValue}}, parseInt64),{{/defaultValue}}{{^defaultValue}}{{#required}}
|
||||
WithRequire[int64](parseInt64),{{/required}}{{/defaultValue}}{{^defaultValue}}{{^required}}
|
||||
WithParse[int64](parseInt64),{{/required}}{{/defaultValue}}{{#minimum}}
|
||||
WithMinimum[int64]({{minimum}}),{{/minimum}}{{#maximum}}
|
||||
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var {{paramName}}Param {{#isNullable}}*{{/isNullable}}int64
|
||||
if query.Has("{{baseName}}") {
|
||||
param, err := parseNumericParameter[int64](
|
||||
query.Get("{{baseName}}"),
|
||||
WithParse[int64](parseInt64),{{#minimum}}
|
||||
WithMinimum[int64]({{minimum}}),{{/minimum}}{{#maximum}}
|
||||
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
} else {
|
||||
{{#required}}
|
||||
c.errorHandler(w, r, &RequiredError{Field: "{{baseName}}"}, nil)
|
||||
return
|
||||
{{/required}}
|
||||
{{^required}}
|
||||
{{#defaultValue}}
|
||||
var param int64 = {{defaultValue}}
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
{{/defaultValue}}
|
||||
{{/required}}
|
||||
}
|
||||
{{/isLong}}
|
||||
{{#isInteger}}
|
||||
{{paramName}}Param, err := parseNumericParameter[int32](
|
||||
query.Get("{{baseName}}"),{{#defaultValue}}
|
||||
WithDefaultOrParse[int32]({{defaultValue}}, parseInt32),{{/defaultValue}}{{^defaultValue}}{{#required}}
|
||||
WithRequire[int32](parseInt32),{{/required}}{{/defaultValue}}{{^defaultValue}}{{^required}}
|
||||
WithParse[int32](parseInt32),{{/required}}{{/defaultValue}}{{#minimum}}
|
||||
WithMinimum[int32]({{minimum}}),{{/minimum}}{{#maximum}}
|
||||
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var {{paramName}}Param {{#isNullable}}*{{/isNullable}}int32
|
||||
if query.Has("{{baseName}}") {
|
||||
param, err := parseNumericParameter[int32](
|
||||
query.Get("{{baseName}}"),
|
||||
WithParse[int32](parseInt32),{{#minimum}}
|
||||
WithMinimum[int32]({{minimum}}),{{/minimum}}{{#maximum}}
|
||||
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
} else {
|
||||
{{#required}}
|
||||
c.errorHandler(w, r, &RequiredError{Field: "{{baseName}}"}, nil)
|
||||
return
|
||||
{{/required}}
|
||||
{{^required}}
|
||||
{{#defaultValue}}
|
||||
var param int32 = {{defaultValue}}
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
{{/defaultValue}}
|
||||
{{/required}}
|
||||
}
|
||||
{{/isInteger}}
|
||||
{{#isBoolean}}
|
||||
{{paramName}}Param, err := parseBoolParameter(
|
||||
query.Get("{{baseName}}"),{{#defaultValue}}
|
||||
WithDefaultOrParse[bool]({{defaultValue}}, parseBool),{{/defaultValue}}{{^defaultValue}}{{#required}}
|
||||
WithRequire[bool](parseBool),{{/required}}{{/defaultValue}}{{^defaultValue}}{{^required}}
|
||||
WithParse[bool](parseBool),{{/required}}{{/defaultValue}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var {{paramName}}Param {{#isNullable}}*{{/isNullable}}bool
|
||||
if query.Has("{{baseName}}") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("{{baseName}}"),
|
||||
WithParse[bool](parseBool),{{#minimum}}
|
||||
WithMinimum[bool]({{minimum}}),{{/minimum}}{{#maximum}}
|
||||
WithMaximum[bool]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
} else {
|
||||
{{#required}}
|
||||
c.errorHandler(w, r, &RequiredError{Field: "{{baseName}}"}, nil)
|
||||
return
|
||||
{{/required}}
|
||||
{{^required}}
|
||||
{{#defaultValue}}
|
||||
var param bool = {{defaultValue}}
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
{{/defaultValue}}
|
||||
{{/required}}
|
||||
}
|
||||
{{/isBoolean}}
|
||||
{{#isArray}}
|
||||
@@ -413,46 +500,23 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
{{^isBoolean}}
|
||||
{{^isArray}}
|
||||
{{^isDateTime}}
|
||||
{{#defaultValue}}
|
||||
{{paramName}}Param := "{{defaultValue}}"
|
||||
var {{paramName}}Param {{#isNullable}}*{{/isNullable}}{{dataType}}
|
||||
if query.Has("{{baseName}}") {
|
||||
{{paramName}}Param = {{^isString}}{{dataType}}( {{/isString}}query.Get("{{baseName}}"){{^isString}} ){{/isString}}
|
||||
}
|
||||
{{/defaultValue}}
|
||||
{{^defaultValue}}
|
||||
{{^required}}
|
||||
var {{paramName}}Param {{dataType}}
|
||||
if query.Has("{{baseName}}") {
|
||||
{{^isEnumRef}}
|
||||
{{paramName}}Param = query.Get("{{baseName}}")
|
||||
{{/isEnumRef}}
|
||||
{{#isEnumRef}}
|
||||
var err error
|
||||
{{paramName}}Param, err = New{{dataType}}FromValue(query.Get("{{baseName}}"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/isEnumRef}}
|
||||
}
|
||||
{{/required}}
|
||||
{{#required}}
|
||||
{{^isEnumRef}}
|
||||
{{paramName}}Param := query.Get("{{baseName}}")
|
||||
{{/isEnumRef}}
|
||||
{{#isEnumRef}}
|
||||
if !query.Has("{{baseName}}"){
|
||||
c.errorHandler(w, r, &RequiredError{"{{baseName}}"}, nil)
|
||||
param := {{^isString}}{{dataType}}({{/isString}}query.Get("{{baseName}}"){{^isString}}){{/isString}}
|
||||
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
} else {
|
||||
{{#required}}
|
||||
c.errorHandler(w, r, &RequiredError{Field: "{{baseName}}"}, nil)
|
||||
return
|
||||
{{/required}}
|
||||
{{^required}}
|
||||
{{#defaultValue}}
|
||||
param := {{^isString}}{{dataType}}({{/isString}}{{defaultValue}}{{^isString}}){{/isString}}
|
||||
{{paramName}}Param = {{#isNullable}}&{{/isNullable}}param
|
||||
{{/defaultValue}}
|
||||
{{/required}}
|
||||
}
|
||||
{{paramName}}Param, err := New{{dataType}}FromValue(query.Get("{{baseName}}"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/isEnumRef}}
|
||||
{{/required}}
|
||||
{{/defaultValue}}
|
||||
{{/isDateTime}}
|
||||
{{/isArray}}
|
||||
{{/isBoolean}}
|
||||
@@ -464,15 +528,20 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
{{/isQueryParam}}
|
||||
{{#isFormParam}}
|
||||
{{#isFile}}
|
||||
var {{paramName}}Param {{#isArray}}[]*os.File{{/isArray}}{{^isArray}}*os.File{{/isArray}}
|
||||
{
|
||||
{{#isArray}}
|
||||
{{paramName}}Param, err := ReadFormFilesToTempFiles(r, "{{baseName}}")
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
{{paramName}}Param, err := ReadFormFileToTempFile(r, "{{baseName}}")
|
||||
{{/isArray}}
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
param, err := ReadFormFilesToTempFiles(r, "{{baseName}}")
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
param, err := ReadFormFileToTempFile(r, "{{baseName}}")
|
||||
{{/isArray}}
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
{{paramName}}Param = param
|
||||
}
|
||||
{{/isFile}}
|
||||
{{#isLong}}{{#isArray}}
|
||||
|
||||
@@ -23,7 +23,7 @@ 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}} {{#isNullable}}*{{/isNullable}}{{dataType}}{{/allParams}}) (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.
|
||||
|
||||
|
||||
@@ -135,6 +135,53 @@ paths:
|
||||
security:
|
||||
- petstore_auth:
|
||||
- 'read:pets'
|
||||
/pet/searchPetWithManyFilters:
|
||||
get:
|
||||
tags:
|
||||
- pet
|
||||
summary: Search Pets by filters
|
||||
description: >-
|
||||
Search endpoint
|
||||
operationId: searchPet
|
||||
parameters:
|
||||
- name: age
|
||||
in: query
|
||||
description: age of the pet
|
||||
schema:
|
||||
type: integer
|
||||
format: int64
|
||||
nullable: true
|
||||
- name: price
|
||||
in: query
|
||||
description: Price of the pet
|
||||
schema:
|
||||
type: number
|
||||
nullable: true
|
||||
- name: bornAfter
|
||||
in: query
|
||||
description: Find pets born after this date
|
||||
style: form
|
||||
explode: false
|
||||
schema:
|
||||
type: string
|
||||
format: date-time
|
||||
nullable: true
|
||||
- description: Is the pet classified as old
|
||||
in: query
|
||||
name: old
|
||||
schema:
|
||||
type: boolean
|
||||
nullable: true
|
||||
style: form
|
||||
responses:
|
||||
'200':
|
||||
description: successful operation
|
||||
content:
|
||||
application/xml:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/Pet'
|
||||
/pet/findByTags:
|
||||
get:
|
||||
tags:
|
||||
@@ -173,6 +220,10 @@ paths:
|
||||
schema:
|
||||
type: string
|
||||
format: date-time
|
||||
- name: colour
|
||||
in: query
|
||||
schema:
|
||||
$ref: '#/components/schemas/Colour'
|
||||
responses:
|
||||
'200':
|
||||
description: successful operation
|
||||
@@ -1028,6 +1079,12 @@ components:
|
||||
enum:
|
||||
- male
|
||||
- female
|
||||
Colour:
|
||||
type: string
|
||||
nullable: true
|
||||
enum:
|
||||
- Blue
|
||||
- White
|
||||
ApiResponse:
|
||||
title: An uploaded response
|
||||
description: Describes the result of uploading an image resource
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strings"
|
||||
"os"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
)
|
||||
@@ -270,10 +271,15 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
|
||||
additionalMetadataParam := r.FormValue("additionalMetadata")
|
||||
fileParam, err := ReadFormFileToTempFile(r, "file")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var fileParam *os.File
|
||||
{
|
||||
param, err := ReadFormFileToTempFile(r, "file")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
fileParam = param
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -178,13 +178,19 @@ func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) {
|
||||
c.errorHandler(w, r, &RequiredError{"username"}, nil)
|
||||
return
|
||||
}
|
||||
booleanTestParam, err := parseBoolParameter(
|
||||
query.Get("boolean_test"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var booleanTestParam bool
|
||||
if query.Has("boolean_test") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("boolean_test"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
booleanTestParam = param
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.DeleteUser(r.Context(), usernameParam, booleanTestParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
@@ -216,47 +222,93 @@ func (c *UserAPIController) GetUserByName(w http.ResponseWriter, r *http.Request
|
||||
// LoginUser - Logs user into the system
|
||||
func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
||||
query := r.URL.Query()
|
||||
usernameParam := query.Get("username")
|
||||
passwordParam := query.Get("password")
|
||||
int32TestParam, err := parseNumericParameter[int32](
|
||||
query.Get("int32_test"),
|
||||
WithParse[int32](parseInt32),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var usernameParam string
|
||||
if query.Has("username") {
|
||||
param := query.Get("username")
|
||||
|
||||
usernameParam = param
|
||||
} else {
|
||||
c.errorHandler(w, r, &RequiredError{Field: "username"}, nil)
|
||||
return
|
||||
}
|
||||
int64TestParam, err := parseNumericParameter[int64](
|
||||
query.Get("int64_test"),
|
||||
WithParse[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var passwordParam string
|
||||
if query.Has("password") {
|
||||
param := query.Get("password")
|
||||
|
||||
passwordParam = param
|
||||
} else {
|
||||
c.errorHandler(w, r, &RequiredError{Field: "password"}, nil)
|
||||
return
|
||||
}
|
||||
float32TestParam, err := parseNumericParameter[float32](
|
||||
query.Get("float32_test"),
|
||||
WithParse[float32](parseFloat32),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var int32TestParam int32
|
||||
if query.Has("int32_test") {
|
||||
param, err := parseNumericParameter[int32](
|
||||
query.Get("int32_test"),
|
||||
WithParse[int32](parseInt32),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
int32TestParam = param
|
||||
} else {
|
||||
}
|
||||
float64TestParam, err := parseNumericParameter[float64](
|
||||
query.Get("float64_test"),
|
||||
WithParse[float64](parseFloat64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var int64TestParam int64
|
||||
if query.Has("int64_test") {
|
||||
param, err := parseNumericParameter[int64](
|
||||
query.Get("int64_test"),
|
||||
WithParse[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
int64TestParam = param
|
||||
} else {
|
||||
}
|
||||
booleanTestParam, err := parseBoolParameter(
|
||||
query.Get("boolean_test"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var float32TestParam float32
|
||||
if query.Has("float32_test") {
|
||||
param, err := parseNumericParameter[float32](
|
||||
query.Get("float32_test"),
|
||||
WithParse[float32](parseFloat32),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
float32TestParam = param
|
||||
} else {
|
||||
}
|
||||
var float64TestParam float64
|
||||
if query.Has("float64_test") {
|
||||
param, err := parseNumericParameter[float64](
|
||||
query.Get("float64_test"),
|
||||
WithParse[float64](parseFloat64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
float64TestParam = param
|
||||
} else {
|
||||
}
|
||||
var booleanTestParam bool
|
||||
if query.Has("boolean_test") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("boolean_test"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
booleanTestParam = param
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.LoginUser(r.Context(), usernameParam, passwordParam, int32TestParam, int64TestParam, float32TestParam, float64TestParam, booleanTestParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
|
||||
@@ -16,6 +16,7 @@ go/logger.go
|
||||
go/model_an_object.go
|
||||
go/model_api_response.go
|
||||
go/model_category.go
|
||||
go/model_colour.go
|
||||
go/model_gender.go
|
||||
go/model_order.go
|
||||
go/model_order_info.go
|
||||
|
||||
@@ -143,6 +143,61 @@ paths:
|
||||
summary: Finds Pets by status
|
||||
tags:
|
||||
- pet
|
||||
/pet/searchPetWithManyFilters:
|
||||
get:
|
||||
description: Search endpoint
|
||||
operationId: searchPet
|
||||
parameters:
|
||||
- description: age of the pet
|
||||
explode: true
|
||||
in: query
|
||||
name: age
|
||||
required: false
|
||||
schema:
|
||||
format: int64
|
||||
nullable: true
|
||||
type: integer
|
||||
style: form
|
||||
- description: Price of the pet
|
||||
explode: true
|
||||
in: query
|
||||
name: price
|
||||
required: false
|
||||
schema:
|
||||
nullable: true
|
||||
type: number
|
||||
style: form
|
||||
- description: Find pets born after this date
|
||||
explode: false
|
||||
in: query
|
||||
name: bornAfter
|
||||
required: false
|
||||
schema:
|
||||
format: date-time
|
||||
nullable: true
|
||||
type: string
|
||||
style: form
|
||||
- description: Is the pet classified as old
|
||||
explode: true
|
||||
in: query
|
||||
name: old
|
||||
required: false
|
||||
schema:
|
||||
nullable: true
|
||||
type: boolean
|
||||
style: form
|
||||
responses:
|
||||
"200":
|
||||
content:
|
||||
application/xml:
|
||||
schema:
|
||||
items:
|
||||
$ref: '#/components/schemas/Pet'
|
||||
type: array
|
||||
description: successful operation
|
||||
summary: Search Pets by filters
|
||||
tags:
|
||||
- pet
|
||||
/pet/findByTags:
|
||||
get:
|
||||
deprecated: true
|
||||
@@ -178,6 +233,13 @@ paths:
|
||||
format: date-time
|
||||
type: string
|
||||
style: form
|
||||
- explode: true
|
||||
in: query
|
||||
name: colour
|
||||
required: false
|
||||
schema:
|
||||
$ref: '#/components/schemas/Colour'
|
||||
style: form
|
||||
responses:
|
||||
"200":
|
||||
content:
|
||||
@@ -1210,6 +1272,12 @@ components:
|
||||
- male
|
||||
- female
|
||||
type: string
|
||||
Colour:
|
||||
enum:
|
||||
- Blue
|
||||
- White
|
||||
nullable: true
|
||||
type: string
|
||||
ApiResponse:
|
||||
description: Describes the result of uploading an image resource
|
||||
example:
|
||||
|
||||
@@ -32,6 +32,7 @@ type PetAPIRouter interface {
|
||||
GetPetImageById(http.ResponseWriter, *http.Request)
|
||||
GetPetsByTime(http.ResponseWriter, *http.Request)
|
||||
GetPetsUsingBooleanQueryParameters(http.ResponseWriter, *http.Request)
|
||||
SearchPet(http.ResponseWriter, *http.Request)
|
||||
UpdatePet(http.ResponseWriter, *http.Request)
|
||||
UpdatePetWithForm(http.ResponseWriter, *http.Request)
|
||||
UploadFile(http.ResponseWriter, *http.Request)
|
||||
@@ -71,11 +72,12 @@ type PetAPIServicer interface {
|
||||
FilterPetsByCategory(context.Context, Gender, Species, []Species) (ImplResponse, error)
|
||||
FindPetsByStatus(context.Context, []string, string, string) (ImplResponse, error)
|
||||
// Deprecated
|
||||
FindPetsByTags(context.Context, []string, time.Time, time.Time) (ImplResponse, error)
|
||||
FindPetsByTags(context.Context, []string, time.Time, time.Time, Colour) (ImplResponse, error)
|
||||
GetPetById(context.Context, int64) (ImplResponse, error)
|
||||
GetPetImageById(context.Context, int64) (ImplResponse, error)
|
||||
GetPetsByTime(context.Context, time.Time) (ImplResponse, error)
|
||||
GetPetsUsingBooleanQueryParameters(context.Context, bool, bool, bool) (ImplResponse, error)
|
||||
SearchPet(context.Context, *int64, *float32, *time.Time, *bool) (ImplResponse, error)
|
||||
UpdatePet(context.Context, Pet) (ImplResponse, error)
|
||||
UpdatePetWithForm(context.Context, int64, string, string) (ImplResponse, error)
|
||||
UploadFile(context.Context, int64, string, []string, *os.File) (ImplResponse, error)
|
||||
|
||||
@@ -13,6 +13,8 @@ import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
"os"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
)
|
||||
@@ -95,6 +97,11 @@ func (c *PetAPIController) Routes() Routes {
|
||||
"/v2/pets/boolean/parsing",
|
||||
c.GetPetsUsingBooleanQueryParameters,
|
||||
},
|
||||
"SearchPet": Route{
|
||||
strings.ToUpper("Get"),
|
||||
"/v2/pet/searchPetWithManyFilters",
|
||||
c.SearchPet,
|
||||
},
|
||||
"UpdatePet": Route{
|
||||
strings.ToUpper("Put"),
|
||||
"/v2/pet",
|
||||
@@ -176,13 +183,13 @@ func (c *PetAPIController) FilterPetsByCategory(w http.ResponseWriter, r *http.R
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
if !query.Has("species"){
|
||||
c.errorHandler(w, r, &RequiredError{"species"}, nil)
|
||||
return
|
||||
}
|
||||
speciesParam, err := NewSpeciesFromValue(query.Get("species"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var speciesParam Species
|
||||
if query.Has("species") {
|
||||
param := Species(query.Get("species"))
|
||||
|
||||
speciesParam = param
|
||||
} else {
|
||||
c.errorHandler(w, r, &RequiredError{Field: "species"}, nil)
|
||||
return
|
||||
}
|
||||
var notSpeciesParam []Species
|
||||
@@ -223,7 +230,10 @@ func (c *PetAPIController) FindPetsByStatus(w http.ResponseWriter, r *http.Reque
|
||||
}
|
||||
var inlineEnumParam string
|
||||
if query.Has("inlineEnum") {
|
||||
inlineEnumParam = query.Get("inlineEnum")
|
||||
param := query.Get("inlineEnum")
|
||||
|
||||
inlineEnumParam = param
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.FindPetsByStatus(r.Context(), statusParam, inlineEnumPathParam, inlineEnumParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
@@ -243,21 +253,38 @@ func (c *PetAPIController) FindPetsByTags(w http.ResponseWriter, r *http.Request
|
||||
if query.Has("tags") {
|
||||
tagsParam = strings.Split(query.Get("tags"), ",")
|
||||
}
|
||||
if !query.Has("bornAfter"){
|
||||
var bornAfterParam time.Time
|
||||
if query.Has("bornAfter"){
|
||||
param, err := parseTime(query.Get("bornAfter"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
bornAfterParam = param
|
||||
} else {
|
||||
c.errorHandler(w, r, &RequiredError{"bornAfter"}, nil)
|
||||
return
|
||||
}
|
||||
bornAfterParam, err := parseTime(query.Get("bornAfter"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
bornBeforeParam, err := parseTime(query.Get("bornBefore"))
|
||||
if err != nil {
|
||||
var bornBeforeParam time.Time
|
||||
if query.Has("bornBefore"){
|
||||
param, err := parseTime(query.Get("bornBefore"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
bornBeforeParam = param
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.FindPetsByTags(r.Context(), tagsParam, bornAfterParam, bornBeforeParam)
|
||||
var colourParam Colour
|
||||
if query.Has("colour") {
|
||||
param := Colour(query.Get("colour"))
|
||||
|
||||
colourParam = param
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.FindPetsByTags(r.Context(), tagsParam, bornAfterParam, bornBeforeParam, colourParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, err, &result)
|
||||
@@ -330,29 +357,51 @@ func (c *PetAPIController) GetPetsByTime(w http.ResponseWriter, r *http.Request)
|
||||
// GetPetsUsingBooleanQueryParameters - Get the pets by only using boolean query parameters
|
||||
func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWriter, r *http.Request) {
|
||||
query := r.URL.Query()
|
||||
exprParam, err := parseBoolParameter(
|
||||
query.Get("expr"),
|
||||
WithRequire[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var exprParam bool
|
||||
if query.Has("expr") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("expr"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
exprParam = param
|
||||
} else {
|
||||
c.errorHandler(w, r, &RequiredError{Field: "expr"}, nil)
|
||||
return
|
||||
}
|
||||
groupingParam, err := parseBoolParameter(
|
||||
query.Get("grouping"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var groupingParam bool
|
||||
if query.Has("grouping") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("grouping"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
groupingParam = param
|
||||
} else {
|
||||
}
|
||||
inactiveParam, err := parseBoolParameter(
|
||||
query.Get("inactive"),
|
||||
WithDefaultOrParse[bool](false, parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var inactiveParam bool
|
||||
if query.Has("inactive") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("inactive"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
inactiveParam = param
|
||||
} else {
|
||||
var param bool = false
|
||||
inactiveParam = param
|
||||
}
|
||||
result, err := c.service.GetPetsUsingBooleanQueryParameters(r.Context(), exprParam, groupingParam, inactiveParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
@@ -364,6 +413,72 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
||||
EncodeJSONResponse(result.Body, &result.Code, result.Headers, w)
|
||||
}
|
||||
|
||||
// SearchPet - Search Pets by filters
|
||||
func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
||||
query := r.URL.Query()
|
||||
var ageParam *int64
|
||||
if query.Has("age") {
|
||||
param, err := parseNumericParameter[int64](
|
||||
query.Get("age"),
|
||||
WithParse[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
ageParam = ¶m
|
||||
} else {
|
||||
}
|
||||
var priceParam *float32
|
||||
if query.Has("price") {
|
||||
param, err := parseNumericParameter[float32](
|
||||
query.Get("price"),
|
||||
WithParse[float32](parseFloat32),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
priceParam = ¶m
|
||||
} else {
|
||||
}
|
||||
var bornAfterParam *time.Time
|
||||
if query.Has("bornAfter"){
|
||||
param, err := parseTime(query.Get("bornAfter"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
bornAfterParam = ¶m
|
||||
} else {
|
||||
}
|
||||
var oldParam *bool
|
||||
if query.Has("old") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("old"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
oldParam = ¶m
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.SearchPet(r.Context(), ageParam, priceParam, bornAfterParam, oldParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, err, &result)
|
||||
return
|
||||
}
|
||||
// If no error, encode the body and the result code
|
||||
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{}
|
||||
@@ -443,10 +558,15 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
|
||||
extraOptionalMetadataParam := strings.Split(r.FormValue("extraOptionalMetadata"), ",")
|
||||
fileParam, err := ReadFormFileToTempFile(r, "file")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var fileParam *os.File
|
||||
{
|
||||
param, err := ReadFormFileToTempFile(r, "file")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
fileParam = param
|
||||
}
|
||||
|
||||
|
||||
@@ -478,10 +598,15 @@ func (c *PetAPIController) UploadFileArrayOfFiles(w http.ResponseWriter, r *http
|
||||
|
||||
|
||||
additionalMetadataParam := r.FormValue("additionalMetadata")
|
||||
filesParam, err := ReadFormFilesToTempFiles(r, "files")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var filesParam []*os.File
|
||||
{
|
||||
param, err := ReadFormFilesToTempFiles(r, "files")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
filesParam = param
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ func (s *PetAPIService) FindPetsByStatus(ctx context.Context, status []string, i
|
||||
|
||||
// FindPetsByTags - Finds Pets by tags
|
||||
// Deprecated
|
||||
func (s *PetAPIService) FindPetsByTags(ctx context.Context, tags []string, bornAfter time.Time, bornBefore time.Time) (ImplResponse, error) {
|
||||
func (s *PetAPIService) FindPetsByTags(ctx context.Context, tags []string, bornAfter time.Time, bornBefore time.Time, colour Colour) (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.
|
||||
|
||||
@@ -152,6 +152,17 @@ func (s *PetAPIService) GetPetsUsingBooleanQueryParameters(ctx context.Context,
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("GetPetsUsingBooleanQueryParameters method not implemented")
|
||||
}
|
||||
|
||||
// SearchPet - Search Pets by filters
|
||||
func (s *PetAPIService) SearchPet(ctx context.Context, age *int64, price *float32, bornAfter *time.Time, old *bool) (ImplResponse, error) {
|
||||
// TODO - update SearchPet 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 Response(http.StatusNotImplemented, nil), errors.New("SearchPet method not implemented")
|
||||
}
|
||||
|
||||
// UpdatePet - Update an existing pet
|
||||
func (s *PetAPIService) UpdatePet(ctx context.Context, pet Pet) (ImplResponse, error) {
|
||||
// TODO - update UpdatePet with the required logic for this service method.
|
||||
|
||||
@@ -179,13 +179,19 @@ func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) {
|
||||
c.errorHandler(w, r, &RequiredError{"username"}, nil)
|
||||
return
|
||||
}
|
||||
booleanTestParam, err := parseBoolParameter(
|
||||
query.Get("boolean_test"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var booleanTestParam bool
|
||||
if query.Has("boolean_test") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("boolean_test"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
booleanTestParam = param
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.DeleteUser(r.Context(), usernameParam, booleanTestParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
@@ -218,16 +224,38 @@ func (c *UserAPIController) GetUserByName(w http.ResponseWriter, r *http.Request
|
||||
// LoginUser - Logs user into the system
|
||||
func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
||||
query := r.URL.Query()
|
||||
usernameParam := query.Get("username")
|
||||
passwordParam := query.Get("password")
|
||||
booleanTestParam, err := parseBoolParameter(
|
||||
query.Get("boolean_test"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var usernameParam string
|
||||
if query.Has("username") {
|
||||
param := query.Get("username")
|
||||
|
||||
usernameParam = param
|
||||
} else {
|
||||
c.errorHandler(w, r, &RequiredError{Field: "username"}, nil)
|
||||
return
|
||||
}
|
||||
var passwordParam string
|
||||
if query.Has("password") {
|
||||
param := query.Get("password")
|
||||
|
||||
passwordParam = param
|
||||
} else {
|
||||
c.errorHandler(w, r, &RequiredError{Field: "password"}, nil)
|
||||
return
|
||||
}
|
||||
var booleanTestParam bool
|
||||
if query.Has("boolean_test") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("boolean_test"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
booleanTestParam = param
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.LoginUser(r.Context(), usernameParam, passwordParam, booleanTestParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
if err != nil {
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* OpenAPI Petstore
|
||||
*
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* API version: 1.0.0
|
||||
* Generated by: OpenAPI Generator (https://openapi-generator.tech)
|
||||
*/
|
||||
|
||||
package petstoreserver
|
||||
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
|
||||
|
||||
type Colour string
|
||||
|
||||
// List of Colour
|
||||
const (
|
||||
BLUE Colour = "Blue"
|
||||
WHITE Colour = "White"
|
||||
)
|
||||
|
||||
// AllowedColourEnumValues is all the allowed values of Colour enum
|
||||
var AllowedColourEnumValues = []Colour{
|
||||
"Blue",
|
||||
"White",
|
||||
}
|
||||
|
||||
// validColourEnumValue provides a map of Colours for fast verification of use input
|
||||
var validColourEnumValues = map[Colour]struct{}{
|
||||
"Blue": {},
|
||||
"White": {},
|
||||
}
|
||||
|
||||
// IsValid return true if the value is valid for the enum, false otherwise
|
||||
func (v Colour) IsValid() bool {
|
||||
_, ok := validColourEnumValues[v]
|
||||
return ok
|
||||
}
|
||||
|
||||
// NewColourFromValue returns a pointer to a valid Colour
|
||||
// for the value passed as argument, or an error if the value passed is not allowed by the enum
|
||||
func NewColourFromValue(v string) (Colour, error) {
|
||||
ev := Colour(v)
|
||||
if ev.IsValid() {
|
||||
return ev, nil
|
||||
} else {
|
||||
return "", fmt.Errorf("invalid value '%v' for Colour: valid values are %v", v, AllowedColourEnumValues)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// AssertColourRequired checks if the required fields are not zero-ed
|
||||
func AssertColourRequired(obj Colour) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// AssertColourConstraints checks if the values respects the defined constraints
|
||||
func AssertColourConstraints(obj Colour) error {
|
||||
return nil
|
||||
}
|
||||
@@ -16,6 +16,7 @@ go/logger.go
|
||||
go/model_an_object.go
|
||||
go/model_api_response.go
|
||||
go/model_category.go
|
||||
go/model_colour.go
|
||||
go/model_gender.go
|
||||
go/model_order.go
|
||||
go/model_order_info.go
|
||||
|
||||
@@ -143,6 +143,61 @@ paths:
|
||||
summary: Finds Pets by status
|
||||
tags:
|
||||
- pet
|
||||
/pet/searchPetWithManyFilters:
|
||||
get:
|
||||
description: Search endpoint
|
||||
operationId: searchPet
|
||||
parameters:
|
||||
- description: age of the pet
|
||||
explode: true
|
||||
in: query
|
||||
name: age
|
||||
required: false
|
||||
schema:
|
||||
format: int64
|
||||
nullable: true
|
||||
type: integer
|
||||
style: form
|
||||
- description: Price of the pet
|
||||
explode: true
|
||||
in: query
|
||||
name: price
|
||||
required: false
|
||||
schema:
|
||||
nullable: true
|
||||
type: number
|
||||
style: form
|
||||
- description: Find pets born after this date
|
||||
explode: false
|
||||
in: query
|
||||
name: bornAfter
|
||||
required: false
|
||||
schema:
|
||||
format: date-time
|
||||
nullable: true
|
||||
type: string
|
||||
style: form
|
||||
- description: Is the pet classified as old
|
||||
explode: true
|
||||
in: query
|
||||
name: old
|
||||
required: false
|
||||
schema:
|
||||
nullable: true
|
||||
type: boolean
|
||||
style: form
|
||||
responses:
|
||||
"200":
|
||||
content:
|
||||
application/xml:
|
||||
schema:
|
||||
items:
|
||||
$ref: '#/components/schemas/Pet'
|
||||
type: array
|
||||
description: successful operation
|
||||
summary: Search Pets by filters
|
||||
tags:
|
||||
- pet
|
||||
/pet/findByTags:
|
||||
get:
|
||||
deprecated: true
|
||||
@@ -178,6 +233,13 @@ paths:
|
||||
format: date-time
|
||||
type: string
|
||||
style: form
|
||||
- explode: true
|
||||
in: query
|
||||
name: colour
|
||||
required: false
|
||||
schema:
|
||||
$ref: '#/components/schemas/Colour'
|
||||
style: form
|
||||
responses:
|
||||
"200":
|
||||
content:
|
||||
@@ -1210,6 +1272,12 @@ components:
|
||||
- male
|
||||
- female
|
||||
type: string
|
||||
Colour:
|
||||
enum:
|
||||
- Blue
|
||||
- White
|
||||
nullable: true
|
||||
type: string
|
||||
ApiResponse:
|
||||
description: Describes the result of uploading an image resource
|
||||
example:
|
||||
|
||||
@@ -32,6 +32,7 @@ type PetAPIRouter interface {
|
||||
GetPetImageById(http.ResponseWriter, *http.Request)
|
||||
GetPetsByTime(http.ResponseWriter, *http.Request)
|
||||
GetPetsUsingBooleanQueryParameters(http.ResponseWriter, *http.Request)
|
||||
SearchPet(http.ResponseWriter, *http.Request)
|
||||
UpdatePet(http.ResponseWriter, *http.Request)
|
||||
UpdatePetWithForm(http.ResponseWriter, *http.Request)
|
||||
UploadFile(http.ResponseWriter, *http.Request)
|
||||
@@ -71,11 +72,12 @@ type PetAPIServicer interface {
|
||||
FilterPetsByCategory(context.Context, Gender, Species, []Species) (ImplResponse, error)
|
||||
FindPetsByStatus(context.Context, []string, string, string) (ImplResponse, error)
|
||||
// Deprecated
|
||||
FindPetsByTags(context.Context, []string, time.Time, time.Time) (ImplResponse, error)
|
||||
FindPetsByTags(context.Context, []string, time.Time, time.Time, Colour) (ImplResponse, error)
|
||||
GetPetById(context.Context, int64) (ImplResponse, error)
|
||||
GetPetImageById(context.Context, int64) (ImplResponse, error)
|
||||
GetPetsByTime(context.Context, time.Time) (ImplResponse, error)
|
||||
GetPetsUsingBooleanQueryParameters(context.Context, bool, bool, bool) (ImplResponse, error)
|
||||
SearchPet(context.Context, *int64, *float32, *time.Time, *bool) (ImplResponse, error)
|
||||
UpdatePet(context.Context, Pet) (ImplResponse, error)
|
||||
UpdatePetWithForm(context.Context, int64, string, string) (ImplResponse, error)
|
||||
UploadFile(context.Context, int64, string, []string, *os.File) (ImplResponse, error)
|
||||
|
||||
@@ -13,6 +13,8 @@ import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
"os"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
)
|
||||
@@ -95,6 +97,11 @@ func (c *PetAPIController) Routes() Routes {
|
||||
"/v2/pets/boolean/parsing",
|
||||
c.GetPetsUsingBooleanQueryParameters,
|
||||
},
|
||||
"SearchPet": Route{
|
||||
strings.ToUpper("Get"),
|
||||
"/v2/pet/searchPetWithManyFilters",
|
||||
c.SearchPet,
|
||||
},
|
||||
"UpdatePet": Route{
|
||||
strings.ToUpper("Put"),
|
||||
"/v2/pet",
|
||||
@@ -174,13 +181,13 @@ func (c *PetAPIController) FilterPetsByCategory(w http.ResponseWriter, r *http.R
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
if !query.Has("species"){
|
||||
c.errorHandler(w, r, &RequiredError{"species"}, nil)
|
||||
return
|
||||
}
|
||||
speciesParam, err := NewSpeciesFromValue(query.Get("species"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var speciesParam Species
|
||||
if query.Has("species") {
|
||||
param := Species(query.Get("species"))
|
||||
|
||||
speciesParam = param
|
||||
} else {
|
||||
c.errorHandler(w, r, &RequiredError{Field: "species"}, nil)
|
||||
return
|
||||
}
|
||||
var notSpeciesParam []Species
|
||||
@@ -220,7 +227,10 @@ func (c *PetAPIController) FindPetsByStatus(w http.ResponseWriter, r *http.Reque
|
||||
}
|
||||
var inlineEnumParam string
|
||||
if query.Has("inlineEnum") {
|
||||
inlineEnumParam = query.Get("inlineEnum")
|
||||
param := query.Get("inlineEnum")
|
||||
|
||||
inlineEnumParam = param
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.FindPetsByStatus(r.Context(), statusParam, inlineEnumPathParam, inlineEnumParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
@@ -240,21 +250,38 @@ func (c *PetAPIController) FindPetsByTags(w http.ResponseWriter, r *http.Request
|
||||
if query.Has("tags") {
|
||||
tagsParam = strings.Split(query.Get("tags"), ",")
|
||||
}
|
||||
if !query.Has("bornAfter"){
|
||||
var bornAfterParam time.Time
|
||||
if query.Has("bornAfter"){
|
||||
param, err := parseTime(query.Get("bornAfter"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
bornAfterParam = param
|
||||
} else {
|
||||
c.errorHandler(w, r, &RequiredError{"bornAfter"}, nil)
|
||||
return
|
||||
}
|
||||
bornAfterParam, err := parseTime(query.Get("bornAfter"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
bornBeforeParam, err := parseTime(query.Get("bornBefore"))
|
||||
if err != nil {
|
||||
var bornBeforeParam time.Time
|
||||
if query.Has("bornBefore"){
|
||||
param, err := parseTime(query.Get("bornBefore"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
bornBeforeParam = param
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.FindPetsByTags(r.Context(), tagsParam, bornAfterParam, bornBeforeParam)
|
||||
var colourParam Colour
|
||||
if query.Has("colour") {
|
||||
param := Colour(query.Get("colour"))
|
||||
|
||||
colourParam = param
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.FindPetsByTags(r.Context(), tagsParam, bornAfterParam, bornBeforeParam, colourParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, err, &result)
|
||||
@@ -324,29 +351,51 @@ func (c *PetAPIController) GetPetsByTime(w http.ResponseWriter, r *http.Request)
|
||||
// GetPetsUsingBooleanQueryParameters - Get the pets by only using boolean query parameters
|
||||
func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWriter, r *http.Request) {
|
||||
query := r.URL.Query()
|
||||
exprParam, err := parseBoolParameter(
|
||||
query.Get("expr"),
|
||||
WithRequire[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var exprParam bool
|
||||
if query.Has("expr") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("expr"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
exprParam = param
|
||||
} else {
|
||||
c.errorHandler(w, r, &RequiredError{Field: "expr"}, nil)
|
||||
return
|
||||
}
|
||||
groupingParam, err := parseBoolParameter(
|
||||
query.Get("grouping"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var groupingParam bool
|
||||
if query.Has("grouping") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("grouping"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
groupingParam = param
|
||||
} else {
|
||||
}
|
||||
inactiveParam, err := parseBoolParameter(
|
||||
query.Get("inactive"),
|
||||
WithDefaultOrParse[bool](false, parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var inactiveParam bool
|
||||
if query.Has("inactive") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("inactive"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
inactiveParam = param
|
||||
} else {
|
||||
var param bool = false
|
||||
inactiveParam = param
|
||||
}
|
||||
result, err := c.service.GetPetsUsingBooleanQueryParameters(r.Context(), exprParam, groupingParam, inactiveParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
@@ -358,6 +407,72 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
||||
EncodeJSONResponse(result.Body, &result.Code, result.Headers, w)
|
||||
}
|
||||
|
||||
// SearchPet - Search Pets by filters
|
||||
func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
||||
query := r.URL.Query()
|
||||
var ageParam *int64
|
||||
if query.Has("age") {
|
||||
param, err := parseNumericParameter[int64](
|
||||
query.Get("age"),
|
||||
WithParse[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
ageParam = ¶m
|
||||
} else {
|
||||
}
|
||||
var priceParam *float32
|
||||
if query.Has("price") {
|
||||
param, err := parseNumericParameter[float32](
|
||||
query.Get("price"),
|
||||
WithParse[float32](parseFloat32),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
priceParam = ¶m
|
||||
} else {
|
||||
}
|
||||
var bornAfterParam *time.Time
|
||||
if query.Has("bornAfter"){
|
||||
param, err := parseTime(query.Get("bornAfter"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
bornAfterParam = ¶m
|
||||
} else {
|
||||
}
|
||||
var oldParam *bool
|
||||
if query.Has("old") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("old"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
oldParam = ¶m
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.SearchPet(r.Context(), ageParam, priceParam, bornAfterParam, oldParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, err, &result)
|
||||
return
|
||||
}
|
||||
// If no error, encode the body and the result code
|
||||
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{}
|
||||
@@ -435,10 +550,15 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
|
||||
extraOptionalMetadataParam := strings.Split(r.FormValue("extraOptionalMetadata"), ",")
|
||||
fileParam, err := ReadFormFileToTempFile(r, "file")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var fileParam *os.File
|
||||
{
|
||||
param, err := ReadFormFileToTempFile(r, "file")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
fileParam = param
|
||||
}
|
||||
|
||||
|
||||
@@ -469,10 +589,15 @@ func (c *PetAPIController) UploadFileArrayOfFiles(w http.ResponseWriter, r *http
|
||||
|
||||
|
||||
additionalMetadataParam := r.FormValue("additionalMetadata")
|
||||
filesParam, err := ReadFormFilesToTempFiles(r, "files")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var filesParam []*os.File
|
||||
{
|
||||
param, err := ReadFormFilesToTempFiles(r, "files")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
filesParam = param
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ func (s *PetAPIService) FindPetsByStatus(ctx context.Context, status []string, i
|
||||
|
||||
// FindPetsByTags - Finds Pets by tags
|
||||
// Deprecated
|
||||
func (s *PetAPIService) FindPetsByTags(ctx context.Context, tags []string, bornAfter time.Time, bornBefore time.Time) (ImplResponse, error) {
|
||||
func (s *PetAPIService) FindPetsByTags(ctx context.Context, tags []string, bornAfter time.Time, bornBefore time.Time, colour Colour) (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.
|
||||
|
||||
@@ -152,6 +152,17 @@ func (s *PetAPIService) GetPetsUsingBooleanQueryParameters(ctx context.Context,
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("GetPetsUsingBooleanQueryParameters method not implemented")
|
||||
}
|
||||
|
||||
// SearchPet - Search Pets by filters
|
||||
func (s *PetAPIService) SearchPet(ctx context.Context, age *int64, price *float32, bornAfter *time.Time, old *bool) (ImplResponse, error) {
|
||||
// TODO - update SearchPet 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 Response(http.StatusNotImplemented, nil), errors.New("SearchPet method not implemented")
|
||||
}
|
||||
|
||||
// UpdatePet - Update an existing pet
|
||||
func (s *PetAPIService) UpdatePet(ctx context.Context, pet Pet) (ImplResponse, error) {
|
||||
// TODO - update UpdatePet with the required logic for this service method.
|
||||
|
||||
@@ -178,13 +178,19 @@ func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) {
|
||||
c.errorHandler(w, r, &RequiredError{"username"}, nil)
|
||||
return
|
||||
}
|
||||
booleanTestParam, err := parseBoolParameter(
|
||||
query.Get("boolean_test"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
var booleanTestParam bool
|
||||
if query.Has("boolean_test") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("boolean_test"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
booleanTestParam = param
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.DeleteUser(r.Context(), usernameParam, booleanTestParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
@@ -216,16 +222,38 @@ func (c *UserAPIController) GetUserByName(w http.ResponseWriter, r *http.Request
|
||||
// LoginUser - Logs user into the system
|
||||
func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
||||
query := r.URL.Query()
|
||||
usernameParam := query.Get("username")
|
||||
passwordParam := query.Get("password")
|
||||
booleanTestParam, err := parseBoolParameter(
|
||||
query.Get("boolean_test"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
var usernameParam string
|
||||
if query.Has("username") {
|
||||
param := query.Get("username")
|
||||
|
||||
usernameParam = param
|
||||
} else {
|
||||
c.errorHandler(w, r, &RequiredError{Field: "username"}, nil)
|
||||
return
|
||||
}
|
||||
var passwordParam string
|
||||
if query.Has("password") {
|
||||
param := query.Get("password")
|
||||
|
||||
passwordParam = param
|
||||
} else {
|
||||
c.errorHandler(w, r, &RequiredError{Field: "password"}, nil)
|
||||
return
|
||||
}
|
||||
var booleanTestParam bool
|
||||
if query.Has("boolean_test") {
|
||||
param, err := parseBoolParameter(
|
||||
query.Get("boolean_test"),
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
booleanTestParam = param
|
||||
} else {
|
||||
}
|
||||
result, err := c.service.LoginUser(r.Context(), usernameParam, passwordParam, booleanTestParam)
|
||||
// If an error occurred, encode the error with the status code
|
||||
if err != nil {
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* OpenAPI Petstore
|
||||
*
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* API version: 1.0.0
|
||||
* Generated by: OpenAPI Generator (https://openapi-generator.tech)
|
||||
*/
|
||||
|
||||
package petstoreserver
|
||||
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
|
||||
|
||||
type Colour string
|
||||
|
||||
// List of Colour
|
||||
const (
|
||||
BLUE Colour = "Blue"
|
||||
WHITE Colour = "White"
|
||||
)
|
||||
|
||||
// AllowedColourEnumValues is all the allowed values of Colour enum
|
||||
var AllowedColourEnumValues = []Colour{
|
||||
"Blue",
|
||||
"White",
|
||||
}
|
||||
|
||||
// validColourEnumValue provides a map of Colours for fast verification of use input
|
||||
var validColourEnumValues = map[Colour]struct{}{
|
||||
"Blue": {},
|
||||
"White": {},
|
||||
}
|
||||
|
||||
// IsValid return true if the value is valid for the enum, false otherwise
|
||||
func (v Colour) IsValid() bool {
|
||||
_, ok := validColourEnumValues[v]
|
||||
return ok
|
||||
}
|
||||
|
||||
// NewColourFromValue returns a pointer to a valid Colour
|
||||
// for the value passed as argument, or an error if the value passed is not allowed by the enum
|
||||
func NewColourFromValue(v string) (Colour, error) {
|
||||
ev := Colour(v)
|
||||
if ev.IsValid() {
|
||||
return ev, nil
|
||||
} else {
|
||||
return "", fmt.Errorf("invalid value '%v' for Colour: valid values are %v", v, AllowedColourEnumValues)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// AssertColourRequired checks if the required fields are not zero-ed
|
||||
func AssertColourRequired(obj Colour) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// AssertColourConstraints checks if the values respects the defined constraints
|
||||
func AssertColourConstraints(obj Colour) error {
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user