diff --git a/internal/config/config.go b/internal/config/config.go index 1c3a75e..9268ad7 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -115,9 +115,9 @@ func (c *Config) loadConfig() error { c.Auth = c.GetAuth() //Validate the config - //if err := validateConfig(c); err != nil { - // return err - //} + if err := validateConfig(c); err != nil { + return err + } return nil } @@ -143,13 +143,13 @@ func validateDebrids(debrids []Debrid) error { } // Check folder existence concurrently - wg.Add(1) - go func(folder string) { - defer wg.Done() - if _, err := os.Stat(folder); os.IsNotExist(err) { - errChan <- fmt.Errorf("debrid folder does not exist: %s", folder) - } - }(debrid.Folder) + //wg.Add(1) + //go func(folder string) { + // defer wg.Done() + // if _, err := os.Stat(folder); os.IsNotExist(err) { + // errChan <- fmt.Errorf("debrid folder does not exist: %s", folder) + // } + //}(debrid.Folder) } // Wait for all checks to complete diff --git a/internal/request/request.go b/internal/request/request.go index 3164d29..08fffb3 100644 --- a/internal/request/request.go +++ b/internal/request/request.go @@ -3,6 +3,7 @@ package request import ( "crypto/tls" "encoding/json" + "errors" "fmt" "golang.org/x/time/rate" "io" @@ -109,7 +110,7 @@ func (c *RLHTTPClient) MakeRequest(req *http.Request) ([]byte, error) { if !statusOk { // Add status code error to the body b = append(b, []byte(fmt.Sprintf("\nstatus code: %d", res.StatusCode))...) - return nil, fmt.Errorf(string(b)) + return nil, errors.New(string(b)) } return b, nil @@ -160,5 +161,8 @@ func ParseRateLimit(rateStr string) *rate.Limiter { func JSONResponse(w http.ResponseWriter, data interface{}, code int) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(code) - json.NewEncoder(w).Encode(data) + err := json.NewEncoder(w).Encode(data) + if err != nil { + return + } } diff --git a/pkg/arr/history.go b/pkg/arr/history.go index 54e006a..8d22bf4 100644 --- a/pkg/arr/history.go +++ b/pkg/arr/history.go @@ -2,8 +2,10 @@ package arr import ( "encoding/json" + "io" "net/http" gourl "net/url" + "strconv" "strings" ) @@ -77,24 +79,43 @@ func (a *Arr) GetQueue() []QueueSchema { query.Add("page", "1") query.Add("pageSize", "200") results := make([]QueueSchema, 0) + for { url := "api/v3/queue" + "?" + query.Encode() resp, err := a.Request(http.MethodGet, url, nil) if err != nil { break } - defer resp.Body.Close() - var data QueueResponseScheme - if err = json.NewDecoder(resp.Body).Decode(&data); err != nil { - break - } - if len(results) < data.TotalRecords { + + func() { + defer func(Body io.ReadCloser) { + err := Body.Close() + if err != nil { + return + } + }(resp.Body) + + var data QueueResponseScheme + if err = json.NewDecoder(resp.Body).Decode(&data); err != nil { + return + } + results = append(results, data.Records...) - query.Set("page", string(rune(data.Page+1))) - } else { + + if len(results) >= data.TotalRecords { + // We've fetched all records + err = io.EOF // Signal to exit the loop + return + } + + query.Set("page", strconv.Itoa(data.Page+1)) + }() + + if err != nil { break } } + return results } @@ -133,13 +154,11 @@ func (a *Arr) CleanupQueue() error { } queueIds := make([]int, 0) - episodesIds := make([]int, 0) for _, c := range cleanups { // Delete the messed up episodes from queue for _, m := range c { queueIds = append(queueIds, m.id) - episodesIds = append(episodesIds, m.episodeId) } } diff --git a/pkg/debrid/debrid_link/debrid_link.go b/pkg/debrid/debrid_link/debrid_link.go index fd4058f..e2c399a 100644 --- a/pkg/debrid/debrid_link/debrid_link.go +++ b/pkg/debrid/debrid_link/debrid_link.go @@ -110,7 +110,7 @@ func (dl *DebridLink) GetTorrent(id string) (*torrent.Torrent, error) { if err != nil { return t, err } - if res.Success == false { + if !res.Success { return t, fmt.Errorf("error getting torrent") } if res.Value == nil { @@ -168,7 +168,7 @@ func (dl *DebridLink) SubmitMagnet(t *torrent.Torrent) (*torrent.Torrent, error) if err != nil { return nil, err } - if res.Success == false || res.Value == nil { + if !res.Success || res.Value == nil { return nil, fmt.Errorf("error adding torrent") } data := *res.Value diff --git a/pkg/debrid/realdebrid/realdebrid.go b/pkg/debrid/realdebrid/realdebrid.go index 27e219b..2298b6f 100644 --- a/pkg/debrid/realdebrid/realdebrid.go +++ b/pkg/debrid/realdebrid/realdebrid.go @@ -151,7 +151,9 @@ func (r *RealDebrid) SubmitMagnet(t *torrent.Torrent) (*torrent.Torrent, error) if err != nil { return nil, err } - err = json.Unmarshal(resp, &data) + if err = json.Unmarshal(resp, &data); err != nil { + return nil, err + } t.Id = data.Id t.Debrid = r.Name t.MountPath = r.MountPath @@ -201,7 +203,9 @@ func (r *RealDebrid) CheckStatus(t *torrent.Torrent, isSymlink bool) (*torrent.T return t, err } var data TorrentInfo - err = json.Unmarshal(resp, &data) + if err = json.Unmarshal(resp, &data); err != nil { + return t, err + } status := data.Status name := utils.RemoveInvalidChars(data.OriginalFilename) t.Name = name // Important because some magnet changes the name diff --git a/pkg/qbit/http.go b/pkg/qbit/http.go index f58a10f..ea5b6a7 100644 --- a/pkg/qbit/http.go +++ b/pkg/qbit/http.go @@ -46,8 +46,7 @@ func (q *QBit) CategoryContext(next http.Handler) http.Handler { category = r.FormValue("category") } } - ctx := r.Context() - ctx = context.WithValue(r.Context(), "category", strings.TrimSpace(category)) + ctx := context.WithValue(r.Context(), "category", strings.TrimSpace(category)) next.ServeHTTP(w, r.WithContext(ctx)) }) } diff --git a/pkg/qbit/qbit.go b/pkg/qbit/qbit.go index 4674c23..7493f29 100644 --- a/pkg/qbit/qbit.go +++ b/pkg/qbit/qbit.go @@ -16,7 +16,6 @@ type QBit struct { DownloadFolder string `json:"download_folder"` Categories []string `json:"categories"` Storage *TorrentStorage - debug bool logger zerolog.Logger Tags []string RefreshInterval int diff --git a/pkg/qbit/torrent.go b/pkg/qbit/torrent.go index de5fed1..5d3016c 100644 --- a/pkg/qbit/torrent.go +++ b/pkg/qbit/torrent.go @@ -169,14 +169,10 @@ func (q *QBit) UpdateTorrentMin(t *Torrent, debridTorrent *debrid.Torrent) *Torr } func (q *QBit) UpdateTorrent(t *Torrent, debridTorrent *debrid.Torrent) *Torrent { - _db := service.GetDebrid().GetByName(debridTorrent.Debrid) - if debridTorrent == nil && t.ID != "" { - debridTorrent, _ = _db.GetTorrent(t.ID) - } if debridTorrent == nil { - q.logger.Info().Msgf("Torrent with ID %s not found in %s", t.ID, _db.GetName()) return t } + _db := service.GetDebrid().GetByName(debridTorrent.Debrid) if debridTorrent.Status != "downloaded" { debridTorrent, _ = _db.GetTorrent(t.ID) } diff --git a/pkg/worker/worker.go b/pkg/worker/worker.go index 38e4a5b..e573c17 100644 --- a/pkg/worker/worker.go +++ b/pkg/worker/worker.go @@ -82,16 +82,16 @@ func cleanUpQueuesWorker(ctx context.Context, cfg *config.Config) { } } -func refreshArrs() { - for _, a := range service.GetService().Arr.GetAll() { - err := a.Refresh() - if err != nil { - _logger := getLogger() - _logger.Debug().Err(err).Msg("Error refreshing arr") - return - } - } -} +//func refreshArrs() { +// for _, a := range service.GetService().Arr.GetAll() { +// err := a.Refresh() +// if err != nil { +// _logger := getLogger() +// _logger.Debug().Err(err).Msg("Error refreshing arr") +// return +// } +// } +//} func cleanUpQueues() { // Clean up queues