feat: add torznab feed support (#246)

* feat(torznab): initial impl

* feat: torznab processing

* feat: torznab more scheduling

* feat: feeds web

* feat(feeds): create on indexer create

* feat(feeds): update migration

* feat(feeds): restart on update

* feat(feeds): set cron schedule

* feat(feeds): use basic empty state

* chore: remove duplicate migrations

* feat: parse release size from torznab

* chore: cleanup unused code
This commit is contained in:
Ludvig Lundgren 2022-04-25 12:58:54 +02:00 committed by GitHub
parent d4d864cd2c
commit bb62e724a1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
34 changed files with 2408 additions and 361 deletions

View file

@ -3,10 +3,12 @@ package server
import (
"sync"
"github.com/rs/zerolog/log"
"github.com/autobrr/autobrr/internal/feed"
"github.com/autobrr/autobrr/internal/indexer"
"github.com/autobrr/autobrr/internal/irc"
"github.com/autobrr/autobrr/internal/scheduler"
"github.com/rs/zerolog/log"
)
type Server struct {
@ -15,30 +17,42 @@ type Server struct {
indexerService indexer.Service
ircService irc.Service
feedService feed.Service
scheduler scheduler.Service
stopWG sync.WaitGroup
lock sync.Mutex
}
func NewServer(ircSvc irc.Service, indexerSvc indexer.Service) *Server {
func NewServer(ircSvc irc.Service, indexerSvc indexer.Service, feedSvc feed.Service, scheduler scheduler.Service) *Server {
return &Server{
indexerService: indexerSvc,
ircService: ircSvc,
feedService: feedSvc,
scheduler: scheduler,
}
}
func (s *Server) Start() error {
log.Info().Msgf("Starting server. Listening on %v:%v", s.Hostname, s.Port)
// start cron scheduler
s.scheduler.Start()
// instantiate indexers
err := s.indexerService.Start()
if err != nil {
if err := s.indexerService.Start(); err != nil {
log.Error().Err(err).Msg("Could not start indexer service")
return err
}
// instantiate and start irc networks
s.ircService.StartHandlers()
// start torznab feeds
if err := s.feedService.Start(); err != nil {
log.Error().Err(err).Msg("Could not start feed service")
}
return nil
}
@ -47,4 +61,7 @@ func (s *Server) Shutdown() {
// stop all irc handlers
s.ircService.StopHandlers()
// stop cron scheduler
s.scheduler.Stop()
}