From 6a9e0198a2ed279c0273122db702b61c31544ff8 Mon Sep 17 00:00:00 2001 From: seven332 Date: Wed, 7 Aug 2019 11:05:38 +0800 Subject: [PATCH] Add cookie to torrent request --- .../hippo/ehviewer/ui/scene/GalleryDetailScene.java | 2 ++ .../java/com/hippo/network/CookieRepository.java | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java index 12576cd2c..96d826800 100755 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java @@ -116,6 +116,7 @@ import java.io.OutputStream; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.List; +import okhttp3.HttpUrl; public class GalleryDetailScene extends BaseScene implements View.OnClickListener, com.hippo.ehviewer.download.DownloadManager.DownloadInfoListener, @@ -1875,6 +1876,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene FileUtils.sanitizeFilename(name + ".torrent")); r.allowScanningByMediaScanner(); r.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); + r.addRequestHeader("Cookie", EhApplication.getEhCookieStore(context).getCookieHeader(HttpUrl.get(url))); DownloadManager dm = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); if (dm != null) { try { diff --git a/app/src/main/java/com/hippo/network/CookieRepository.java b/app/src/main/java/com/hippo/network/CookieRepository.java index d776a745e..cea756ee7 100644 --- a/app/src/main/java/com/hippo/network/CookieRepository.java +++ b/app/src/main/java/com/hippo/network/CookieRepository.java @@ -85,6 +85,19 @@ public class CookieRepository implements CookieJar { } } + public String getCookieHeader(HttpUrl url) { + List cookies = getCookies(url); + StringBuilder cookieHeader = new StringBuilder(); + for (int i = 0, size = cookies.size(); i < size; i++) { + if (i > 0) { + cookieHeader.append("; "); + } + Cookie cookie = cookies.get(i); + cookieHeader.append(cookie.name()).append('=').append(cookie.value()); + } + return cookieHeader.toString(); + } + public synchronized List getCookies(HttpUrl url) { List accepted = new ArrayList<>(); List expired = new ArrayList<>();