forked from loafle/openapi-generator-original
Remove unused go-server-required (#19505)
This commit is contained in:
parent
abd19dd253
commit
4ed8c70a92
@ -1,23 +0,0 @@
|
||||
# OpenAPI Generator Ignore
|
||||
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
|
||||
|
||||
# Use this file to prevent files from being overwritten by the generator.
|
||||
# The patterns follow closely to .gitignore or .dockerignore.
|
||||
|
||||
# As an example, the C# client generator defines ApiClient.cs.
|
||||
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
|
||||
#ApiClient.cs
|
||||
|
||||
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
|
||||
#foo/*/qux
|
||||
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
|
||||
|
||||
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
|
||||
#foo/**/qux
|
||||
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
|
||||
|
||||
# You can also negate patterns with an exclamation (!).
|
||||
# For example, you can ignore all files in a docs folder with the file extension .md:
|
||||
#docs/*.md
|
||||
# Then explicitly reverse the ignore rule for a single file:
|
||||
#!docs/README.md
|
@ -1,26 +0,0 @@
|
||||
Dockerfile
|
||||
README.md
|
||||
api/openapi.yaml
|
||||
go.mod
|
||||
go/api.go
|
||||
go/api_pet.go
|
||||
go/api_pet_service.go
|
||||
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_an_object.go
|
||||
go/model_api_response.go
|
||||
go/model_category.go
|
||||
go/model_order.go
|
||||
go/model_order_info.go
|
||||
go/model_pet.go
|
||||
go/model_special_info.go
|
||||
go/model_tag.go
|
||||
go/model_user.go
|
||||
go/routers.go
|
||||
main.go
|
@ -1 +0,0 @@
|
||||
7.0.0-SNAPSHOT
|
@ -1,15 +0,0 @@
|
||||
FROM golang:1.19 AS build
|
||||
WORKDIR /go/src
|
||||
COPY go ./go
|
||||
COPY main.go .
|
||||
COPY go.sum .
|
||||
COPY go.mod .
|
||||
|
||||
ENV CGO_ENABLED=0
|
||||
|
||||
RUN go build -o petstoreserver .
|
||||
|
||||
FROM scratch AS runtime
|
||||
COPY --from=build /go/src/petstoreserver ./
|
||||
EXPOSE 8080/tcp
|
||||
ENTRYPOINT ["./petstoreserver"]
|
@ -1,33 +0,0 @@
|
||||
# Go API Server for petstoreserver
|
||||
|
||||
This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
|
||||
## Overview
|
||||
This server was generated by the [openapi-generator]
|
||||
(https://openapi-generator.tech) project.
|
||||
By using the [OpenAPI-Spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate a server stub.
|
||||
-
|
||||
|
||||
To see how to make this your own, look here:
|
||||
|
||||
[README](https://openapi-generator.tech)
|
||||
|
||||
- API version: 1.0.0
|
||||
|
||||
|
||||
### Running the server
|
||||
To run the server, follow these simple steps:
|
||||
|
||||
```
|
||||
go run main.go
|
||||
```
|
||||
|
||||
To run the server in a docker container
|
||||
```
|
||||
docker build --network=host -t petstoreserver .
|
||||
```
|
||||
|
||||
Once image is built use
|
||||
```
|
||||
docker run --rm -it petstoreserver
|
||||
```
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +0,0 @@
|
||||
module github.com/GIT_USER_ID/GIT_REPO_ID
|
||||
|
||||
go 1.18
|
||||
|
||||
require github.com/go-chi/chi/v5 v5.0.8
|
@ -1,100 +0,0 @@
|
||||
/*
|
||||
* 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 (
|
||||
"context"
|
||||
"net/http"
|
||||
"os"
|
||||
)
|
||||
|
||||
|
||||
|
||||
// PetAPIRouter defines the required methods for binding the api requests to a responses for the PetAPI
|
||||
// The PetAPIRouter implementation should parse necessary information from the http request,
|
||||
// pass the data to a PetAPIServicer to perform the required actions, then write the service results to the http response.
|
||||
type PetAPIRouter interface {
|
||||
AddPet(http.ResponseWriter, *http.Request)
|
||||
DeletePet(http.ResponseWriter, *http.Request)
|
||||
FindPetsByStatus(http.ResponseWriter, *http.Request)
|
||||
// Deprecated
|
||||
FindPetsByTags(http.ResponseWriter, *http.Request)
|
||||
GetPetById(http.ResponseWriter, *http.Request)
|
||||
UpdatePet(http.ResponseWriter, *http.Request)
|
||||
UpdatePetWithForm(http.ResponseWriter, *http.Request)
|
||||
UploadFile(http.ResponseWriter, *http.Request)
|
||||
}
|
||||
// StoreAPIRouter defines the required methods for binding the api requests to a responses for the StoreAPI
|
||||
// The StoreAPIRouter implementation should parse necessary information from the http request,
|
||||
// pass the data to a StoreAPIServicer to perform the required actions, then write the service results to the http response.
|
||||
type StoreAPIRouter interface {
|
||||
DeleteOrder(http.ResponseWriter, *http.Request)
|
||||
GetInventory(http.ResponseWriter, *http.Request)
|
||||
GetOrderById(http.ResponseWriter, *http.Request)
|
||||
PlaceOrder(http.ResponseWriter, *http.Request)
|
||||
}
|
||||
// UserAPIRouter defines the required methods for binding the api requests to a responses for the UserAPI
|
||||
// The UserAPIRouter implementation should parse necessary information from the http request,
|
||||
// pass the data to a UserAPIServicer to perform the required actions, then write the service results to the http response.
|
||||
type UserAPIRouter interface {
|
||||
CreateUser(http.ResponseWriter, *http.Request)
|
||||
CreateUsersWithArrayInput(http.ResponseWriter, *http.Request)
|
||||
CreateUsersWithListInput(http.ResponseWriter, *http.Request)
|
||||
DeleteUser(http.ResponseWriter, *http.Request)
|
||||
GetUserByName(http.ResponseWriter, *http.Request)
|
||||
LoginUser(http.ResponseWriter, *http.Request)
|
||||
LogoutUser(http.ResponseWriter, *http.Request)
|
||||
UpdateUser(http.ResponseWriter, *http.Request)
|
||||
}
|
||||
|
||||
|
||||
// PetAPIServicer defines the api actions for the PetAPI service
|
||||
// This interface intended to stay up to date with the openapi yaml used to generate it,
|
||||
// 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)
|
||||
// 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)
|
||||
}
|
||||
|
||||
|
||||
// StoreAPIServicer defines the api actions for the StoreAPI service
|
||||
// This interface intended to stay up to date with the openapi yaml used to generate it,
|
||||
// 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)
|
||||
}
|
||||
|
||||
|
||||
// UserAPIServicer defines the api actions for the UserAPI service
|
||||
// This interface intended to stay up to date with the openapi yaml used to generate it,
|
||||
// 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)
|
||||
}
|
@ -1,283 +0,0 @@
|
||||
/*
|
||||
* 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 (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
)
|
||||
|
||||
// PetAPIController binds http requests to an api service and writes the service results to the http response
|
||||
type PetAPIController struct {
|
||||
service PetAPIServicer
|
||||
errorHandler ErrorHandler
|
||||
}
|
||||
|
||||
// PetAPIOption for how the controller is set up.
|
||||
type PetAPIOption func(*PetAPIController)
|
||||
|
||||
// WithPetAPIErrorHandler inject ErrorHandler into controller
|
||||
func WithPetAPIErrorHandler(h ErrorHandler) PetAPIOption {
|
||||
return func(c *PetAPIController) {
|
||||
c.errorHandler = h
|
||||
}
|
||||
}
|
||||
|
||||
// NewPetAPIController creates a default api controller
|
||||
func NewPetAPIController(s PetAPIServicer, opts ...PetAPIOption) Router {
|
||||
controller := &PetAPIController{
|
||||
service: s,
|
||||
errorHandler: DefaultErrorHandler,
|
||||
}
|
||||
|
||||
for _, opt := range opts {
|
||||
opt(controller)
|
||||
}
|
||||
|
||||
return controller
|
||||
}
|
||||
|
||||
// Routes returns all the api routes for the PetAPIController
|
||||
func (c *PetAPIController) Routes() Routes {
|
||||
return Routes{
|
||||
"AddPet": Route{
|
||||
strings.ToUpper("Post"),
|
||||
"/v2/pet",
|
||||
c.AddPet,
|
||||
},
|
||||
"DeletePet": Route{
|
||||
strings.ToUpper("Delete"),
|
||||
"/v2/pet/{petId}",
|
||||
c.DeletePet,
|
||||
},
|
||||
"FindPetsByStatus": Route{
|
||||
strings.ToUpper("Get"),
|
||||
"/v2/pet/findByStatus",
|
||||
c.FindPetsByStatus,
|
||||
},
|
||||
"FindPetsByTags": Route{
|
||||
strings.ToUpper("Get"),
|
||||
"/v2/pet/findByTags",
|
||||
c.FindPetsByTags,
|
||||
},
|
||||
"GetPetById": Route{
|
||||
strings.ToUpper("Get"),
|
||||
"/v2/pet/{petId}",
|
||||
c.GetPetById,
|
||||
},
|
||||
"UpdatePet": Route{
|
||||
strings.ToUpper("Put"),
|
||||
"/v2/pet",
|
||||
c.UpdatePet,
|
||||
},
|
||||
"UpdatePetWithForm": Route{
|
||||
strings.ToUpper("Post"),
|
||||
"/v2/pet/{petId}",
|
||||
c.UpdatePetWithForm,
|
||||
},
|
||||
"UploadFile": Route{
|
||||
strings.ToUpper("Post"),
|
||||
"/v2/pet/{petId}/uploadImage",
|
||||
c.UploadFile,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// 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.DisallowUnknownFields()
|
||||
if err := d.Decode(&petParam); err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
if err := AssertPetRequired(petParam); err != nil {
|
||||
c.errorHandler(w, r, err, nil)
|
||||
return
|
||||
}
|
||||
if err := AssertPetConstraints(petParam); err != nil {
|
||||
c.errorHandler(w, r, err, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.AddPet(r.Context(), petParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// DeletePet - Deletes a pet
|
||||
func (c *PetAPIController) DeletePet(w http.ResponseWriter, r *http.Request) {
|
||||
petIdParam, err := parseNumericParameter[int64](
|
||||
chi.URLParam(r, "petId"),
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
apiKeyParam := r.Header.Get("api_key")
|
||||
result, err := c.service.DeletePet(r.Context(), petIdParam, apiKeyParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// FindPetsByStatus - Finds Pets by status
|
||||
func (c *PetAPIController) FindPetsByStatus(w http.ResponseWriter, r *http.Request) {
|
||||
query := r.URL.Query()
|
||||
statusParam := strings.Split(query.Get("status"), ",")
|
||||
result, err := c.service.FindPetsByStatus(r.Context(), statusParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// FindPetsByTags - Finds Pets by tags
|
||||
// Deprecated
|
||||
func (c *PetAPIController) FindPetsByTags(w http.ResponseWriter, r *http.Request) {
|
||||
query := r.URL.Query()
|
||||
tagsParam := strings.Split(query.Get("tags"), ",")
|
||||
result, err := c.service.FindPetsByTags(r.Context(), tagsParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// GetPetById - Find pet by ID
|
||||
func (c *PetAPIController) GetPetById(w http.ResponseWriter, r *http.Request) {
|
||||
petIdParam, err := parseNumericParameter[int64](
|
||||
chi.URLParam(r, "petId"),
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.GetPetById(r.Context(), petIdParam)
|
||||
// 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{}
|
||||
d := json.NewDecoder(r.Body)
|
||||
d.DisallowUnknownFields()
|
||||
if err := d.Decode(&petParam); err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
if err := AssertPetRequired(petParam); err != nil {
|
||||
c.errorHandler(w, r, err, nil)
|
||||
return
|
||||
}
|
||||
if err := AssertPetConstraints(petParam); err != nil {
|
||||
c.errorHandler(w, r, err, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.UpdatePet(r.Context(), petParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// 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)
|
||||
return
|
||||
}
|
||||
petIdParam, err := parseNumericParameter[int64](
|
||||
chi.URLParam(r, "petId"),
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
nameParam := r.FormValue("name")
|
||||
|
||||
|
||||
statusParam := r.FormValue("status")
|
||||
result, err := c.service.UpdatePetWithForm(r.Context(), petIdParam, nameParam, statusParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// 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)
|
||||
return
|
||||
}
|
||||
petIdParam, err := parseNumericParameter[int64](
|
||||
chi.URLParam(r, "petId"),
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
additionalMetadataParam := r.FormValue("additionalMetadata")
|
||||
|
||||
fileParam, err := ReadFormFileToTempFile(r, "file")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
result, err := c.service.UploadFile(r.Context(), petIdParam, additionalMetadataParam, fileParam)
|
||||
// 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)
|
||||
}
|
@ -1,141 +0,0 @@
|
||||
/*
|
||||
* 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 (
|
||||
"context"
|
||||
"net/http"
|
||||
"errors"
|
||||
"os"
|
||||
)
|
||||
|
||||
// PetAPIService is a service that implements the logic for the PetAPIServicer
|
||||
// This service should implement the business logic for every endpoint for the PetAPI API.
|
||||
// Include any external packages or services that will be required by this service.
|
||||
type PetAPIService struct {
|
||||
}
|
||||
|
||||
// NewPetAPIService creates a default api service
|
||||
func NewPetAPIService() PetAPIServicer {
|
||||
return &PetAPIService{}
|
||||
}
|
||||
|
||||
// AddPet - Add a new pet to the store
|
||||
func (s *PetAPIService) AddPet(ctx context.Context, pet Pet) (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
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(405, {}) or use other options such as http.Ok ...
|
||||
// return Response(405, nil),nil
|
||||
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("AddPet method not implemented")
|
||||
}
|
||||
|
||||
// DeletePet - Deletes a pet
|
||||
func (s *PetAPIService) DeletePet(ctx context.Context, petId int64, apiKey string) (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 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) {
|
||||
// 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
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
|
||||
// return Response(400, nil),nil
|
||||
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("FindPetsByStatus method not implemented")
|
||||
}
|
||||
|
||||
// FindPetsByTags - Finds Pets by tags
|
||||
// Deprecated
|
||||
func (s *PetAPIService) FindPetsByTags(ctx context.Context, tags []string) (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
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
|
||||
// return Response(400, nil),nil
|
||||
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("FindPetsByTags method not implemented")
|
||||
}
|
||||
|
||||
// GetPetById - Find pet by ID
|
||||
func (s *PetAPIService) GetPetById(ctx context.Context, petId int64) (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
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
|
||||
// return Response(400, nil),nil
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
|
||||
// return Response(404, nil),nil
|
||||
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("GetPetById method not implemented")
|
||||
}
|
||||
|
||||
// UpdatePet - Update an existing pet
|
||||
func (s *PetAPIService) UpdatePet(ctx context.Context, pet Pet) (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
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
|
||||
// return Response(400, nil),nil
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
|
||||
// return Response(404, nil),nil
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(405, {}) or use other options such as http.Ok ...
|
||||
// return Response(405, nil),nil
|
||||
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("UpdatePet method not implemented")
|
||||
}
|
||||
|
||||
// UpdatePetWithForm - Updates a pet in the store with form data
|
||||
func (s *PetAPIService) UpdatePetWithForm(ctx context.Context, petId int64, name string, status string) (ImplResponse, error) {
|
||||
// TODO - update UpdatePetWithForm with the required logic for this service method.
|
||||
// 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 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) {
|
||||
// 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 Response(http.StatusNotImplemented, nil), errors.New("UploadFile method not implemented")
|
||||
}
|
@ -1,148 +0,0 @@
|
||||
/*
|
||||
* 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 (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
)
|
||||
|
||||
// StoreAPIController binds http requests to an api service and writes the service results to the http response
|
||||
type StoreAPIController struct {
|
||||
service StoreAPIServicer
|
||||
errorHandler ErrorHandler
|
||||
}
|
||||
|
||||
// StoreAPIOption for how the controller is set up.
|
||||
type StoreAPIOption func(*StoreAPIController)
|
||||
|
||||
// WithStoreAPIErrorHandler inject ErrorHandler into controller
|
||||
func WithStoreAPIErrorHandler(h ErrorHandler) StoreAPIOption {
|
||||
return func(c *StoreAPIController) {
|
||||
c.errorHandler = h
|
||||
}
|
||||
}
|
||||
|
||||
// NewStoreAPIController creates a default api controller
|
||||
func NewStoreAPIController(s StoreAPIServicer, opts ...StoreAPIOption) Router {
|
||||
controller := &StoreAPIController{
|
||||
service: s,
|
||||
errorHandler: DefaultErrorHandler,
|
||||
}
|
||||
|
||||
for _, opt := range opts {
|
||||
opt(controller)
|
||||
}
|
||||
|
||||
return controller
|
||||
}
|
||||
|
||||
// Routes returns all the api routes for the StoreAPIController
|
||||
func (c *StoreAPIController) Routes() Routes {
|
||||
return Routes{
|
||||
"DeleteOrder": Route{
|
||||
strings.ToUpper("Delete"),
|
||||
"/v2/store/order/{orderId}",
|
||||
c.DeleteOrder,
|
||||
},
|
||||
"GetInventory": Route{
|
||||
strings.ToUpper("Get"),
|
||||
"/v2/store/inventory",
|
||||
c.GetInventory,
|
||||
},
|
||||
"GetOrderById": Route{
|
||||
strings.ToUpper("Get"),
|
||||
"/v2/store/order/{orderId}",
|
||||
c.GetOrderById,
|
||||
},
|
||||
"PlaceOrder": Route{
|
||||
strings.ToUpper("Post"),
|
||||
"/v2/store/order",
|
||||
c.PlaceOrder,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// DeleteOrder - Delete purchase order by ID
|
||||
func (c *StoreAPIController) DeleteOrder(w http.ResponseWriter, r *http.Request) {
|
||||
orderIdParam := chi.URLParam(r, "orderId")
|
||||
result, err := c.service.DeleteOrder(r.Context(), orderIdParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// GetInventory - Returns pet inventories by status
|
||||
func (c *StoreAPIController) GetInventory(w http.ResponseWriter, r *http.Request) {
|
||||
result, err := c.service.GetInventory(r.Context())
|
||||
// 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)
|
||||
}
|
||||
|
||||
// GetOrderById - Find purchase order by ID
|
||||
func (c *StoreAPIController) GetOrderById(w http.ResponseWriter, r *http.Request) {
|
||||
orderIdParam, err := parseNumericParameter[int64](
|
||||
chi.URLParam(r, "orderId"),
|
||||
WithRequire[int64](parseInt64),
|
||||
WithMinimum[int64](1),
|
||||
WithMaximum[int64](5),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.GetOrderById(r.Context(), orderIdParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// 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.DisallowUnknownFields()
|
||||
if err := d.Decode(&orderParam); err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
if err := AssertOrderRequired(orderParam); err != nil {
|
||||
c.errorHandler(w, r, err, nil)
|
||||
return
|
||||
}
|
||||
if err := AssertOrderConstraints(orderParam); err != nil {
|
||||
c.errorHandler(w, r, err, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.PlaceOrder(r.Context(), orderParam)
|
||||
// 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)
|
||||
}
|
@ -1,83 +0,0 @@
|
||||
/*
|
||||
* 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 (
|
||||
"context"
|
||||
"net/http"
|
||||
"errors"
|
||||
)
|
||||
|
||||
// StoreAPIService is a service that implements the logic for the StoreAPIServicer
|
||||
// This service should implement the business logic for every endpoint for the StoreAPI API.
|
||||
// Include any external packages or services that will be required by this service.
|
||||
type StoreAPIService struct {
|
||||
}
|
||||
|
||||
// NewStoreAPIService creates a default api service
|
||||
func NewStoreAPIService() StoreAPIServicer {
|
||||
return &StoreAPIService{}
|
||||
}
|
||||
|
||||
// DeleteOrder - Delete purchase order by ID
|
||||
func (s *StoreAPIService) DeleteOrder(ctx context.Context, orderId string) (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
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
|
||||
// return Response(404, nil),nil
|
||||
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("DeleteOrder method not implemented")
|
||||
}
|
||||
|
||||
// GetInventory - Returns pet inventories by status
|
||||
func (s *StoreAPIService) GetInventory(ctx context.Context) (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 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) {
|
||||
// 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
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
|
||||
// return Response(400, nil),nil
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
|
||||
// return Response(404, nil),nil
|
||||
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("GetOrderById method not implemented")
|
||||
}
|
||||
|
||||
// PlaceOrder - Place an order for a pet
|
||||
func (s *StoreAPIService) PlaceOrder(ctx context.Context, order Order) (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
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
|
||||
// return Response(400, nil),nil
|
||||
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("PlaceOrder method not implemented")
|
||||
}
|
@ -1,252 +0,0 @@
|
||||
/*
|
||||
* 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 (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
)
|
||||
|
||||
// UserAPIController binds http requests to an api service and writes the service results to the http response
|
||||
type UserAPIController struct {
|
||||
service UserAPIServicer
|
||||
errorHandler ErrorHandler
|
||||
}
|
||||
|
||||
// UserAPIOption for how the controller is set up.
|
||||
type UserAPIOption func(*UserAPIController)
|
||||
|
||||
// WithUserAPIErrorHandler inject ErrorHandler into controller
|
||||
func WithUserAPIErrorHandler(h ErrorHandler) UserAPIOption {
|
||||
return func(c *UserAPIController) {
|
||||
c.errorHandler = h
|
||||
}
|
||||
}
|
||||
|
||||
// NewUserAPIController creates a default api controller
|
||||
func NewUserAPIController(s UserAPIServicer, opts ...UserAPIOption) Router {
|
||||
controller := &UserAPIController{
|
||||
service: s,
|
||||
errorHandler: DefaultErrorHandler,
|
||||
}
|
||||
|
||||
for _, opt := range opts {
|
||||
opt(controller)
|
||||
}
|
||||
|
||||
return controller
|
||||
}
|
||||
|
||||
// Routes returns all the api routes for the UserAPIController
|
||||
func (c *UserAPIController) Routes() Routes {
|
||||
return Routes{
|
||||
"CreateUser": Route{
|
||||
strings.ToUpper("Post"),
|
||||
"/v2/user",
|
||||
c.CreateUser,
|
||||
},
|
||||
"CreateUsersWithArrayInput": Route{
|
||||
strings.ToUpper("Post"),
|
||||
"/v2/user/createWithArray",
|
||||
c.CreateUsersWithArrayInput,
|
||||
},
|
||||
"CreateUsersWithListInput": Route{
|
||||
strings.ToUpper("Post"),
|
||||
"/v2/user/createWithList",
|
||||
c.CreateUsersWithListInput,
|
||||
},
|
||||
"DeleteUser": Route{
|
||||
strings.ToUpper("Delete"),
|
||||
"/v2/user/{username}",
|
||||
c.DeleteUser,
|
||||
},
|
||||
"GetUserByName": Route{
|
||||
strings.ToUpper("Get"),
|
||||
"/v2/user/{username}",
|
||||
c.GetUserByName,
|
||||
},
|
||||
"LoginUser": Route{
|
||||
strings.ToUpper("Get"),
|
||||
"/v2/user/login",
|
||||
c.LoginUser,
|
||||
},
|
||||
"LogoutUser": Route{
|
||||
strings.ToUpper("Get"),
|
||||
"/v2/user/logout",
|
||||
c.LogoutUser,
|
||||
},
|
||||
"UpdateUser": Route{
|
||||
strings.ToUpper("Put"),
|
||||
"/v2/user/{username}",
|
||||
c.UpdateUser,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// CreateUser - Create user
|
||||
func (c *UserAPIController) CreateUser(w http.ResponseWriter, r *http.Request) {
|
||||
userParam := User{}
|
||||
d := json.NewDecoder(r.Body)
|
||||
d.DisallowUnknownFields()
|
||||
if err := d.Decode(&userParam); err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
if err := AssertUserRequired(userParam); err != nil {
|
||||
c.errorHandler(w, r, err, nil)
|
||||
return
|
||||
}
|
||||
if err := AssertUserConstraints(userParam); err != nil {
|
||||
c.errorHandler(w, r, err, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.CreateUser(r.Context(), userParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// 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.DisallowUnknownFields()
|
||||
if err := d.Decode(&userParam); err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
for _, el := range userParam {
|
||||
if err := AssertUserRequired(el); err != nil {
|
||||
c.errorHandler(w, r, err, nil)
|
||||
return
|
||||
}
|
||||
}
|
||||
result, err := c.service.CreateUsersWithArrayInput(r.Context(), userParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// 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.DisallowUnknownFields()
|
||||
if err := d.Decode(&userParam); err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
for _, el := range userParam {
|
||||
if err := AssertUserRequired(el); err != nil {
|
||||
c.errorHandler(w, r, err, nil)
|
||||
return
|
||||
}
|
||||
}
|
||||
result, err := c.service.CreateUsersWithListInput(r.Context(), userParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// DeleteUser - Delete user
|
||||
func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) {
|
||||
usernameParam := chi.URLParam(r, "username")
|
||||
result, err := c.service.DeleteUser(r.Context(), usernameParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// GetUserByName - Get user by user name
|
||||
func (c *UserAPIController) GetUserByName(w http.ResponseWriter, r *http.Request) {
|
||||
usernameParam := chi.URLParam(r, "username")
|
||||
result, err := c.service.GetUserByName(r.Context(), usernameParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// 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")
|
||||
result, err := c.service.LoginUser(r.Context(), usernameParam, passwordParam)
|
||||
// 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)
|
||||
}
|
||||
|
||||
// LogoutUser - Logs out current logged in user session
|
||||
func (c *UserAPIController) LogoutUser(w http.ResponseWriter, r *http.Request) {
|
||||
result, err := c.service.LogoutUser(r.Context())
|
||||
// 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)
|
||||
}
|
||||
|
||||
// UpdateUser - Updated user
|
||||
func (c *UserAPIController) UpdateUser(w http.ResponseWriter, r *http.Request) {
|
||||
usernameParam := chi.URLParam(r, "username")
|
||||
userParam := User{}
|
||||
d := json.NewDecoder(r.Body)
|
||||
d.DisallowUnknownFields()
|
||||
if err := d.Decode(&userParam); err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
return
|
||||
}
|
||||
if err := AssertUserRequired(userParam); err != nil {
|
||||
c.errorHandler(w, r, err, nil)
|
||||
return
|
||||
}
|
||||
if err := AssertUserConstraints(userParam); err != nil {
|
||||
c.errorHandler(w, r, err, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.UpdateUser(r.Context(), usernameParam, userParam)
|
||||
// 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)
|
||||
}
|
@ -1,130 +0,0 @@
|
||||
/*
|
||||
* 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 (
|
||||
"context"
|
||||
"net/http"
|
||||
"errors"
|
||||
)
|
||||
|
||||
// UserAPIService is a service that implements the logic for the UserAPIServicer
|
||||
// This service should implement the business logic for every endpoint for the UserAPI API.
|
||||
// Include any external packages or services that will be required by this service.
|
||||
type UserAPIService struct {
|
||||
}
|
||||
|
||||
// NewUserAPIService creates a default api service
|
||||
func NewUserAPIService() UserAPIServicer {
|
||||
return &UserAPIService{}
|
||||
}
|
||||
|
||||
// CreateUser - Create user
|
||||
func (s *UserAPIService) CreateUser(ctx context.Context, user User) (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 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) {
|
||||
// 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 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) {
|
||||
// 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 Response(http.StatusNotImplemented, nil), errors.New("CreateUsersWithListInput method not implemented")
|
||||
}
|
||||
|
||||
// DeleteUser - Delete user
|
||||
func (s *UserAPIService) DeleteUser(ctx context.Context, username string) (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
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
|
||||
// return Response(404, nil),nil
|
||||
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("DeleteUser method not implemented")
|
||||
}
|
||||
|
||||
// GetUserByName - Get user by user name
|
||||
func (s *UserAPIService) GetUserByName(ctx context.Context, username string) (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
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
|
||||
// return Response(400, nil),nil
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
|
||||
// return Response(404, nil),nil
|
||||
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("GetUserByName method not implemented")
|
||||
}
|
||||
|
||||
// LoginUser - Logs user into the system
|
||||
func (s *UserAPIService) LoginUser(ctx context.Context, username string, password string) (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
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(400, {}) or use other options such as http.Ok ...
|
||||
// return Response(400, nil),nil
|
||||
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("LoginUser method not implemented")
|
||||
}
|
||||
|
||||
// LogoutUser - Logs out current logged in user session
|
||||
func (s *UserAPIService) LogoutUser(ctx context.Context) (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 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) {
|
||||
// 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
|
||||
|
||||
// TODO: Uncomment the next line to return response Response(404, {}) or use other options such as http.Ok ...
|
||||
// return Response(404, nil),nil
|
||||
|
||||
return Response(http.StatusNotImplemented, nil), errors.New("UpdateUser method not implemented")
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
/*
|
||||
* 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 (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var (
|
||||
// ErrTypeAssertionError is thrown when type an interface does not match the asserted type
|
||||
ErrTypeAssertionError = errors.New("unable to assert type")
|
||||
)
|
||||
|
||||
// ParsingError indicates that an error has occurred when parsing request parameters
|
||||
type ParsingError struct {
|
||||
Err error
|
||||
}
|
||||
|
||||
func (e *ParsingError) Unwrap() error {
|
||||
return e.Err
|
||||
}
|
||||
|
||||
func (e *ParsingError) Error() string {
|
||||
return e.Err.Error()
|
||||
}
|
||||
|
||||
// RequiredError indicates that an error has occurred when parsing request parameters
|
||||
type RequiredError struct {
|
||||
Field string
|
||||
}
|
||||
|
||||
func (e *RequiredError) Error() string {
|
||||
return fmt.Sprintf("required field '%s' is zero value.", e.Field)
|
||||
}
|
||||
|
||||
// ErrorHandler defines the required method for handling error. You may implement it and inject this into a controller if
|
||||
// you would like errors to be handled differently from the DefaultErrorHandler
|
||||
type ErrorHandler func(w http.ResponseWriter, r *http.Request, err error, result *ImplResponse)
|
||||
|
||||
// DefaultErrorHandler defines the default logic on how to handle errors from the controller. Any errors from parsing
|
||||
// request params will return a StatusBadRequest. Otherwise, the error code originating from the servicer will be used.
|
||||
func DefaultErrorHandler(w http.ResponseWriter, r *http.Request, err error, result *ImplResponse) {
|
||||
if _, ok := err.(*ParsingError); ok {
|
||||
// Handle parsing errors
|
||||
EncodeJSONResponse(err.Error(), func(i int) *int { return &i }(http.StatusBadRequest), map[string][]string{}, w)
|
||||
} else if _, ok := err.(*RequiredError); ok {
|
||||
// Handle missing required errors
|
||||
EncodeJSONResponse(err.Error(), func(i int) *int { return &i }(http.StatusUnprocessableEntity), map[string][]string{}, w)
|
||||
} else {
|
||||
// Handle all other errors
|
||||
EncodeJSONResponse(err.Error(), &result.Code, result.Headers, w)
|
||||
}
|
||||
}
|
@ -1,70 +0,0 @@
|
||||
/*
|
||||
* 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 (
|
||||
"reflect"
|
||||
)
|
||||
|
||||
// Response return a ImplResponse struct filled
|
||||
func Response(code int, body interface{}) ImplResponse {
|
||||
return ImplResponse {
|
||||
Code: code,
|
||||
Headers: nil,
|
||||
Body: body,
|
||||
}
|
||||
}
|
||||
|
||||
// ResponseWithHeaders return a ImplResponse struct filled, including headers
|
||||
func ResponseWithHeaders(code int, headers map[string][]string, body interface{}) ImplResponse {
|
||||
return ImplResponse {
|
||||
Code: code,
|
||||
Headers: headers,
|
||||
Body: body,
|
||||
}
|
||||
}
|
||||
|
||||
// IsZeroValue checks if the val is the zero-ed value.
|
||||
func IsZeroValue(val interface{}) bool {
|
||||
return val == nil || reflect.DeepEqual(val, reflect.Zero(reflect.TypeOf(val)).Interface())
|
||||
}
|
||||
|
||||
// AssertRecurseInterfaceRequired recursively checks each struct in a slice against the callback.
|
||||
// This method traverse nested slices in a preorder fashion.
|
||||
func AssertRecurseInterfaceRequired[T any](obj interface{}, callback func(T) error) error {
|
||||
return AssertRecurseValueRequired(reflect.ValueOf(obj), callback)
|
||||
}
|
||||
|
||||
// AssertRecurseValueRequired checks each struct in the nested slice against the callback.
|
||||
// This method traverse nested slices in a preorder fashion. ErrTypeAssertionError is thrown if
|
||||
// the underlying struct does not match type T.
|
||||
func AssertRecurseValueRequired[T any](value reflect.Value, callback func(T) error) error {
|
||||
switch value.Kind() {
|
||||
// If it is a struct we check using callback
|
||||
case reflect.Struct:
|
||||
obj, ok := value.Interface().(T)
|
||||
if !ok {
|
||||
return ErrTypeAssertionError
|
||||
}
|
||||
|
||||
if err := callback(obj); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// If it is a slice we continue recursion
|
||||
case reflect.Slice:
|
||||
for i := 0; i < value.Len(); i += 1 {
|
||||
if err := AssertRecurseValueRequired(value.Index(i), callback); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
// ImplResponse defines an implementation response with error code and the associated body
|
||||
type ImplResponse struct {
|
||||
Code int
|
||||
Headers map[string][]string
|
||||
Body interface{}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
/*
|
||||
* 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 (
|
||||
"log"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
func Logger(inner http.Handler, name string) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
start := time.Now()
|
||||
|
||||
inner.ServeHTTP(w, r)
|
||||
|
||||
log.Printf(
|
||||
"%s %s %s %s",
|
||||
r.Method,
|
||||
r.RequestURI,
|
||||
name,
|
||||
time.Since(start),
|
||||
)
|
||||
})
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
|
||||
|
||||
|
||||
// AnObject - An array 3-deep.
|
||||
type AnObject struct {
|
||||
|
||||
Tag Tag `json:"tag,omitempty"`
|
||||
|
||||
// An array of pet.
|
||||
Pet []Pet `json:"Pet,omitempty"`
|
||||
}
|
||||
|
||||
// AssertAnObjectRequired checks if the required fields are not zero-ed
|
||||
func AssertAnObjectRequired(obj AnObject) error {
|
||||
if err := AssertTagRequired(obj.Tag); err != nil {
|
||||
return err
|
||||
}
|
||||
for _, el := range obj.Pet {
|
||||
if err := AssertPetRequired(el); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// AssertAnObjectConstraints checks if the values respects the defined constraints
|
||||
func AssertAnObjectConstraints(obj AnObject) error {
|
||||
return nil
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
|
||||
|
||||
|
||||
// ApiResponse - Describes the result of uploading an image resource
|
||||
type ApiResponse struct {
|
||||
|
||||
Code int32 `json:"code,omitempty"`
|
||||
|
||||
Type string `json:"type,omitempty"`
|
||||
|
||||
Message string `json:"message,omitempty"`
|
||||
}
|
||||
|
||||
// AssertApiResponseRequired checks if the required fields are not zero-ed
|
||||
func AssertApiResponseRequired(obj ApiResponse) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// AssertApiResponseConstraints checks if the values respects the defined constraints
|
||||
func AssertApiResponseConstraints(obj ApiResponse) error {
|
||||
return nil
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
|
||||
|
||||
|
||||
// Category - A category for a pet
|
||||
type Category struct {
|
||||
|
||||
Id int64 `json:"id,omitempty"`
|
||||
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
||||
|
||||
// AssertCategoryRequired checks if the required fields are not zero-ed
|
||||
func AssertCategoryRequired(obj Category) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// AssertCategoryConstraints checks if the values respects the defined constraints
|
||||
func AssertCategoryConstraints(obj Category) error {
|
||||
return nil
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
/*
|
||||
* 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 (
|
||||
"time"
|
||||
)
|
||||
|
||||
|
||||
|
||||
// Order - An order for a pets from the pet store
|
||||
type Order struct {
|
||||
SpecialInfo
|
||||
|
||||
Id int64 `json:"id,omitempty"`
|
||||
|
||||
// Order Status
|
||||
Status string `json:"status,omitempty"`
|
||||
|
||||
Complete bool `json:"complete,omitempty"`
|
||||
|
||||
Comment *string `json:"comment"`
|
||||
|
||||
PetId int64 `json:"petId,omitempty"`
|
||||
|
||||
Quantity int32 `json:"quantity,omitempty"`
|
||||
|
||||
ShipDate time.Time `json:"shipDate,omitempty"`
|
||||
}
|
||||
|
||||
// AssertOrderRequired checks if the required fields are not zero-ed
|
||||
func AssertOrderRequired(obj Order) error {
|
||||
elements := map[string]interface{}{
|
||||
"comment": obj.Comment,
|
||||
}
|
||||
for name, el := range elements {
|
||||
if isZero := IsZeroValue(el); isZero {
|
||||
return &RequiredError{Field: name}
|
||||
}
|
||||
}
|
||||
|
||||
if err := AssertSpecialInfoRequired(obj.SpecialInfo); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// AssertOrderConstraints checks if the values respects the defined constraints
|
||||
func AssertOrderConstraints(obj Order) error {
|
||||
return nil
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
/*
|
||||
* 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 (
|
||||
"time"
|
||||
)
|
||||
|
||||
|
||||
|
||||
// OrderInfo - An order info for a pets from the pet store
|
||||
type OrderInfo struct {
|
||||
|
||||
PetId int64 `json:"petId,omitempty"`
|
||||
|
||||
Quantity int32 `json:"quantity,omitempty"`
|
||||
|
||||
ShipDate time.Time `json:"shipDate,omitempty"`
|
||||
}
|
||||
|
||||
// AssertOrderInfoRequired checks if the required fields are not zero-ed
|
||||
func AssertOrderInfoRequired(obj OrderInfo) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// AssertOrderInfoConstraints checks if the values respects the defined constraints
|
||||
func AssertOrderInfoConstraints(obj OrderInfo) error {
|
||||
return nil
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
|
||||
|
||||
|
||||
// Pet - A pet for sale in the pet store
|
||||
type Pet struct {
|
||||
|
||||
Id int64 `json:"id,omitempty"`
|
||||
|
||||
Category *Category `json:"category,omitempty"`
|
||||
|
||||
Name string `json:"name"`
|
||||
|
||||
PhotoUrls *[]string `json:"photoUrls"`
|
||||
|
||||
Tags *[]Tag `json:"tags,omitempty"`
|
||||
|
||||
// pet status in the store
|
||||
Status string `json:"status,omitempty"`
|
||||
}
|
||||
|
||||
// AssertPetRequired checks if the required fields are not zero-ed
|
||||
func AssertPetRequired(obj Pet) error {
|
||||
elements := map[string]interface{}{
|
||||
"name": obj.Name,
|
||||
"photoUrls": obj.PhotoUrls,
|
||||
}
|
||||
for name, el := range elements {
|
||||
if isZero := IsZeroValue(el); isZero {
|
||||
return &RequiredError{Field: name}
|
||||
}
|
||||
}
|
||||
|
||||
if obj.Category != nil {
|
||||
if err := AssertCategoryRequired(*obj.Category); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if obj.Tags != nil {
|
||||
for _, el := range *obj.Tags {
|
||||
if err := AssertTagRequired(el); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// AssertPetConstraints checks if the values respects the defined constraints
|
||||
func AssertPetConstraints(obj Pet) error {
|
||||
return nil
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
|
||||
|
||||
|
||||
// SpecialInfo - An order info for a pets from the pet store
|
||||
type SpecialInfo struct {
|
||||
|
||||
Promotion bool `json:"promotion,omitempty"`
|
||||
|
||||
Type string `json:"type,omitempty"`
|
||||
}
|
||||
|
||||
// AssertSpecialInfoRequired checks if the required fields are not zero-ed
|
||||
func AssertSpecialInfoRequired(obj SpecialInfo) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// AssertSpecialInfoConstraints checks if the values respects the defined constraints
|
||||
func AssertSpecialInfoConstraints(obj SpecialInfo) error {
|
||||
return nil
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
|
||||
|
||||
|
||||
// Tag - A tag for a pet
|
||||
type Tag struct {
|
||||
|
||||
Id int64 `json:"id,omitempty"`
|
||||
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
||||
|
||||
// AssertTagRequired checks if the required fields are not zero-ed
|
||||
func AssertTagRequired(obj Tag) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// AssertTagConstraints checks if the values respects the defined constraints
|
||||
func AssertTagConstraints(obj Tag) error {
|
||||
return nil
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
|
||||
|
||||
|
||||
// User - A User who is purchasing from the pet store
|
||||
type User struct {
|
||||
|
||||
Id int64 `json:"id,omitempty"`
|
||||
|
||||
Username string `json:"username,omitempty"`
|
||||
|
||||
FirstName string `json:"firstName,omitempty"`
|
||||
|
||||
LastName string `json:"lastName,omitempty"`
|
||||
|
||||
Email string `json:"email,omitempty"`
|
||||
|
||||
Password string `json:"password,omitempty"`
|
||||
|
||||
Phone *string `json:"phone,omitempty"`
|
||||
|
||||
// User Status
|
||||
UserStatus int32 `json:"userStatus,omitempty"`
|
||||
|
||||
// An array 1-deep.
|
||||
DeepSliceModel *[][][]Tag `json:"deepSliceModel"`
|
||||
|
||||
// An array 1-deep.
|
||||
DeepSliceMap [][]AnObject `json:"deepSliceMap,omitempty"`
|
||||
}
|
||||
|
||||
// AssertUserRequired checks if the required fields are not zero-ed
|
||||
func AssertUserRequired(obj User) error {
|
||||
elements := map[string]interface{}{
|
||||
"deepSliceModel": obj.DeepSliceModel,
|
||||
}
|
||||
for name, el := range elements {
|
||||
if isZero := IsZeroValue(el); isZero {
|
||||
return &RequiredError{Field: name}
|
||||
}
|
||||
}
|
||||
|
||||
if obj.DeepSliceModel != nil {
|
||||
if err := AssertRecurseInterfaceRequired(*obj.DeepSliceModel, AssertTagRequired); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if err := AssertRecurseInterfaceRequired(obj.DeepSliceMap, AssertAnObjectRequired); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// AssertUserConstraints checks if the values respects the defined constraints
|
||||
func AssertUserConstraints(obj User) error {
|
||||
return nil
|
||||
}
|
@ -1,299 +0,0 @@
|
||||
/*
|
||||
* 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 (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/go-chi/chi/v5/middleware"
|
||||
"io/ioutil"
|
||||
"mime/multipart"
|
||||
"net/http"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// A Route defines the parameters for an api endpoint
|
||||
type Route struct {
|
||||
Method string
|
||||
Pattern string
|
||||
HandlerFunc http.HandlerFunc
|
||||
}
|
||||
|
||||
// Routes is a map of defined api endpoints
|
||||
type Routes map[string]Route
|
||||
|
||||
// Router defines the required methods for retrieving api routes
|
||||
type Router interface {
|
||||
Routes() Routes
|
||||
}
|
||||
|
||||
const errMsgRequiredMissing = "required parameter is missing"
|
||||
const errMsgMinValueConstraint = "provided parameter is not respecting minimum value constraint"
|
||||
const errMsgMaxValueConstraint = "provided parameter is not respecting maximum value constraint"
|
||||
|
||||
// NewRouter creates a new router for any number of api routers
|
||||
func NewRouter(routers ...Router) chi.Router {
|
||||
router := chi.NewRouter()
|
||||
router.Use(middleware.Logger)
|
||||
for _, api := range routers {
|
||||
for _, route := range api.Routes() {
|
||||
var handler http.Handler
|
||||
handler = route.HandlerFunc
|
||||
router.Method(route.Method, route.Pattern, handler)
|
||||
}
|
||||
}
|
||||
|
||||
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()
|
||||
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)
|
||||
}
|
||||
|
||||
if i != nil {
|
||||
return json.NewEncoder(w).Encode(i)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// 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)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return readFileHeaderToTempFile(fileHeader)
|
||||
}
|
||||
|
||||
// ReadFormFilesToTempFiles reads files array data from a request form and writes it to a temporary files
|
||||
func ReadFormFilesToTempFiles(r *http.Request, key string) ([]*os.File, error) {
|
||||
if err := r.ParseMultipartForm(32 << 20); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
files := make([]*os.File, 0, len(r.MultipartForm.File[key]))
|
||||
|
||||
for _, fileHeader := range r.MultipartForm.File[key] {
|
||||
file, err := readFileHeaderToTempFile(fileHeader)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
files = append(files, file)
|
||||
}
|
||||
|
||||
return files, nil
|
||||
}
|
||||
|
||||
// readFileHeaderToTempFile reads multipart.FileHeader and writes it to a temporary file
|
||||
func readFileHeaderToTempFile(fileHeader *multipart.FileHeader) (*os.File, error) {
|
||||
formFile, err := fileHeader.Open()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
defer formFile.Close()
|
||||
|
||||
fileBytes, err := ioutil.ReadAll(formFile)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
file, err := ioutil.TempFile("", fileHeader.Filename)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
defer file.Close()
|
||||
|
||||
file.Write(fileBytes)
|
||||
|
||||
return file, nil
|
||||
}
|
||||
|
||||
type Number interface {
|
||||
~int32 | ~int64 | ~float32 | ~float64
|
||||
}
|
||||
|
||||
type ParseString[T Number | string | bool] func(v string) (T, error)
|
||||
|
||||
// parseFloat64 parses a string parameter to an float64.
|
||||
func parseFloat64(param string) (float64, error) {
|
||||
if param == "" {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
return strconv.ParseFloat(param, 64)
|
||||
}
|
||||
|
||||
// parseFloat32 parses a string parameter to an float32.
|
||||
func parseFloat32(param string) (float32, error) {
|
||||
if param == "" {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
v, err := strconv.ParseFloat(param, 32)
|
||||
return float32(v), err
|
||||
}
|
||||
|
||||
// parseInt64 parses a string parameter to an int64.
|
||||
func parseInt64(param string) (int64, error) {
|
||||
if param == "" {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
return strconv.ParseInt(param, 10, 64)
|
||||
}
|
||||
|
||||
// parseInt32 parses a string parameter to an int32.
|
||||
func parseInt32(param string) (int32, error) {
|
||||
if param == "" {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
val, err := strconv.ParseInt(param, 10, 32)
|
||||
return int32(val), err
|
||||
}
|
||||
|
||||
// parseBool parses a string parameter to an bool.
|
||||
func parseBool(param string) (bool, error) {
|
||||
if param == "" {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
return strconv.ParseBool(param)
|
||||
}
|
||||
|
||||
type Operation[T Number | string | bool] func(actual string) (T, bool, error)
|
||||
|
||||
func WithRequire[T Number | string | bool](parse ParseString[T]) Operation[T] {
|
||||
var empty T
|
||||
return func(actual string) (T, bool, error) {
|
||||
if actual == "" {
|
||||
return empty, false, errors.New(errMsgRequiredMissing)
|
||||
}
|
||||
|
||||
v, err := parse(actual)
|
||||
return v, false, err
|
||||
}
|
||||
}
|
||||
|
||||
func WithDefaultOrParse[T Number | string | bool](def T, parse ParseString[T]) Operation[T] {
|
||||
return func(actual string) (T, bool, error) {
|
||||
if actual == "" {
|
||||
return def, true, nil
|
||||
}
|
||||
|
||||
v, err := parse(actual)
|
||||
return v, false, err
|
||||
}
|
||||
}
|
||||
|
||||
func WithParse[T Number | string | bool](parse ParseString[T]) Operation[T] {
|
||||
return func(actual string) (T, bool, error) {
|
||||
v, err := parse(actual)
|
||||
return v, false, err
|
||||
}
|
||||
}
|
||||
|
||||
type Constraint[T Number | string | bool] func(actual T) error
|
||||
|
||||
func WithMinimum[T Number](expected T) Constraint[T] {
|
||||
return func(actual T) error {
|
||||
if actual < expected {
|
||||
return errors.New(errMsgMinValueConstraint)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func WithMaximum[T Number](expected T) Constraint[T] {
|
||||
return func(actual T) error {
|
||||
if actual > expected {
|
||||
return errors.New(errMsgMaxValueConstraint)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// parseNumericParameter parses a numeric parameter to its respective type.
|
||||
func parseNumericParameter[T Number](param string, fn Operation[T], checks ...Constraint[T]) (T, error) {
|
||||
v, ok, err := fn(param)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if !ok {
|
||||
for _, check := range checks {
|
||||
if err := check(v); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return v, nil
|
||||
}
|
||||
|
||||
// parseBoolParameter parses a string parameter to a bool
|
||||
func parseBoolParameter(param string, fn Operation[bool]) (bool, error) {
|
||||
v, _, err := fn(param)
|
||||
return v, err
|
||||
}
|
||||
|
||||
// parseNumericArrayParameter parses a string parameter containing array of values to its respective type.
|
||||
func parseNumericArrayParameter[T Number](param, delim string, required bool, fn Operation[T], checks ...Constraint[T]) ([]T, error) {
|
||||
if param == "" {
|
||||
if required {
|
||||
return nil, errors.New(errMsgRequiredMissing)
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
str := strings.Split(param, delim)
|
||||
values := make([]T, len(str))
|
||||
|
||||
for i, s := range str {
|
||||
v, ok, err := fn(s)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if !ok {
|
||||
for _, check := range checks {
|
||||
if err := check(v); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
values[i] = v
|
||||
}
|
||||
|
||||
return values, nil
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
/*
|
||||
* 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 main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
petstoreserver "github.com/GIT_USER_ID/GIT_REPO_ID/go"
|
||||
)
|
||||
|
||||
func main() {
|
||||
log.Printf("Server started")
|
||||
|
||||
PetAPIService := petstoreserver.NewPetAPIService()
|
||||
PetAPIController := petstoreserver.NewPetAPIController(PetAPIService)
|
||||
|
||||
StoreAPIService := petstoreserver.NewStoreAPIService()
|
||||
StoreAPIController := petstoreserver.NewStoreAPIController(StoreAPIService)
|
||||
|
||||
UserAPIService := petstoreserver.NewUserAPIService()
|
||||
UserAPIController := petstoreserver.NewUserAPIController(UserAPIService)
|
||||
|
||||
router := petstoreserver.NewRouter(PetAPIController, StoreAPIController, UserAPIController)
|
||||
|
||||
log.Fatal(http.ListenAndServe(":8080", router))
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user