Delete failed download link for next retry
This commit is contained in:
@@ -27,4 +27,5 @@ type Client interface {
|
|||||||
GetProfile() (*types.Profile, error)
|
GetProfile() (*types.Profile, error)
|
||||||
GetAvailableSlots() (int, error)
|
GetAvailableSlots() (int, error)
|
||||||
SyncAccounts() error // Updates each accounts details(like traffic, username, etc.)
|
SyncAccounts() error // Updates each accounts details(like traffic, username, etc.)
|
||||||
|
DeleteDownloadLink(account *account.Account, downloadLink types.DownloadLink) error
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -497,3 +497,8 @@ func (ad *AllDebrid) AccountManager() *account.Manager {
|
|||||||
func (ad *AllDebrid) SyncAccounts() error {
|
func (ad *AllDebrid) SyncAccounts() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ad *AllDebrid) DeleteDownloadLink(account *account.Account, downloadLink types.DownloadLink) error {
|
||||||
|
account.DeleteDownloadLink(downloadLink.Link)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -518,3 +518,8 @@ func (dl *DebridLink) AccountManager() *account.Manager {
|
|||||||
func (dl *DebridLink) SyncAccounts() error {
|
func (dl *DebridLink) SyncAccounts() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dl *DebridLink) DeleteDownloadLink(account *account.Account, downloadLink types.DownloadLink) error {
|
||||||
|
account.DeleteDownloadLink(downloadLink.Link)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -986,3 +986,20 @@ func (r *RealDebrid) syncAccount(account *account.Account) error {
|
|||||||
//r.accountsManager.Update(account)
|
//r.accountsManager.Update(account)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *RealDebrid) DeleteDownloadLink(account *account.Account, downloadLink types.DownloadLink) error {
|
||||||
|
url := fmt.Sprintf("%s/downloads/delete/%s", r.Host, downloadLink.Id)
|
||||||
|
req, _ := http.NewRequest(http.MethodDelete, url, nil)
|
||||||
|
resp, err := account.Client().Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer func(Body io.ReadCloser) {
|
||||||
|
_ = Body.Close()
|
||||||
|
}(resp.Body)
|
||||||
|
if resp.StatusCode != http.StatusNoContent {
|
||||||
|
return fmt.Errorf("realdebrid API error: %d", resp.StatusCode)
|
||||||
|
}
|
||||||
|
account.DeleteDownloadLink(downloadLink.Link)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -654,3 +654,8 @@ func (tb *Torbox) AccountManager() *account.Manager {
|
|||||||
func (tb *Torbox) SyncAccounts() error {
|
func (tb *Torbox) SyncAccounts() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (tb *Torbox) DeleteDownloadLink(account *account.Account, downloadLink types.DownloadLink) error {
|
||||||
|
account.DeleteDownloadLink(downloadLink.Link)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -172,6 +172,19 @@ func (c *Cache) MarkLinkAsInvalid(downloadLink types.DownloadLink, reason string
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
accountManager.Disable(account)
|
accountManager.Disable(account)
|
||||||
|
} else if reason == "link_not_found" {
|
||||||
|
// Let's try to delete the download link from the account, so we can fetch a new one next time
|
||||||
|
accountManager := c.client.AccountManager()
|
||||||
|
account, err := accountManager.GetAccount(downloadLink.Token)
|
||||||
|
if err != nil {
|
||||||
|
c.logger.Error().Err(err).Str("token", utils.Mask(downloadLink.Token)).Msg("Failed to get account to delete download link")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if account == nil {
|
||||||
|
c.logger.Error().Str("token", utils.Mask(downloadLink.Token)).Msg("Account not found to delete download link")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.client.DeleteDownloadLink(account, downloadLink)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user