Fix duplicate links for files

This commit is contained in:
Mukhtar Akere
2025-03-24 20:39:35 +01:00
parent 9469c98df7
commit 56bca562f4
5 changed files with 83 additions and 23 deletions

View File

@@ -13,12 +13,14 @@ import (
type WebDav struct {
Handlers []*Handler
ready chan struct{}
}
func New() *WebDav {
svc := service.GetService()
w := &WebDav{
Handlers: make([]*Handler, 0),
ready: make(chan struct{}),
}
for name, c := range svc.Debrid.Caches {
h := NewHandler(name, c, logger.NewLogger(fmt.Sprintf("%s-webdav", name)))
@@ -38,6 +40,22 @@ func (wd *WebDav) Routes() http.Handler {
wr := chi.NewRouter()
wr.Use(wd.commonMiddleware)
// Create a readiness check middleware
readinessMiddleware := func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
select {
case <-wd.ready:
// WebDAV is ready, proceed
next.ServeHTTP(w, r)
default:
// WebDAV is still initializing
w.Header().Set("Retry-After", "10")
http.Error(w, "WebDAV service is initializing, please try again shortly", http.StatusServiceUnavailable)
}
})
}
wr.Use(readinessMiddleware)
wd.setupRootHandler(wr)
wd.mountHandlers(wr)
@@ -65,6 +83,9 @@ func (wd *WebDav) Start(ctx context.Context) error {
go func() {
wg.Wait()
close(errChan)
// Signal that WebDAV is ready
close(wd.ready)
}()
// Collect all errors