From 1002f328e2b216cc7e92b75eeaae5d2f89249fe5 Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Tue, 17 Sep 2019 08:18:34 +0200 Subject: [PATCH] Downloader: new offline mode --- changelog.md | 4 +++ src/be/nikiroo/utils/Downloader.java | 38 +++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/changelog.md b/changelog.md index e3852269..3fcdb762 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,9 @@ # nikiroo-utils +## Version WIP + +- Downloader: new Offline mode for cache accesses only + ## Version 5.0.0 - new: server: count the bytes we rec/send diff --git a/src/be/nikiroo/utils/Downloader.java b/src/be/nikiroo/utils/Downloader.java index 2a462a81..b1ac56c0 100644 --- a/src/be/nikiroo/utils/Downloader.java +++ b/src/be/nikiroo/utils/Downloader.java @@ -30,6 +30,7 @@ public class Downloader { private CookieManager cookies; private TraceHandler tracer = new TraceHandler(); private Cache cache; + private boolean offline; /** * Create a new {@link Downloader}. @@ -63,6 +64,32 @@ public class Downloader { setCache(cache); } + + /** + * This {@link Downloader} is forbidden to try and connect to the network. + *

+ * If TRUE, it will only check the cache if any. + *

+ * Default is FALSE. + * + * @return TRUE if offline + */ + public boolean isOffline() { + return offline; + } + + /** + * This {@link Downloader} is forbidden to try and connect to the network. + *

+ * If TRUE, it will only check the cache if any. + *

+ * Default is FALSE. + * + * @param offline TRUE for offline, FALSE for online + */ + public void setOffline(boolean offline) { + this.offline = offline; + } /** * The traces handler for this {@link Cache}. @@ -167,7 +194,7 @@ public class Downloader { * @return the {@link InputStream} of the opened page * * @throws IOException - * in case of I/O error + * in case of I/O error (including offline mode + not in cache) */ public InputStream open(URL url, URL currentReferer, Map cookiesValues, Map postParams, @@ -199,7 +226,7 @@ public class Downloader { * @return the {@link InputStream} of the opened page * * @throws IOException - * in case of I/O error + * in case of I/O error (including offline mode + not in cache) */ public InputStream open(URL url, URL currentReferer, Map cookiesValues, Map postParams, @@ -236,7 +263,7 @@ public class Downloader { * @return the {@link InputStream} of the opened page * * @throws IOException - * in case of I/O error + * in case of I/O error (including offline mode + not in cache) */ public InputStream open(URL url, final URL originalUrl, URL currentReferer, Map cookiesValues, Map postParams, @@ -254,6 +281,11 @@ public class Downloader { } } + if (offline) { + tracer.error("Downloader OFFLINE, cannot proceed to URL: " + url); + throw new IOException("Downloader is currently OFFLINE, cannot download: " + url); + } + tracer.trace("Download: " + url); URLConnection conn = openConnectionWithCookies(url, currentReferer, -- 2.27.0