diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-05 11:06:49 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-05 11:06:49 +0300 |
| commit | 48b02fbed5d519ca293537cd779127fec50735ce (patch) | |
| tree | 4cd5f1976ff531928e361a48de757a859e27c467 /internal/api/server.go | |
| parent | d7788e3bfb1bddc588c15ccd8fb0eb0e4c651d65 (diff) | |
Add podcast support backend: RSS/Atom feeds, episode management, cover scraping
Diffstat (limited to 'internal/api/server.go')
| -rw-r--r-- | internal/api/server.go | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/internal/api/server.go b/internal/api/server.go index c1a79d4..8f8c260 100644 --- a/internal/api/server.go +++ b/internal/api/server.go @@ -30,6 +30,7 @@ type Server struct { adminSvc service.AdminService progressSvc service.ProgressService authSvc service.AuthService + podcastSvc service.PodcastEpisodeService staticFS http.FileSystem remuxer probe.Remuxer logger *slog.Logger @@ -52,10 +53,11 @@ func NewServer( adminSvc service.AdminService, progressSvc service.ProgressService, authSvc service.AuthService, + podcastSvc service.PodcastEpisodeService, staticFS http.FileSystem, remuxer probe.Remuxer, ) *Server { - return NewServerWithLogger(store, hasher, sm, cfg, browseSvc, writeSvc, shareSvc, tagSvc, favSvc, noteSvc, adminSvc, progressSvc, authSvc, staticFS, remuxer, slog.Default()) + return NewServerWithLogger(store, hasher, sm, cfg, browseSvc, writeSvc, shareSvc, tagSvc, favSvc, noteSvc, adminSvc, progressSvc, authSvc, podcastSvc, staticFS, remuxer, slog.Default()) } // NewServerWithLogger creates a Server with routes and an injected logger. @@ -73,6 +75,7 @@ func NewServerWithLogger( adminSvc service.AdminService, progressSvc service.ProgressService, authSvc service.AuthService, + podcastSvc service.PodcastEpisodeService, staticFS http.FileSystem, remuxer probe.Remuxer, logger *slog.Logger, @@ -98,6 +101,7 @@ func NewServerWithLogger( adminSvc: adminSvc, progressSvc: progressSvc, authSvc: authSvc, + podcastSvc: podcastSvc, staticFS: staticFS, remuxer: remuxer, logger: logger, @@ -239,6 +243,16 @@ func (s *Server) routes() { s.routesProgress() s.routesShares() s.routesAdmin() + s.routesPodcast() +} + +// routesPodcast wires the podcast API routes. +func (s *Server) routesPodcast() { + s.mux.Handle("GET /api/podcasts", s.requireSession(s.handleListPodcasts)) + s.mux.Handle("POST /api/podcasts", s.requireAdmin(s.handleSubscribePodcast)) + s.mux.Handle("GET /api/podcasts/{id}/episodes", s.requireSession(s.handleListEpisodes)) + s.mux.Handle("POST /api/podcasts/episodes/{episode_id}/download", s.requireSession(s.handleDownloadEpisode)) + s.mux.Handle("POST /api/podcasts/episodes/{episode_id}/complete", s.requireSession(s.handleToggleComplete)) } func (s *Server) pingStore(ctx context.Context) error { |
