mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 00:39:13 +00:00

* 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
67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
package server
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"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 {
|
|
Hostname string
|
|
Port int
|
|
|
|
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, 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
|
|
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
|
|
}
|
|
|
|
func (s *Server) Shutdown() {
|
|
log.Info().Msg("Shutting down server")
|
|
|
|
// stop all irc handlers
|
|
s.ircService.StopHandlers()
|
|
|
|
// stop cron scheduler
|
|
s.scheduler.Stop()
|
|
}
|