forked from loafle/openapi-generator-original
* Enhance go api server with interfaces router binding and services Enhance the default go api server generation to define interfaces for an API's routes and services. Handle an endpoint's http binding in the generated router and the skeleton for the service logic in an API service. * Include interface documentation in Go Server generation.
204 lines
4.8 KiB
Go
204 lines
4.8 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 (
|
|
"encoding/json"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/gorilla/mux"
|
|
)
|
|
|
|
// A UserApiController binds http requests to an api service and writes the service results to the http response
|
|
type UserApiController struct {
|
|
service UserApiServicer
|
|
}
|
|
|
|
// NewUserApiController creates a default api controller
|
|
func NewUserApiController(s UserApiServicer) UserApiRouter {
|
|
return &UserApiController{ service: s }
|
|
}
|
|
|
|
// Routes returns all of the api route for the UserApiController
|
|
func (c *UserApiController) Routes() Routes {
|
|
return Routes{
|
|
{
|
|
"CreateUser",
|
|
strings.ToUpper("Post"),
|
|
"/v2/user",
|
|
c.CreateUser,
|
|
},
|
|
{
|
|
"CreateUsersWithArrayInput",
|
|
strings.ToUpper("Post"),
|
|
"/v2/user/createWithArray",
|
|
c.CreateUsersWithArrayInput,
|
|
},
|
|
{
|
|
"CreateUsersWithListInput",
|
|
strings.ToUpper("Post"),
|
|
"/v2/user/createWithList",
|
|
c.CreateUsersWithListInput,
|
|
},
|
|
{
|
|
"DeleteUser",
|
|
strings.ToUpper("Delete"),
|
|
"/v2/user/{username}",
|
|
c.DeleteUser,
|
|
},
|
|
{
|
|
"GetUserByName",
|
|
strings.ToUpper("Get"),
|
|
"/v2/user/{username}",
|
|
c.GetUserByName,
|
|
},
|
|
{
|
|
"LoginUser",
|
|
strings.ToUpper("Get"),
|
|
"/v2/user/login",
|
|
c.LoginUser,
|
|
},
|
|
{
|
|
"LogoutUser",
|
|
strings.ToUpper("Get"),
|
|
"/v2/user/logout",
|
|
c.LogoutUser,
|
|
},
|
|
{
|
|
"UpdateUser",
|
|
strings.ToUpper("Put"),
|
|
"/v2/user/{username}",
|
|
c.UpdateUser,
|
|
},
|
|
}
|
|
}
|
|
|
|
// CreateUser - Create user
|
|
func (c *UserApiController) CreateUser(w http.ResponseWriter, r *http.Request) {
|
|
body := &User{}
|
|
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
|
|
w.WriteHeader(500)
|
|
return
|
|
}
|
|
|
|
result, err := c.service.CreateUser(*body)
|
|
if err != nil {
|
|
w.WriteHeader(500)
|
|
return
|
|
}
|
|
|
|
EncodeJSONResponse(result, nil, w)
|
|
}
|
|
|
|
// CreateUsersWithArrayInput - Creates list of users with given input array
|
|
func (c *UserApiController) CreateUsersWithArrayInput(w http.ResponseWriter, r *http.Request) {
|
|
body := &[]User{}
|
|
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
|
|
w.WriteHeader(500)
|
|
return
|
|
}
|
|
|
|
result, err := c.service.CreateUsersWithArrayInput(*body)
|
|
if err != nil {
|
|
w.WriteHeader(500)
|
|
return
|
|
}
|
|
|
|
EncodeJSONResponse(result, nil, w)
|
|
}
|
|
|
|
// CreateUsersWithListInput - Creates list of users with given input array
|
|
func (c *UserApiController) CreateUsersWithListInput(w http.ResponseWriter, r *http.Request) {
|
|
body := &[]User{}
|
|
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
|
|
w.WriteHeader(500)
|
|
return
|
|
}
|
|
|
|
result, err := c.service.CreateUsersWithListInput(*body)
|
|
if err != nil {
|
|
w.WriteHeader(500)
|
|
return
|
|
}
|
|
|
|
EncodeJSONResponse(result, nil, w)
|
|
}
|
|
|
|
// DeleteUser - Delete user
|
|
func (c *UserApiController) DeleteUser(w http.ResponseWriter, r *http.Request) {
|
|
params := mux.Vars(r)
|
|
username := params["username"]
|
|
result, err := c.service.DeleteUser(username)
|
|
if err != nil {
|
|
w.WriteHeader(500)
|
|
return
|
|
}
|
|
|
|
EncodeJSONResponse(result, nil, w)
|
|
}
|
|
|
|
// GetUserByName - Get user by user name
|
|
func (c *UserApiController) GetUserByName(w http.ResponseWriter, r *http.Request) {
|
|
params := mux.Vars(r)
|
|
username := params["username"]
|
|
result, err := c.service.GetUserByName(username)
|
|
if err != nil {
|
|
w.WriteHeader(500)
|
|
return
|
|
}
|
|
|
|
EncodeJSONResponse(result, nil, w)
|
|
}
|
|
|
|
// LoginUser - Logs user into the system
|
|
func (c *UserApiController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
|
query := r.URL.Query()
|
|
username := query.Get("username")
|
|
password := query.Get("password")
|
|
result, err := c.service.LoginUser(username, password)
|
|
if err != nil {
|
|
w.WriteHeader(500)
|
|
return
|
|
}
|
|
|
|
EncodeJSONResponse(result, nil, w)
|
|
}
|
|
|
|
// LogoutUser - Logs out current logged in user session
|
|
func (c *UserApiController) LogoutUser(w http.ResponseWriter, r *http.Request) {
|
|
result, err := c.service.LogoutUser()
|
|
if err != nil {
|
|
w.WriteHeader(500)
|
|
return
|
|
}
|
|
|
|
EncodeJSONResponse(result, nil, w)
|
|
}
|
|
|
|
// UpdateUser - Updated user
|
|
func (c *UserApiController) UpdateUser(w http.ResponseWriter, r *http.Request) {
|
|
params := mux.Vars(r)
|
|
username := params["username"]
|
|
body := &User{}
|
|
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
|
|
w.WriteHeader(500)
|
|
return
|
|
}
|
|
|
|
result, err := c.service.UpdateUser(username, *body)
|
|
if err != nil {
|
|
w.WriteHeader(500)
|
|
return
|
|
}
|
|
|
|
EncodeJSONResponse(result, nil, w)
|
|
}
|