mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-19 15:01:22 +02:00
refactor(api): restructured API for type safety, maintainability and docs generation
- These changes makes the API incombatible with previous versions - Added new types for error handling, success responses, and health checks. - Updated health check logic to utilize the new types for better clarity and structure. - Refactored existing handlers to improve response consistency and error handling. - Updated Makefile to include a new target for generating API types from Swagger. - Updated "new agent" API to respond an encrypted cert pair
This commit is contained in:
54
internal/types/loadbalancer.go
Normal file
54
internal/types/loadbalancer.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
nettypes "github.com/yusing/go-proxy/internal/net/types"
|
||||
"github.com/yusing/go-proxy/internal/utils/strutils"
|
||||
)
|
||||
|
||||
type (
|
||||
LoadBalancerConfig struct {
|
||||
Link string `json:"link"`
|
||||
Mode LoadBalancerMode `json:"mode"`
|
||||
Weight int `json:"weight"`
|
||||
Options map[string]any `json:"options,omitempty"`
|
||||
} // @name LoadBalancerConfig
|
||||
LoadBalancerMode string // @name LoadBalancerMode
|
||||
LoadBalancerServer interface {
|
||||
http.Handler
|
||||
HealthMonitor
|
||||
Name() string
|
||||
Key() string
|
||||
URL() *nettypes.URL
|
||||
Weight() int
|
||||
SetWeight(weight int)
|
||||
TryWake() error
|
||||
}
|
||||
LoadBalancerServers []LoadBalancerServer
|
||||
)
|
||||
|
||||
const (
|
||||
LoadbalanceModeUnset LoadBalancerMode = ""
|
||||
LoadbalanceModeRoundRobin LoadBalancerMode = "roundrobin"
|
||||
LoadbalanceModeLeastConn LoadBalancerMode = "leastconn"
|
||||
LoadbalanceModeIPHash LoadBalancerMode = "iphash"
|
||||
)
|
||||
|
||||
func (mode *LoadBalancerMode) ValidateUpdate() bool {
|
||||
switch strutils.ToLowerNoSnake(string(*mode)) {
|
||||
case "":
|
||||
return true
|
||||
case string(LoadbalanceModeRoundRobin):
|
||||
*mode = LoadbalanceModeRoundRobin
|
||||
return true
|
||||
case string(LoadbalanceModeLeastConn):
|
||||
*mode = LoadbalanceModeLeastConn
|
||||
return true
|
||||
case string(LoadbalanceModeIPHash):
|
||||
*mode = LoadbalanceModeIPHash
|
||||
return true
|
||||
}
|
||||
*mode = LoadbalanceModeRoundRobin
|
||||
return false
|
||||
}
|
||||
Reference in New Issue
Block a user