diff --git a/samples/server/petstore/go-server-required/.openapi-generator-ignore b/samples/server/petstore/go-server-required/.openapi-generator-ignore deleted file mode 100644 index 7484ee590a3..00000000000 --- a/samples/server/petstore/go-server-required/.openapi-generator-ignore +++ /dev/null @@ -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 diff --git a/samples/server/petstore/go-server-required/.openapi-generator/FILES b/samples/server/petstore/go-server-required/.openapi-generator/FILES deleted file mode 100644 index 4c3a2a3a7c7..00000000000 --- a/samples/server/petstore/go-server-required/.openapi-generator/FILES +++ /dev/null @@ -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 diff --git a/samples/server/petstore/go-server-required/.openapi-generator/VERSION b/samples/server/petstore/go-server-required/.openapi-generator/VERSION deleted file mode 100644 index 757e6740040..00000000000 --- a/samples/server/petstore/go-server-required/.openapi-generator/VERSION +++ /dev/null @@ -1 +0,0 @@ -7.0.0-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/go-server-required/Dockerfile b/samples/server/petstore/go-server-required/Dockerfile deleted file mode 100644 index 2a71bb77629..00000000000 --- a/samples/server/petstore/go-server-required/Dockerfile +++ /dev/null @@ -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"] diff --git a/samples/server/petstore/go-server-required/README.md b/samples/server/petstore/go-server-required/README.md deleted file mode 100644 index 7a0c3bb1119..00000000000 --- a/samples/server/petstore/go-server-required/README.md +++ /dev/null @@ -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 -``` diff --git a/samples/server/petstore/go-server-required/api/openapi.yaml b/samples/server/petstore/go-server-required/api/openapi.yaml deleted file mode 100644 index 350f69ddfd0..00000000000 --- a/samples/server/petstore/go-server-required/api/openapi.yaml +++ /dev/null @@ -1,1049 +0,0 @@ -openapi: 3.0.0 -info: - description: "This is a sample server Petstore server. For this sample, you can\ - \ use the api key `special-key` to test the authorization filters." - license: - name: Apache-2.0 - url: https://www.apache.org/licenses/LICENSE-2.0.html - title: OpenAPI Petstore - version: 1.0.0 -externalDocs: - description: Find out more about Swagger - url: http://swagger.io -servers: -- url: http://petstore.swagger.io/v2 -tags: -- description: Everything about your Pets - name: pet -- description: Access to Petstore orders - name: store -- description: Operations about user - name: user -paths: - /pet: - post: - description: "" - operationId: addPet - requestBody: - $ref: '#/components/requestBodies/Pet' - responses: - "200": - content: - application/xml: - schema: - $ref: '#/components/schemas/Pet' - application/json: - schema: - $ref: '#/components/schemas/Pet' - description: successful operation - "405": - description: Invalid input - security: - - petstore_auth: - - write:pets - - read:pets - summary: Add a new pet to the store - tags: - - pet - put: - description: "" - operationId: updatePet - requestBody: - $ref: '#/components/requestBodies/Pet' - responses: - "200": - content: - application/xml: - schema: - $ref: '#/components/schemas/Pet' - application/json: - schema: - $ref: '#/components/schemas/Pet' - description: successful operation - "400": - description: Invalid ID supplied - "404": - description: Pet not found - "405": - description: Validation exception - security: - - petstore_auth: - - write:pets - - read:pets - summary: Update an existing pet - tags: - - pet - /pet/findByStatus: - get: - description: Multiple status values can be provided with comma separated strings - operationId: findPetsByStatus - parameters: - - description: Status values that need to be considered for filter - explode: false - in: query - name: status - required: true - schema: - items: - default: available - enum: - - available - - pending - - sold - type: string - type: array - style: form - responses: - "200": - content: - application/xml: - schema: - items: - $ref: '#/components/schemas/Pet' - type: array - application/json: - schema: - items: - $ref: '#/components/schemas/Pet' - type: array - description: successful operation - "400": - description: Invalid status value - security: - - petstore_auth: - - read:pets - summary: Finds Pets by status - tags: - - pet - /pet/findByTags: - get: - deprecated: true - description: "Multiple tags can be provided with comma separated strings. Use\ - \ tag1, tag2, tag3 for testing." - operationId: findPetsByTags - parameters: - - description: Tags to filter by - explode: false - in: query - name: tags - required: true - schema: - items: - type: string - type: array - style: form - responses: - "200": - content: - application/xml: - schema: - items: - $ref: '#/components/schemas/Pet' - type: array - application/json: - schema: - items: - $ref: '#/components/schemas/Pet' - type: array - description: successful operation - "400": - description: Invalid tag value - security: - - petstore_auth: - - read:pets - summary: Finds Pets by tags - tags: - - pet - /pet/{petId}: - delete: - description: "" - operationId: deletePet - parameters: - - explode: false - in: header - name: api_key - required: false - schema: - type: string - style: simple - - description: Pet id to delete - explode: false - in: path - name: petId - required: true - schema: - format: int64 - type: integer - style: simple - responses: - "400": - description: Invalid pet value - security: - - petstore_auth: - - write:pets - - read:pets - summary: Deletes a pet - tags: - - pet - get: - description: Returns a single pet - operationId: getPetById - parameters: - - description: ID of pet to return - explode: false - in: path - name: petId - required: true - schema: - format: int64 - type: integer - style: simple - responses: - "200": - content: - application/xml: - schema: - $ref: '#/components/schemas/Pet' - application/json: - schema: - $ref: '#/components/schemas/Pet' - description: successful operation - "400": - description: Invalid ID supplied - "404": - description: Pet not found - security: - - api_key: [] - summary: Find pet by ID - tags: - - pet - post: - description: "" - operationId: updatePetWithForm - parameters: - - description: ID of pet that needs to be updated - explode: false - in: path - name: petId - required: true - schema: - format: int64 - type: integer - style: simple - requestBody: - content: - application/x-www-form-urlencoded: - schema: - $ref: '#/components/schemas/updatePetWithForm_request' - responses: - "405": - description: Invalid input - security: - - petstore_auth: - - write:pets - - read:pets - summary: Updates a pet in the store with form data - tags: - - pet - /pet/{petId}/uploadImage: - post: - description: "" - operationId: uploadFile - parameters: - - description: ID of pet to update - explode: false - in: path - name: petId - required: true - schema: - format: int64 - type: integer - style: simple - requestBody: - content: - multipart/form-data: - schema: - $ref: '#/components/schemas/uploadFile_request' - responses: - "200": - content: - application/json: - schema: - $ref: '#/components/schemas/ApiResponse' - description: successful operation - security: - - petstore_auth: - - write:pets - - read:pets - summary: uploads an image - tags: - - pet - /store/inventory: - get: - description: Returns a map of status codes to quantities - operationId: getInventory - responses: - "200": - content: - application/json: - schema: - additionalProperties: - format: int32 - type: integer - type: object - description: successful operation - security: - - api_key: [] - summary: Returns pet inventories by status - tags: - - store - /store/order: - post: - description: "" - operationId: placeOrder - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Order' - description: order placed for purchasing the pet - required: true - responses: - "200": - content: - application/xml: - schema: - $ref: '#/components/schemas/Order' - application/json: - schema: - $ref: '#/components/schemas/Order' - description: successful operation - "400": - description: Invalid Order - summary: Place an order for a pet - tags: - - store - /store/order/{orderId}: - delete: - description: For valid response try integer IDs with value < 1000. Anything - above 1000 or nonintegers will generate API errors - operationId: deleteOrder - parameters: - - description: ID of the order that needs to be deleted - explode: false - in: path - name: orderId - required: true - schema: - type: string - style: simple - responses: - "400": - description: Invalid ID supplied - "404": - description: Order not found - summary: Delete purchase order by ID - tags: - - store - get: - description: For valid response try integer IDs with value <= 5 or > 10. Other - values will generate exceptions - operationId: getOrderById - parameters: - - description: ID of pet that needs to be fetched - explode: false - in: path - name: orderId - required: true - schema: - format: int64 - maximum: 5 - minimum: 1 - type: integer - style: simple - responses: - "200": - content: - application/xml: - schema: - $ref: '#/components/schemas/Order' - application/json: - schema: - $ref: '#/components/schemas/Order' - description: successful operation - "400": - description: Invalid ID supplied - "404": - description: Order not found - summary: Find purchase order by ID - tags: - - store - /user: - post: - description: This can only be done by the logged in user. - operationId: createUser - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/User' - description: Created user object - required: true - responses: - default: - description: successful operation - security: - - api_key: [] - summary: Create user - tags: - - user - /user/createWithArray: - post: - description: "" - operationId: createUsersWithArrayInput - requestBody: - $ref: '#/components/requestBodies/UserArray' - responses: - default: - description: successful operation - security: - - api_key: [] - summary: Creates list of users with given input array - tags: - - user - /user/createWithList: - post: - description: "" - operationId: createUsersWithListInput - requestBody: - $ref: '#/components/requestBodies/UserArray' - responses: - default: - description: successful operation - security: - - api_key: [] - summary: Creates list of users with given input array - tags: - - user - /user/login: - get: - description: "" - operationId: loginUser - parameters: - - description: The user name for login - explode: true - in: query - name: username - required: true - schema: - pattern: "^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$" - type: string - style: form - - description: The password for login in clear text - explode: true - in: query - name: password - required: true - schema: - type: string - style: form - responses: - "200": - content: - application/xml: - schema: - type: string - application/json: - schema: - type: string - description: successful operation - headers: - Set-Cookie: - description: Cookie authentication key for use with the `api_key` apiKey - authentication. - explode: false - schema: - example: AUTH_KEY=abcde12345; Path=/; HttpOnly - type: string - style: simple - X-Rate-Limit: - description: calls per hour allowed by the user - explode: false - schema: - format: int32 - type: integer - style: simple - X-Expires-After: - description: date in UTC when token expires - explode: false - schema: - format: date-time - type: string - style: simple - "400": - description: Invalid username/password supplied - summary: Logs user into the system - tags: - - user - /user/logout: - get: - description: "" - operationId: logoutUser - responses: - default: - description: successful operation - security: - - api_key: [] - summary: Logs out current logged in user session - tags: - - user - /user/{username}: - delete: - description: This can only be done by the logged in user. - operationId: deleteUser - parameters: - - description: The name that needs to be deleted - explode: false - in: path - name: username - required: true - schema: - type: string - style: simple - responses: - "400": - description: Invalid username supplied - "404": - description: User not found - security: - - api_key: [] - summary: Delete user - tags: - - user - get: - description: "" - operationId: getUserByName - parameters: - - description: The name that needs to be fetched. Use user1 for testing. - explode: false - in: path - name: username - required: true - schema: - type: string - style: simple - responses: - "200": - content: - application/xml: - schema: - $ref: '#/components/schemas/User' - application/json: - schema: - $ref: '#/components/schemas/User' - description: successful operation - "400": - description: Invalid username supplied - "404": - description: User not found - summary: Get user by user name - tags: - - user - put: - description: This can only be done by the logged in user. - operationId: updateUser - parameters: - - description: name that need to be deleted - explode: false - in: path - name: username - required: true - schema: - type: string - style: simple - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/User' - description: Updated user object - required: true - responses: - "400": - description: Invalid user supplied - "404": - description: User not found - security: - - api_key: [] - summary: Updated user - tags: - - user -components: - requestBodies: - UserArray: - content: - application/json: - schema: - items: - $ref: '#/components/schemas/User' - type: array - description: List of user object - required: true - Pet: - content: - application/json: - schema: - $ref: '#/components/schemas/Pet' - application/xml: - schema: - $ref: '#/components/schemas/Pet' - description: Pet object that needs to be added to the store - required: true - schemas: - OrderInfo: - description: An order info for a pets from the pet store - properties: - petId: - format: int64 - type: integer - quantity: - format: int32 - type: integer - shipDate: - format: date-time - type: string - title: Pet Order Info - type: object - xml: - name: OrderInfo - SpecialInfo: - description: An order info for a pets from the pet store - discriminator: - propertyName: type - properties: - promotion: - type: boolean - type: - type: string - title: Pet Order Info - type: object - xml: - name: OrderInfo - Order: - allOf: - - $ref: '#/components/schemas/OrderInfo' - - $ref: '#/components/schemas/SpecialInfo' - description: An order for a pets from the pet store - example: - comment: comment - id: 0 - complete: false - status: placed - properties: - id: - format: int64 - type: integer - status: - description: Order Status - enum: - - placed - - approved - - delivered - type: string - complete: - default: false - type: boolean - comment: - nullable: true - type: string - required: - - comment - title: Pet Order - type: object - xml: - name: Order - Category: - description: A category for a pet - example: - name: name - id: 6 - nullable: true - properties: - id: - format: int64 - type: integer - name: - pattern: "^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$" - type: string - title: Pet category - type: object - xml: - name: Category - User: - description: A User who is purchasing from the pet store - example: - firstName: firstName - lastName: lastName - password: password - userStatus: 6 - phone: phone - deepSliceModel: - - - - name: name - id: 1 - - name: name - id: 1 - - - name: name - id: 1 - - name: name - id: 1 - - - - name: name - id: 1 - - name: name - id: 1 - - - name: name - id: 1 - - name: name - id: 1 - id: 0 - deepSliceMap: - - - tag: - name: name - id: 1 - Pet: - - photoUrls: - - photoUrls - - photoUrls - name: doggie - id: 0 - category: - name: name - id: 6 - tags: - - name: name - id: 1 - - name: name - id: 1 - status: available - - photoUrls: - - photoUrls - - photoUrls - name: doggie - id: 0 - category: - name: name - id: 6 - tags: - - name: name - id: 1 - - name: name - id: 1 - status: available - - tag: - name: name - id: 1 - Pet: - - photoUrls: - - photoUrls - - photoUrls - name: doggie - id: 0 - category: - name: name - id: 6 - tags: - - name: name - id: 1 - - name: name - id: 1 - status: available - - photoUrls: - - photoUrls - - photoUrls - name: doggie - id: 0 - category: - name: name - id: 6 - tags: - - name: name - id: 1 - - name: name - id: 1 - status: available - - - tag: - name: name - id: 1 - Pet: - - photoUrls: - - photoUrls - - photoUrls - name: doggie - id: 0 - category: - name: name - id: 6 - tags: - - name: name - id: 1 - - name: name - id: 1 - status: available - - photoUrls: - - photoUrls - - photoUrls - name: doggie - id: 0 - category: - name: name - id: 6 - tags: - - name: name - id: 1 - - name: name - id: 1 - status: available - - tag: - name: name - id: 1 - Pet: - - photoUrls: - - photoUrls - - photoUrls - name: doggie - id: 0 - category: - name: name - id: 6 - tags: - - name: name - id: 1 - - name: name - id: 1 - status: available - - photoUrls: - - photoUrls - - photoUrls - name: doggie - id: 0 - category: - name: name - id: 6 - tags: - - name: name - id: 1 - - name: name - id: 1 - status: available - email: email - username: username - properties: - id: - format: int64 - type: integer - username: - type: string - firstName: - type: string - lastName: - type: string - email: - type: string - password: - type: string - phone: - nullable: true - type: string - userStatus: - description: User Status - format: int32 - type: integer - deepSliceModel: - description: An array 1-deep. - items: - description: An array 2-deep. - items: - description: An array 3-deep. - items: - $ref: '#/components/schemas/Tag' - type: array - type: array - nullable: true - type: array - deepSliceMap: - description: An array 1-deep. - items: - description: An array 2-deep. - items: - $ref: '#/components/schemas/an_Object' - type: array - type: array - required: - - deepSliceModel - title: a User - type: object - xml: - name: User - Tag: - description: A tag for a pet - example: - name: name - id: 1 - properties: - id: - format: int64 - type: integer - name: - type: string - title: Pet Tag - type: object - xml: - name: Tag - Pet: - description: A pet for sale in the pet store - example: - photoUrls: - - photoUrls - - photoUrls - name: doggie - id: 0 - category: - name: name - id: 6 - tags: - - name: name - id: 1 - - name: name - id: 1 - status: available - properties: - id: - format: int64 - type: integer - category: - $ref: '#/components/schemas/Category' - name: - example: doggie - type: string - photoUrls: - items: - type: string - nullable: true - type: array - xml: - name: photoUrl - wrapped: true - tags: - items: - $ref: '#/components/schemas/Tag' - nullable: true - type: array - xml: - name: tag - wrapped: true - status: - description: pet status in the store - enum: - - available - - pending - - sold - type: string - required: - - name - - photoUrls - title: a Pet - type: object - xml: - name: Pet - ApiResponse: - description: Describes the result of uploading an image resource - example: - code: 0 - type: type - message: message - properties: - code: - format: int32 - type: integer - type: - type: string - message: - type: string - title: An uploaded response - type: object - updatePetWithForm_request: - properties: - name: - description: Updated name of the pet - type: string - status: - description: Updated status of the pet - type: string - type: object - uploadFile_request: - properties: - additionalMetadata: - description: Additional data to pass to server - type: string - file: - description: file to upload - format: binary - type: string - type: object - an_Object: - description: An array 3-deep. - example: - tag: - name: name - id: 1 - Pet: - - photoUrls: - - photoUrls - - photoUrls - name: doggie - id: 0 - category: - name: name - id: 6 - tags: - - name: name - id: 1 - - name: name - id: 1 - status: available - - photoUrls: - - photoUrls - - photoUrls - name: doggie - id: 0 - category: - name: name - id: 6 - tags: - - name: name - id: 1 - - name: name - id: 1 - status: available - properties: - tag: - $ref: '#/components/schemas/Tag' - Pet: - description: An array of pet. - items: - $ref: '#/components/schemas/Pet' - type: array - title: an Object - type: object - securitySchemes: - petstore_auth: - flows: - implicit: - authorizationUrl: http://petstore.swagger.io/api/oauth/dialog - scopes: - write:pets: modify pets in your account - read:pets: read your pets - type: oauth2 - api_key: - in: header - name: api_key - type: apiKey diff --git a/samples/server/petstore/go-server-required/go.mod b/samples/server/petstore/go-server-required/go.mod deleted file mode 100644 index 5886c8aa7e7..00000000000 --- a/samples/server/petstore/go-server-required/go.mod +++ /dev/null @@ -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 diff --git a/samples/server/petstore/go-server-required/go/api.go b/samples/server/petstore/go-server-required/go/api.go deleted file mode 100644 index a01fcac929a..00000000000 --- a/samples/server/petstore/go-server-required/go/api.go +++ /dev/null @@ -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) -} diff --git a/samples/server/petstore/go-server-required/go/api_pet.go b/samples/server/petstore/go-server-required/go/api_pet.go deleted file mode 100644 index 0efd81a77e9..00000000000 --- a/samples/server/petstore/go-server-required/go/api_pet.go +++ /dev/null @@ -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) -} diff --git a/samples/server/petstore/go-server-required/go/api_pet_service.go b/samples/server/petstore/go-server-required/go/api_pet_service.go deleted file mode 100644 index bda4cd89752..00000000000 --- a/samples/server/petstore/go-server-required/go/api_pet_service.go +++ /dev/null @@ -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") -} diff --git a/samples/server/petstore/go-server-required/go/api_store.go b/samples/server/petstore/go-server-required/go/api_store.go deleted file mode 100644 index 7b131249078..00000000000 --- a/samples/server/petstore/go-server-required/go/api_store.go +++ /dev/null @@ -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) -} diff --git a/samples/server/petstore/go-server-required/go/api_store_service.go b/samples/server/petstore/go-server-required/go/api_store_service.go deleted file mode 100644 index 3c24f24be81..00000000000 --- a/samples/server/petstore/go-server-required/go/api_store_service.go +++ /dev/null @@ -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") -} diff --git a/samples/server/petstore/go-server-required/go/api_user.go b/samples/server/petstore/go-server-required/go/api_user.go deleted file mode 100644 index 9d8d85cd275..00000000000 --- a/samples/server/petstore/go-server-required/go/api_user.go +++ /dev/null @@ -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) -} diff --git a/samples/server/petstore/go-server-required/go/api_user_service.go b/samples/server/petstore/go-server-required/go/api_user_service.go deleted file mode 100644 index 390169be60d..00000000000 --- a/samples/server/petstore/go-server-required/go/api_user_service.go +++ /dev/null @@ -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") -} diff --git a/samples/server/petstore/go-server-required/go/error.go b/samples/server/petstore/go-server-required/go/error.go deleted file mode 100644 index 2c0b010fe8d..00000000000 --- a/samples/server/petstore/go-server-required/go/error.go +++ /dev/null @@ -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) - } -} diff --git a/samples/server/petstore/go-server-required/go/helpers.go b/samples/server/petstore/go-server-required/go/helpers.go deleted file mode 100644 index 078da22b8fa..00000000000 --- a/samples/server/petstore/go-server-required/go/helpers.go +++ /dev/null @@ -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 -} diff --git a/samples/server/petstore/go-server-required/go/impl.go b/samples/server/petstore/go-server-required/go/impl.go deleted file mode 100644 index 7bfb815be5e..00000000000 --- a/samples/server/petstore/go-server-required/go/impl.go +++ /dev/null @@ -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{} -} diff --git a/samples/server/petstore/go-server-required/go/logger.go b/samples/server/petstore/go-server-required/go/logger.go deleted file mode 100644 index 08cc0ea3f1d..00000000000 --- a/samples/server/petstore/go-server-required/go/logger.go +++ /dev/null @@ -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), - ) - }) -} diff --git a/samples/server/petstore/go-server-required/go/model_an_object.go b/samples/server/petstore/go-server-required/go/model_an_object.go deleted file mode 100644 index ece30644b87..00000000000 --- a/samples/server/petstore/go-server-required/go/model_an_object.go +++ /dev/null @@ -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 -} diff --git a/samples/server/petstore/go-server-required/go/model_api_response.go b/samples/server/petstore/go-server-required/go/model_api_response.go deleted file mode 100644 index 795fed14f6e..00000000000 --- a/samples/server/petstore/go-server-required/go/model_api_response.go +++ /dev/null @@ -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 -} diff --git a/samples/server/petstore/go-server-required/go/model_category.go b/samples/server/petstore/go-server-required/go/model_category.go deleted file mode 100644 index e7c13aeaa9f..00000000000 --- a/samples/server/petstore/go-server-required/go/model_category.go +++ /dev/null @@ -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 -} diff --git a/samples/server/petstore/go-server-required/go/model_order.go b/samples/server/petstore/go-server-required/go/model_order.go deleted file mode 100644 index a736aeb3e24..00000000000 --- a/samples/server/petstore/go-server-required/go/model_order.go +++ /dev/null @@ -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 -} diff --git a/samples/server/petstore/go-server-required/go/model_order_info.go b/samples/server/petstore/go-server-required/go/model_order_info.go deleted file mode 100644 index 4426570b024..00000000000 --- a/samples/server/petstore/go-server-required/go/model_order_info.go +++ /dev/null @@ -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 -} diff --git a/samples/server/petstore/go-server-required/go/model_pet.go b/samples/server/petstore/go-server-required/go/model_pet.go deleted file mode 100644 index 1d2c85d5423..00000000000 --- a/samples/server/petstore/go-server-required/go/model_pet.go +++ /dev/null @@ -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 -} diff --git a/samples/server/petstore/go-server-required/go/model_special_info.go b/samples/server/petstore/go-server-required/go/model_special_info.go deleted file mode 100644 index e9eeebc5438..00000000000 --- a/samples/server/petstore/go-server-required/go/model_special_info.go +++ /dev/null @@ -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 -} diff --git a/samples/server/petstore/go-server-required/go/model_tag.go b/samples/server/petstore/go-server-required/go/model_tag.go deleted file mode 100644 index 8b1a4facbae..00000000000 --- a/samples/server/petstore/go-server-required/go/model_tag.go +++ /dev/null @@ -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 -} diff --git a/samples/server/petstore/go-server-required/go/model_user.go b/samples/server/petstore/go-server-required/go/model_user.go deleted file mode 100644 index 1e0a432e8d4..00000000000 --- a/samples/server/petstore/go-server-required/go/model_user.go +++ /dev/null @@ -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 -} diff --git a/samples/server/petstore/go-server-required/go/routers.go b/samples/server/petstore/go-server-required/go/routers.go deleted file mode 100644 index af326677bf4..00000000000 --- a/samples/server/petstore/go-server-required/go/routers.go +++ /dev/null @@ -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 -} diff --git a/samples/server/petstore/go-server-required/main.go b/samples/server/petstore/go-server-required/main.go deleted file mode 100644 index c3153dbd8f9..00000000000 --- a/samples/server/petstore/go-server-required/main.go +++ /dev/null @@ -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)) -}