From da8e03258d70c7e129aae81661a0a7e21d970ff5 Mon Sep 17 00:00:00 2001 From: yusing Date: Sun, 4 Jan 2026 12:43:05 +0800 Subject: [PATCH] refactor(state): replace Entrypoint method with ShortLinkMatcher interface - Cleaned up agent go.mod by removing unused indirect dependencies. --- internal/config/state.go | 4 ++-- internal/config/types/state.go | 9 +++++++-- internal/route/fileserver.go | 4 ++-- internal/route/reverse_proxy.go | 8 ++++---- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/internal/config/state.go b/internal/config/state.go index 72633a5a..bf3e027b 100644 --- a/internal/config/state.go +++ b/internal/config/state.go @@ -140,8 +140,8 @@ func (state *state) EntrypointHandler() http.Handler { return &state.entrypoint } -func (state *state) Entrypoint() *entrypoint.Entrypoint { - return &state.entrypoint +func (state *state) ShortLinkMatcher() config.ShortLinkMatcher { + return state.entrypoint.ShortLinkMatcher() } // AutoCertProvider returns the autocert provider. diff --git a/internal/config/types/state.go b/internal/config/types/state.go index 9be9ad62..06b26111 100644 --- a/internal/config/types/state.go +++ b/internal/config/types/state.go @@ -6,7 +6,6 @@ import ( "iter" "net/http" - "github.com/yusing/godoxy/internal/entrypoint" "github.com/yusing/godoxy/internal/types" "github.com/yusing/goutils/server" "github.com/yusing/goutils/synk" @@ -23,7 +22,7 @@ type State interface { Value() *Config EntrypointHandler() http.Handler - Entrypoint() *entrypoint.Entrypoint + ShortLinkMatcher() ShortLinkMatcher AutoCertProvider() server.CertProvider LoadOrStoreProvider(key string, value types.RouteProvider) (actual types.RouteProvider, loaded bool) @@ -35,6 +34,12 @@ type State interface { FlushTmpLog() } +type ShortLinkMatcher interface { + AddRoute(alias string) + DelRoute(alias string) + ServeHTTP(w http.ResponseWriter, r *http.Request) +} + // could be nil before first call on Load var ActiveState synk.Value[State] diff --git a/internal/route/fileserver.go b/internal/route/fileserver.go index c5dd4087..b6a97aea 100644 --- a/internal/route/fileserver.go +++ b/internal/route/fileserver.go @@ -126,12 +126,12 @@ func (s *FileServer) Start(parent task.Parent) gperr.Error { routes.HTTP.Add(s) if state := config.WorkingState.Load(); state != nil { - state.Entrypoint().ShortLinkMatcher().AddRoute(s.Alias) + state.ShortLinkMatcher().AddRoute(s.Alias) } s.task.OnFinished("remove_route_from_http", func() { routes.HTTP.Del(s) if state := config.WorkingState.Load(); state != nil { - state.Entrypoint().ShortLinkMatcher().DelRoute(s.Alias) + state.ShortLinkMatcher().DelRoute(s.Alias) } }) return nil diff --git a/internal/route/reverse_proxy.go b/internal/route/reverse_proxy.go index b99687c5..4bc37866 100755 --- a/internal/route/reverse_proxy.go +++ b/internal/route/reverse_proxy.go @@ -168,12 +168,12 @@ func (r *ReveseProxyRoute) Start(parent task.Parent) gperr.Error { } else { routes.HTTP.Add(r) if state := config.WorkingState.Load(); state != nil { - state.Entrypoint().ShortLinkMatcher().AddRoute(r.Alias) + state.ShortLinkMatcher().AddRoute(r.Alias) } r.task.OnCancel("remove_route", func() { routes.HTTP.Del(r) if state := config.WorkingState.Load(); state != nil { - state.Entrypoint().ShortLinkMatcher().DelRoute(r.Alias) + state.ShortLinkMatcher().DelRoute(r.Alias) } }) } @@ -216,12 +216,12 @@ func (r *ReveseProxyRoute) addToLoadBalancer(parent task.Parent) { linked.SetHealthMonitor(lb) routes.HTTP.AddKey(cfg.Link, linked) if state := config.WorkingState.Load(); state != nil { - state.Entrypoint().ShortLinkMatcher().AddRoute(cfg.Link) + state.ShortLinkMatcher().AddRoute(cfg.Link) } r.task.OnFinished("remove_loadbalancer_route", func() { routes.HTTP.DelKey(cfg.Link) if state := config.WorkingState.Load(); state != nil { - state.Entrypoint().ShortLinkMatcher().DelRoute(cfg.Link) + state.ShortLinkMatcher().DelRoute(cfg.Link) } }) lbLock.Unlock()