Set api client token statically, unrestrict client dynamically and download client nothing
This commit is contained in:
@@ -61,8 +61,8 @@ func MainApp(configPath string) {
|
||||
proxyURL = os.Getenv("PROXY")
|
||||
}
|
||||
|
||||
repoClient4 := http.NewHTTPClient(0, 1, false, []string{}, proxyURL, log.Named("network_test"))
|
||||
repoClient6 := http.NewHTTPClient(0, 1, true, []string{}, proxyURL, log.Named("network_test"))
|
||||
repoClient4 := http.NewHTTPClient("", 0, 1, false, []string{}, proxyURL, log.Named("network_test"))
|
||||
repoClient6 := http.NewHTTPClient("", 0, 1, true, []string{}, proxyURL, log.Named("network_test"))
|
||||
repo := http.NewIPRepository(repoClient4, repoClient6, "", log.Named("network_test"))
|
||||
|
||||
var hosts []string
|
||||
@@ -84,6 +84,7 @@ func MainApp(configPath string) {
|
||||
}
|
||||
|
||||
apiClient := http.NewHTTPClient(
|
||||
config.GetToken(),
|
||||
config.GetRetriesUntilFailed(), // default retries = 2
|
||||
config.GetApiTimeoutSecs(), // default api timeout = 60
|
||||
false, // no need for ipv6 support
|
||||
@@ -93,6 +94,7 @@ func MainApp(configPath string) {
|
||||
)
|
||||
|
||||
unrestrictClient := http.NewHTTPClient(
|
||||
"",
|
||||
config.GetRetriesUntilFailed(), // default retries = 2
|
||||
config.GetDownloadTimeoutSecs(), // default download timeout = 10
|
||||
false, // no need for ipv6 support
|
||||
@@ -102,6 +104,7 @@ func MainApp(configPath string) {
|
||||
)
|
||||
|
||||
downloadClient := http.NewHTTPClient(
|
||||
"",
|
||||
config.GetRetriesUntilFailed(),
|
||||
config.GetDownloadTimeoutSecs(),
|
||||
config.ShouldForceIPv6(),
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package torrent
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
@@ -207,6 +209,25 @@ func (t *TorrentManager) writeTorrentToFile(torrent *Torrent) {
|
||||
// t.log.Debugf("Saved torrent %s to file", t.GetKey(torrent))
|
||||
}
|
||||
|
||||
func (t *TorrentManager) sendTorrentToAPI(torrent *Torrent) {
|
||||
torrent.Version = t.requiredVersion
|
||||
jsonData, err := json.Marshal(torrent)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
req, err := http.NewRequest(
|
||||
"POST",
|
||||
"https://zurgtorrent.debridmediamanager.com/api/torrents",
|
||||
bytes.NewBuffer(jsonData),
|
||||
)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
client := &http.Client{}
|
||||
client.Do(req)
|
||||
}
|
||||
|
||||
func (t *TorrentManager) applyMediaInfoDetails(torrent *Torrent) error {
|
||||
changesApplied := false
|
||||
bwLimitReached := false
|
||||
@@ -241,6 +262,7 @@ func (t *TorrentManager) applyMediaInfoDetails(torrent *Torrent) error {
|
||||
})
|
||||
if changesApplied {
|
||||
t.writeTorrentToFile(torrent)
|
||||
t.sendTorrentToAPI(torrent)
|
||||
}
|
||||
if bwLimitReached {
|
||||
t.log.Warnf("Your account has reached the bandwidth limit, cannot apply media info details to the rest of the files")
|
||||
|
||||
@@ -12,7 +12,6 @@ import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/debridmediamanager/zurg/pkg/logutil"
|
||||
@@ -23,12 +22,12 @@ import (
|
||||
)
|
||||
|
||||
type HTTPClient struct {
|
||||
token string
|
||||
client *http.Client
|
||||
maxRetries int
|
||||
timeoutSecs int
|
||||
rateLimitSleepSecs int
|
||||
backoff func(attempt int) time.Duration
|
||||
token atomic.Value
|
||||
dnsCache cmap.ConcurrentMap[string, string]
|
||||
hosts []string
|
||||
log *logutil.Logger
|
||||
@@ -53,6 +52,7 @@ func (e *DownloadErrorResponse) Error() string {
|
||||
}
|
||||
|
||||
func NewHTTPClient(
|
||||
token string,
|
||||
maxRetries int,
|
||||
timeoutSecs int,
|
||||
forceIPv6 bool,
|
||||
@@ -61,6 +61,7 @@ func NewHTTPClient(
|
||||
log *logutil.Logger,
|
||||
) *HTTPClient {
|
||||
client := HTTPClient{
|
||||
token: token,
|
||||
client: &http.Client{},
|
||||
maxRetries: maxRetries,
|
||||
timeoutSecs: timeoutSecs,
|
||||
@@ -127,14 +128,9 @@ func NewHTTPClient(
|
||||
return &client
|
||||
}
|
||||
|
||||
func (r *HTTPClient) SetToken(token string) {
|
||||
r.token.Store(token)
|
||||
}
|
||||
|
||||
func (r *HTTPClient) Do(req *http.Request) (*http.Response, error) {
|
||||
token := r.token.Load()
|
||||
if token != nil && token.(string) != "" {
|
||||
req.Header.Set("Authorization", "Bearer "+token.(string))
|
||||
if r.token != "" {
|
||||
req.Header.Set("Authorization", "Bearer "+r.token)
|
||||
}
|
||||
|
||||
var resp *http.Response
|
||||
|
||||
@@ -49,8 +49,6 @@ func NewRealDebrid(apiClient, unrestrictClient, downloadClient *zurghttp.HTTPCli
|
||||
log: log,
|
||||
}
|
||||
|
||||
apiClient.SetToken(mainToken)
|
||||
unrestrictClient.SetToken(mainToken)
|
||||
for _, token := range downloadTokens {
|
||||
rd.UnrestrictMap.Set(token, cmap.New[*Download]())
|
||||
}
|
||||
@@ -88,7 +86,7 @@ func (rd *RealDebrid) UnrestrictAndVerify(link string) (*Download, error) {
|
||||
return download, nil
|
||||
}
|
||||
|
||||
download, err := rd.UnrestrictLink(link)
|
||||
download, err := rd.UnrestrictLinkWithToken(link, token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -111,7 +109,7 @@ func (rd *RealDebrid) UnrestrictAndVerify(link string) (*Download, error) {
|
||||
}
|
||||
}
|
||||
|
||||
func (rd *RealDebrid) UnrestrictLink(link string) (*Download, error) {
|
||||
func (rd *RealDebrid) UnrestrictLinkWithToken(link, token string) (*Download, error) {
|
||||
data := url.Values{}
|
||||
if strings.HasPrefix(link, "https://real-debrid.com/d/") {
|
||||
// set link to max 39 chars (26 + 13)
|
||||
@@ -126,6 +124,7 @@ func (rd *RealDebrid) UnrestrictLink(link string) (*Download, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req.Header.Set("Authorization", "Bearer "+token)
|
||||
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
|
||||
// at this point, any errors mean that the link has expired and we need to repair it
|
||||
|
||||
Reference in New Issue
Block a user