From 7a10ef61e6142b76d6316ffc9e0247e98e316f5b Mon Sep 17 00:00:00 2001 From: YouROK <8yourok8@mail.ru> Date: Fri, 23 Apr 2021 11:11:37 +0300 Subject: [PATCH] fix http redirect to magnet --- server/web/api/utils/link.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/server/web/api/utils/link.go b/server/web/api/utils/link.go index bcf4486..ba2f004 100644 --- a/server/web/api/utils/link.go +++ b/server/web/api/utils/link.go @@ -74,17 +74,22 @@ func fromMagnet(link string) (*torrent.TorrentSpec, error) { }, nil } -func fromHttp(url string) (*torrent.TorrentSpec, error) { - req, err := http.NewRequest("GET", url, nil) +func fromHttp(link string) (*torrent.TorrentSpec, error) { + req, err := http.NewRequest("GET", link, nil) if err != nil { return nil, err } client := new(http.Client) - client.Timeout = time.Duration(time.Second * 30) + client.Timeout = time.Duration(time.Second * 120) req.Header.Set("User-Agent", "DWL/1.1.1 (Torrent)") resp, err := client.Do(req) + if er, ok := err.(*url.Error); ok { + if strings.HasPrefix(er.URL, "magnet:") { + return fromMagnet(er.URL) + } + } if err != nil { return nil, err }