fix(playback): restore playback service and handle chunked proxy responses

This commit is contained in:
2026-05-01 17:27:51 +02:00
committed by Mikkel Elvers
parent 394aad7793
commit 33a939ca81
2 changed files with 11 additions and 2 deletions

View File

@@ -5,6 +5,7 @@ import (
"fmt"
"io"
"net/http"
"strconv"
"strings"
)
@@ -40,11 +41,16 @@ func (s *Service) ProxyStream(ctx context.Context, targetURL string, referer str
}
headers := cloneHeaders(resp.Header)
headers.Del("Content-Length")
headers.Del("Transfer-Encoding")
headers.Set("Content-Type", "application/vnd.apple.mpegurl")
headers.Set("Content-Length", strconv.Itoa(len(rewritten)))
return resp.StatusCode, headers, []byte(rewritten), nil, nil
}
headers := cloneHeaders(resp.Header)
// Some upstream servers send transfer-encoding chunked, we should let go's http server handle it
headers.Del("Transfer-Encoding")
return resp.StatusCode, headers, nil, resp.Body, nil
}
@@ -58,7 +64,6 @@ func isM3U8(targetURL string, contentType string) bool {
var hopHeaders = map[string]struct{}{
"connection": {},
"transfer-encoding": {},
"keep-alive": {},
"proxy-authenticate": {},
"proxy-authorization": {},

View File

@@ -52,7 +52,11 @@ func NewRouter(cfg Config) http.Handler {
middleware.InitAuth(cfg.AuthService)
animeHandler := anime.NewHandler(cfg.JikanClient, cfg.DB)
playbackHandler := playback.NewHandler(nil, cfg.JikanClient)
playbackSvc := playback.NewService(cfg.DB, cfg.SQLDB, playback.Config{
ProxyTokenSecret: cfg.PlaybackProxySecret,
})
playbackHandler := playback.NewHandler(playbackSvc, cfg.JikanClient)
// Serve static files
fs := http.FileServer(http.Dir("./static"))