forked from loafle/openapi-generator-original
194 lines
4.0 KiB
Go
194 lines
4.0 KiB
Go
/*
|
|
* 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 (
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// Route is the information for every URI.
|
|
type Route struct {
|
|
// Name is the name of this Route.
|
|
Name string
|
|
// Method is the string for the HTTP method. ex) GET, POST etc..
|
|
Method string
|
|
// Pattern is the pattern of the URI.
|
|
Pattern string
|
|
// HandlerFunc is the handler function of this route.
|
|
HandlerFunc gin.HandlerFunc
|
|
}
|
|
|
|
// NewRouter returns a new router.
|
|
func NewRouter(handleFunctions ApiHandleFunctions) *gin.Engine {
|
|
router := gin.Default()
|
|
for _, route := range getRoutes(handleFunctions) {
|
|
if route.HandlerFunc == nil {
|
|
route.HandlerFunc = DefaultHandleFunc
|
|
}
|
|
switch route.Method {
|
|
case http.MethodGet:
|
|
router.GET(route.Pattern, route.HandlerFunc)
|
|
case http.MethodPost:
|
|
router.POST(route.Pattern, route.HandlerFunc)
|
|
case http.MethodPut:
|
|
router.PUT(route.Pattern, route.HandlerFunc)
|
|
case http.MethodPatch:
|
|
router.PATCH(route.Pattern, route.HandlerFunc)
|
|
case http.MethodDelete:
|
|
router.DELETE(route.Pattern, route.HandlerFunc)
|
|
}
|
|
}
|
|
|
|
return router
|
|
}
|
|
|
|
// Default handler for not yet implemented routes
|
|
func DefaultHandleFunc(c *gin.Context) {
|
|
c.String(http.StatusNotImplemented, "501 not implemented")
|
|
}
|
|
|
|
type ApiHandleFunctions struct {
|
|
|
|
// Routes for the PetAPI part of the API
|
|
PetAPI PetAPI
|
|
// Routes for the StoreAPI part of the API
|
|
StoreAPI StoreAPI
|
|
// Routes for the UserAPI part of the API
|
|
UserAPI UserAPI
|
|
}
|
|
|
|
func getRoutes(handleFunctions ApiHandleFunctions) []Route {
|
|
return []Route{
|
|
|
|
{
|
|
"AddPet",
|
|
http.MethodPost,
|
|
"/v2/pet",
|
|
handleFunctions.PetAPI.AddPet,
|
|
},
|
|
{
|
|
"DeletePet",
|
|
http.MethodDelete,
|
|
"/v2/pet/:petId",
|
|
handleFunctions.PetAPI.DeletePet,
|
|
},
|
|
{
|
|
"FindPetsByStatus",
|
|
http.MethodGet,
|
|
"/v2/pet/findByStatus",
|
|
handleFunctions.PetAPI.FindPetsByStatus,
|
|
},
|
|
{
|
|
"FindPetsByTags",
|
|
http.MethodGet,
|
|
"/v2/pet/findByTags",
|
|
handleFunctions.PetAPI.FindPetsByTags,
|
|
},
|
|
{
|
|
"GetPetById",
|
|
http.MethodGet,
|
|
"/v2/pet/:petId",
|
|
handleFunctions.PetAPI.GetPetById,
|
|
},
|
|
{
|
|
"UpdatePet",
|
|
http.MethodPut,
|
|
"/v2/pet",
|
|
handleFunctions.PetAPI.UpdatePet,
|
|
},
|
|
{
|
|
"UpdatePetWithForm",
|
|
http.MethodPost,
|
|
"/v2/pet/:petId",
|
|
handleFunctions.PetAPI.UpdatePetWithForm,
|
|
},
|
|
{
|
|
"UploadFile",
|
|
http.MethodPost,
|
|
"/v2/pet/:petId/uploadImage",
|
|
handleFunctions.PetAPI.UploadFile,
|
|
},
|
|
{
|
|
"DeleteOrder",
|
|
http.MethodDelete,
|
|
"/v2/store/order/:orderId",
|
|
handleFunctions.StoreAPI.DeleteOrder,
|
|
},
|
|
{
|
|
"GetInventory",
|
|
http.MethodGet,
|
|
"/v2/store/inventory",
|
|
handleFunctions.StoreAPI.GetInventory,
|
|
},
|
|
{
|
|
"GetOrderById",
|
|
http.MethodGet,
|
|
"/v2/store/order/:orderId",
|
|
handleFunctions.StoreAPI.GetOrderById,
|
|
},
|
|
{
|
|
"PlaceOrder",
|
|
http.MethodPost,
|
|
"/v2/store/order",
|
|
handleFunctions.StoreAPI.PlaceOrder,
|
|
},
|
|
{
|
|
"CreateUser",
|
|
http.MethodPost,
|
|
"/v2/user",
|
|
handleFunctions.UserAPI.CreateUser,
|
|
},
|
|
{
|
|
"CreateUsersWithArrayInput",
|
|
http.MethodPost,
|
|
"/v2/user/createWithArray",
|
|
handleFunctions.UserAPI.CreateUsersWithArrayInput,
|
|
},
|
|
{
|
|
"CreateUsersWithListInput",
|
|
http.MethodPost,
|
|
"/v2/user/createWithList",
|
|
handleFunctions.UserAPI.CreateUsersWithListInput,
|
|
},
|
|
{
|
|
"DeleteUser",
|
|
http.MethodDelete,
|
|
"/v2/user/:username",
|
|
handleFunctions.UserAPI.DeleteUser,
|
|
},
|
|
{
|
|
"GetUserByName",
|
|
http.MethodGet,
|
|
"/v2/user/:username",
|
|
handleFunctions.UserAPI.GetUserByName,
|
|
},
|
|
{
|
|
"LoginUser",
|
|
http.MethodGet,
|
|
"/v2/user/login",
|
|
handleFunctions.UserAPI.LoginUser,
|
|
},
|
|
{
|
|
"LogoutUser",
|
|
http.MethodGet,
|
|
"/v2/user/logout",
|
|
handleFunctions.UserAPI.LogoutUser,
|
|
},
|
|
{
|
|
"UpdateUser",
|
|
http.MethodPut,
|
|
"/v2/user/:username",
|
|
handleFunctions.UserAPI.UpdateUser,
|
|
},
|
|
}
|
|
}
|