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:
yusing
2025-08-16 13:04:05 +08:00
parent fce9ce21c9
commit 35a3e3fef6
149 changed files with 13173 additions and 2173 deletions

View File

@@ -210,7 +210,7 @@ func (cfg *Config) StartServers(opts ...*StartServersOptions) {
Name: "api",
CertProvider: cfg.AutoCertProvider(),
HTTPAddr: common.APIHTTPAddr,
Handler: api.NewHandler(cfg),
Handler: api.NewHandler(),
})
}
}

View File

@@ -3,6 +3,7 @@ package config
import (
config "github.com/yusing/go-proxy/internal/config/types"
"github.com/yusing/go-proxy/internal/route/provider"
"github.com/yusing/go-proxy/internal/types"
)
func (cfg *Config) DumpRouteProviders() map[string]*provider.Provider {
@@ -25,9 +26,9 @@ func (cfg *Config) RouteProviderList() []config.RouteProviderListResponse {
}
func (cfg *Config) Statistics() map[string]any {
var rps, streams provider.RouteStats
var rps, streams types.RouteStats
var total uint16
providerStats := make(map[string]provider.ProviderStats)
providerStats := make(map[string]types.ProviderStats)
for _, p := range cfg.providers.Range {
stats := p.Statistics()

View File

@@ -45,7 +45,7 @@ type (
RouteProviderListResponse struct {
ShortName string `json:"short_name"`
FullName string `json:"full_name"`
}
} // @name RouteProvider
ConfigInstance interface {
Value() *Config
Reload() gperr.Error