feat(indexers): add support for optional baseurl override (#551)

* feat(indexers): optional baseurl override

* feat(indexers): update baseUrl parsing

* refactor(indexers): BREAKING move parse to IRC struct

* Move Parse as part of IRC struct from Indexer
* Updated definitions
* Build torrentUrl in stages
* Use new url.JoinPath to build torrentUrl
* Update tests

* refactor(indexers): select option obj

* refactor(indexers): make backwards compatible
This commit is contained in:
ze0s 2022-12-03 15:40:45 +01:00 committed by GitHub
parent 301180e55b
commit 25a165b764
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
66 changed files with 1533 additions and 1211 deletions

View file

@ -227,6 +227,7 @@ func (s *service) mapIndexer(indexer domain.Indexer) (*domain.IndexerDefinition,
d.Name = indexer.Name
d.Identifier = indexer.Identifier
d.Implementation = indexer.Implementation
d.BaseURL = indexer.BaseURL
d.Enabled = indexer.Enabled
if d.SettingsMap == nil {
@ -262,6 +263,7 @@ func (s *service) updateMapIndexer(indexer domain.Indexer) (*domain.IndexerDefin
d.Name = indexer.Name
d.Identifier = indexer.Identifier
d.Implementation = indexer.Implementation
d.BaseURL = indexer.BaseURL
d.Enabled = indexer.Enabled
if d.SettingsMap == nil {
@ -300,16 +302,14 @@ func (s *service) GetTemplates() ([]domain.IndexerDefinition, error) {
func (s *service) Start() error {
// load all indexer definitions
err := s.LoadIndexerDefinitions()
if err != nil {
if err := s.LoadIndexerDefinitions(); err != nil {
s.log.Error().Err(err).Msg("could not load indexer definitions")
return err
}
if s.config.CustomDefinitions != "" {
// load custom indexer definitions
err = s.LoadCustomIndexerDefinitions()
if err != nil {
if err := s.LoadCustomIndexerDefinitions(); err != nil {
return errors.Wrap(err, "could not load custom indexer definitions")
}
}
@ -356,8 +356,6 @@ func (s *service) removeIndexer(indexer domain.Indexer) {
// remove mapped definition
delete(s.mappedDefinitions, indexer.Identifier)
return
}
func (s *service) addIndexer(indexer domain.Indexer) error {
@ -465,16 +463,14 @@ func (s *service) LoadIndexerDefinitions() error {
s.log.Trace().Msgf("parsing: %v", file)
var d *domain.IndexerDefinition
data, err := fs.ReadFile(Definitions, file)
if err != nil {
s.log.Error().Stack().Err(err).Msgf("failed reading file: %v", file)
return errors.Wrap(err, "could not read file: %v", file)
}
err = yaml.Unmarshal(data, &d)
if err != nil {
var d domain.IndexerDefinition
if err = yaml.Unmarshal(data, &d); err != nil {
s.log.Error().Stack().Err(err).Msgf("failed unmarshal file: %v", file)
return errors.Wrap(err, "could not unmarshal file: %v", file)
}
@ -483,7 +479,7 @@ func (s *service) LoadIndexerDefinitions() error {
d.Implementation = "irc"
}
s.definitions[d.Identifier] = *d
s.definitions[d.Identifier] = d
}
s.log.Debug().Msgf("Loaded %d indexer definitions", len(s.definitions))
@ -524,14 +520,13 @@ func (s *service) LoadCustomIndexerDefinitions() error {
s.log.Trace().Msgf("parsing custom: %v", file)
//data, err := fs.ReadFile(Definitions, filePath)
data, err := os.ReadFile(file)
if err != nil {
s.log.Error().Stack().Err(err).Msgf("failed reading file: %v", file)
return errors.Wrap(err, "could not read file: %v", file)
}
var d *domain.IndexerDefinition
var d *domain.IndexerDefinitionCustom
if err = yaml.Unmarshal(data, &d); err != nil {
s.log.Error().Stack().Err(err).Msgf("failed unmarshal file: %v", file)
return errors.Wrap(err, "could not unmarshal file: %v", file)
@ -546,7 +541,12 @@ func (s *service) LoadCustomIndexerDefinitions() error {
d.Implementation = "irc"
}
s.definitions[d.Identifier] = *d
// to prevent crashing from non-updated definitions lets skip
if d.Implementation == "irc" && d.IRC.Parse == nil {
s.log.Warn().Msgf("DEPRECATED: indexer definition version: %v", file)
}
s.definitions[d.Identifier] = *d.ToIndexerDefinition()
customCount++
}