重构项目
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user