HAProxy Data Plane API
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

152 lines
5.4 KiB

package handlers
import (
"github.com/go-openapi/runtime/middleware"
client_native "github.com/haproxytech/client-native/v6"
"github.com/haproxytech/client-native/v6/models"
"github.com/haproxytech/dataplaneapi/misc"
"github.com/haproxytech/dataplaneapi/operations/acl_runtime"
)
type GetACLSHandlerRuntimeImpl struct {
Client client_native.HAProxyClient
}
func (h GetACLSHandlerRuntimeImpl) Handle(params acl_runtime.GetServicesHaproxyRuntimeAclsParams, i interface{}) middleware.Responder {
runtime, err := h.Client.Runtime()
if err != nil {
e := misc.HandleError(err)
return acl_runtime.NewGetServicesHaproxyRuntimeAclsDefault(int(*e.Code)).WithPayload(e)
}
files, err := runtime.GetACLFiles()
if err != nil {
e := misc.HandleError(err)
return acl_runtime.NewGetServicesHaproxyRuntimeAclsDefault(int(*e.Code)).WithPayload(e)
}
return acl_runtime.NewGetServicesHaproxyRuntimeAclsOK().WithPayload(files)
}
type GetACLHandlerRuntimeImpl struct {
Client client_native.HAProxyClient
}
func (h GetACLHandlerRuntimeImpl) Handle(params acl_runtime.GetServicesHaproxyRuntimeAclsIDParams, i interface{}) middleware.Responder {
runtime, err := h.Client.Runtime()
if err != nil {
e := misc.HandleError(err)
return acl_runtime.NewGetServicesHaproxyRuntimeAclsIDDefault(int(*e.Code)).WithPayload(e)
}
aclFile, err := runtime.GetACLFile(params.ID)
if err != nil {
e := misc.HandleError(err)
return acl_runtime.NewGetServicesHaproxyRuntimeAclsIDDefault(int(*e.Code)).WithPayload(e)
}
return acl_runtime.NewGetServicesHaproxyRuntimeAclsIDOK().WithPayload(aclFile)
}
type GetACLFileEntriesHandlerRuntimeImpl struct {
Client client_native.HAProxyClient
}
func (h GetACLFileEntriesHandlerRuntimeImpl) Handle(params acl_runtime.GetServicesHaproxyRuntimeACLFileEntriesParams, i interface{}) middleware.Responder {
runtime, err := h.Client.Runtime()
if err != nil {
e := misc.HandleError(err)
return acl_runtime.NewGetServicesHaproxyRuntimeACLFileEntriesDefault(int(*e.Code)).WithPayload(e)
}
files, err := runtime.GetACLFilesEntries(params.ACLID)
if err != nil {
e := misc.HandleError(err)
return acl_runtime.NewGetServicesHaproxyRuntimeACLFileEntriesDefault(int(*e.Code)).WithPayload(e)
}
return acl_runtime.NewGetServicesHaproxyRuntimeACLFileEntriesOK().WithPayload(files)
}
type PostACLFileEntryHandlerRuntimeImpl struct {
Client client_native.HAProxyClient
}
func (h PostACLFileEntryHandlerRuntimeImpl) Handle(params acl_runtime.PostServicesHaproxyRuntimeACLFileEntriesParams, i interface{}) middleware.Responder {
var err error
runtime, err := h.Client.Runtime()
if err != nil {
e := misc.HandleError(err)
return acl_runtime.NewPostServicesHaproxyRuntimeACLFileEntriesDefault(int(*e.Code)).WithPayload(e)
}
if err = runtime.AddACLFileEntry(params.ACLID, params.Data.Value); err != nil {
e := misc.HandleError(err)
return acl_runtime.NewPostServicesHaproxyRuntimeACLFileEntriesDefault(int(*e.Code)).WithPayload(e)
}
var fileEntry *models.ACLFileEntry
fileEntry, err = runtime.GetACLFileEntry(params.ACLID, params.Data.Value)
if err != nil {
e := misc.HandleError(err)
return acl_runtime.NewPostServicesHaproxyRuntimeACLFileEntriesDefault(int(*e.Code)).WithPayload(e)
}
return acl_runtime.NewPostServicesHaproxyRuntimeACLFileEntriesCreated().WithPayload(fileEntry)
}
type GetACLFileEntryRuntimeImpl struct {
Client client_native.HAProxyClient
}
func (h GetACLFileEntryRuntimeImpl) Handle(params acl_runtime.GetServicesHaproxyRuntimeACLFileEntriesIDParams, i interface{}) middleware.Responder {
runtime, err := h.Client.Runtime()
if err != nil {
e := misc.HandleError(err)
return acl_runtime.NewGetServicesHaproxyRuntimeACLFileEntriesIDDefault(int(*e.Code)).WithPayload(e)
}
fileEntry, err := runtime.GetACLFileEntry(params.ACLID, params.ID)
if err != nil {
e := misc.HandleError(err)
return acl_runtime.NewGetServicesHaproxyRuntimeACLFileEntriesIDDefault(int(*e.Code)).WithPayload(e)
}
return acl_runtime.NewGetServicesHaproxyRuntimeACLFileEntriesIDOK().WithPayload(fileEntry)
}
type DeleteACLFileEntryHandlerRuntimeImpl struct {
Client client_native.HAProxyClient
}
func (h DeleteACLFileEntryHandlerRuntimeImpl) Handle(params acl_runtime.DeleteServicesHaproxyRuntimeACLFileEntriesIDParams, i interface{}) middleware.Responder {
runtime, err := h.Client.Runtime()
if err != nil {
e := misc.HandleError(err)
return acl_runtime.NewDeleteServicesHaproxyRuntimeACLFileEntriesIDDefault(int(*e.Code)).WithPayload(e)
}
if err := runtime.DeleteACLFileEntry(params.ACLID, "#"+params.ID); err != nil {
e := misc.HandleError(err)
return acl_runtime.NewDeleteServicesHaproxyRuntimeACLFileEntriesIDDefault(int(*e.Code)).WithPayload(e)
}
return acl_runtime.NewDeleteServicesHaproxyRuntimeACLFileEntriesIDNoContent()
}
type ACLRuntimeAddPayloadRuntimeACLHandlerImpl struct {
Client client_native.HAProxyClient
}
func (h ACLRuntimeAddPayloadRuntimeACLHandlerImpl) Handle(params acl_runtime.AddPayloadRuntimeACLParams, i interface{}) middleware.Responder {
runtime, err := h.Client.Runtime()
if err != nil {
e := misc.HandleError(err)
return acl_runtime.NewAddPayloadRuntimeACLDefault(int(*e.Code)).WithPayload(e)
}
err = runtime.AddACLAtomic(params.ACLID, params.Data)
if err != nil {
status := misc.GetHTTPStatusFromErr(err)
return acl_runtime.NewAddPayloadRuntimeACLDefault(status).WithPayload(misc.SetError(status, err.Error()))
}
return acl_runtime.NewAddPayloadRuntimeACLCreated().WithPayload(params.Data)
}