This commit is contained in:
dela
2026-01-31 22:53:12 +08:00
commit bc639cf460
30 changed files with 6836 additions and 0 deletions

53
internal/api/router.go Normal file
View File

@@ -0,0 +1,53 @@
package api
import (
"net/http"
"proxyrotator/internal/config"
"proxyrotator/internal/importer"
"proxyrotator/internal/selector"
"proxyrotator/internal/store"
"proxyrotator/internal/tester"
)
// NewRouter 创建 HTTP 路由
func NewRouter(
store store.ProxyStore,
importer *importer.Importer,
tester *tester.HTTPTester,
selector *selector.Selector,
cfg *config.Config,
) http.Handler {
handlers := NewHandlers(store, importer, tester, selector, cfg)
mux := http.NewServeMux()
// 注册路由Go 1.22+ 支持 METHOD /path 模式)
mux.HandleFunc("POST /v1/proxies/import/text", handlers.HandleImportText)
mux.HandleFunc("POST /v1/proxies/import/file", handlers.HandleImportFile)
mux.HandleFunc("POST /v1/proxies/test", handlers.HandleTest)
mux.HandleFunc("GET /v1/proxies/next", handlers.HandleNext)
mux.HandleFunc("POST /v1/proxies/report", handlers.HandleReport)
// CRUD 路由(注意:/stats 需在 /{id} 之前注册)
mux.HandleFunc("GET /v1/proxies/stats", handlers.HandleGetStats)
mux.HandleFunc("GET /v1/proxies", handlers.HandleListProxies)
mux.HandleFunc("GET /v1/proxies/{id}", handlers.HandleGetProxy)
mux.HandleFunc("DELETE /v1/proxies/{id}", handlers.HandleDeleteProxy)
mux.HandleFunc("DELETE /v1/proxies", handlers.HandleBulkDeleteProxies)
mux.HandleFunc("PATCH /v1/proxies/{id}", handlers.HandleUpdateProxy)
mux.HandleFunc("POST /v1/proxies/{id}/test", handlers.HandleTestSingleProxy)
// 健康检查
mux.HandleFunc("GET /health", func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte(`{"status":"ok"}`))
})
// 应用中间件
var handler http.Handler = mux
handler = AuthMiddleware(handler, cfg.APIKey)
handler = LoggingMiddleware(handler)
return handler
}