重构项目

This commit is contained in:
ExplodingDragon
2025-11-15 01:09:25 +08:00
parent d67dbf88ae
commit 3492dead8d
34 changed files with 715 additions and 444 deletions

View File

@@ -15,19 +15,22 @@ import (
"go.uber.org/zap"
"gopkg.d7z.net/gitea-pages/pkg/core"
"gopkg.d7z.net/gitea-pages/pkg/filters"
"gopkg.d7z.net/middleware/cache"
"gopkg.d7z.net/middleware/kv"
"gopkg.d7z.net/middleware/tools"
)
var portExp = regexp.MustCompile(`:\d+$`)
type Server struct {
backend core.Backend
meta *core.PageDomain
errorHandler func(w http.ResponseWriter, r *http.Request, err error)
backend core.Backend
meta *core.PageDomain
db kv.CursorPagedKV
filterMgr map[string]core.FilterInstance
globCache *lru.Cache[string, glob.Glob]
cacheBlob cache.Cache
errorHandler func(w http.ResponseWriter, r *http.Request, err error)
}
func NewPageServer(
@@ -35,27 +38,26 @@ func NewPageServer(
backend core.Backend,
domain string,
defaultBranch string,
db kv.KV,
cache kv.KV,
db kv.CursorPagedKV,
cacheMeta kv.KV,
cacheTTL time.Duration,
cacheBlob cache.Cache,
errorHandler func(w http.ResponseWriter, r *http.Request, err error),
) *Server {
svcMeta := core.NewServerMeta(client, backend, domain, cache, cacheTTL)
cfgDB := db.Child("config")
pageMeta := core.NewPageDomain(svcMeta,
core.NewDomainAlias(cfgDB.Child("alias")),
cfgDB.Child("pages"),
domain, defaultBranch)
c, err := lru.New[string, glob.Glob](256)
svcMeta := core.NewServerMeta(client, backend, domain, cacheMeta, cacheTTL)
pageMeta := core.NewPageDomain(svcMeta, core.NewDomainAlias(db.Child("config").Child("alias")), domain, defaultBranch)
globCache, err := lru.New[string, glob.Glob](256)
if err != nil {
panic(err)
}
return &Server{
backend: backend,
meta: pageMeta,
globCache: c,
db: db,
globCache: globCache,
filterMgr: filters.DefaultFilters(),
errorHandler: errorHandler,
cacheBlob: cacheBlob,
}
}
@@ -88,6 +90,16 @@ func (s *Server) Serve(writer http.ResponseWriter, request *http.Request) error
if err != nil {
return err
}
filterCtx := core.FilterContext{
PageContent: meta,
Context: request.Context(),
PageVFS: core.NewPageVFS(s.backend, meta.Owner, meta.Repo, meta.CommitID),
Cache: tools.NewTTLCache(s.cacheBlob.Child("filter").Child(meta.Owner).Child(meta.Repo).Child(meta.CommitID), time.Minute),
OrgDB: s.db.Child("org").Child(meta.Owner).(kv.CursorPagedKV),
RepoDB: s.db.Child("repo").Child(meta.Owner).Child(meta.Repo).(kv.CursorPagedKV),
}
zap.L().Debug("new request", zap.Any("request path", meta.Path))
if strings.HasSuffix(meta.Path, "/") || meta.Path == "" {
@@ -133,6 +145,6 @@ func (s *Server) Serve(writer http.ResponseWriter, request *http.Request) error
for i, filter := range activeFiltersCall {
stack = core.NextCallWrapper(filter, stack, activeFilters[i])
}
err = stack(ctx, writer, request, meta)
err = stack(filterCtx, writer, request)
return err
}