summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorMartin Fietz <marf@hadiko-99-4.hadiko.uni-karlsruhe.de>2015-03-27 19:39:19 +0100
committerMartin Fietz <marf@hadiko-99-4.hadiko.uni-karlsruhe.de>2015-03-27 19:39:19 +0100
commit95b0393a62e12956cb72740b301f6fee846a6cba (patch)
treebce93f25e9a31f3c00ec21ebae128c6bf2c0d2e7 /core/src
parentae138e2b1cb769d352bd1bb76b5c0e6af928ecb1 (diff)
downloadAntennaPod-95b0393a62e12956cb72740b301f6fee846a6cba.zip
Refresh at least every 3 days
Diffstat (limited to 'core/src')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java14
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java7
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java11
3 files changed, 20 insertions, 12 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
index 4cacb1465..7abb6df5e 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
@@ -22,7 +22,6 @@ import java.net.HttpURLConnection;
import java.net.SocketTimeoutException;
import java.net.URI;
import java.net.UnknownHostException;
-import java.text.SimpleDateFormat;
import java.util.Date;
import de.danoeh.antennapod.core.BuildConfig;
@@ -68,10 +67,13 @@ public class HttpDownloader extends Downloader {
Request.Builder httpReq = new Request.Builder().url(uri.toURL())
.header("User-Agent", ClientConfig.USER_AGENT);
if(request.getIfModifiedSince() > 0) {
- Date date = new Date(request.getIfModifiedSince());
- Log.d(TAG, "Header If-Modified-Since: "
- + new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z").format(date));
- httpReq.addHeader("If-Modified-Since", HttpDate.format(date));
+ long threeDaysAgo = System.currentTimeMillis() - 1000*60*60*24*3;
+ if(request.getIfModifiedSince() > threeDaysAgo) {
+ Date date = new Date(request.getIfModifiedSince());
+ String httpDate = HttpDate.format(date);
+ Log.d(TAG, "addHeader(\"If-Modified-Since\", \"" + httpDate + "\")");
+ httpReq.addHeader("If-Modified-Since", httpDate);
+ }
}
// add authentication information
@@ -106,7 +108,7 @@ public class HttpDownloader extends Downloader {
Log.d(TAG, "Response code is " + response.code());
if(!response.isSuccessful() && response.code() == HttpURLConnection.HTTP_NOT_MODIFIED) {
- Log.d(TAG, "Feed not modified since last update, Download canceled");
+ Log.d(TAG, "Feed '" + request.getSource() + "' not modified since last update, Download canceled");
onCancelled();
return;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
index e73f9599d..e0e370b0d 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
@@ -298,7 +298,8 @@ public final class DBTasks {
}
/**
- * Updates a specific Feed.
+ * Refresh a specific Feed. The refresh may get canceled if the feed does not seem to be modified
+ * and the last update was only few days ago.
*
* @param context Used for requesting the download.
* @param feed The Feed object.
@@ -311,9 +312,9 @@ public final class DBTasks {
private static void refreshFeed(Context context, Feed feed, boolean loadAllPages) throws DownloadRequestException {
Feed f;
if (feed.getPreferences() == null) {
- f = new Feed(feed.getDownload_url(), new Date(), feed.getTitle());
+ f = new Feed(feed.getDownload_url(), feed.getLastUpdate(), feed.getTitle());
} else {
- f = new Feed(feed.getDownload_url(), new Date(), feed.getTitle(),
+ f = new Feed(feed.getDownload_url(), feed.getLastUpdate(), feed.getTitle(),
feed.getPreferences().getUsername(), feed.getPreferences().getPassword());
}
f.setId(feed.getId());
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
index 7182cfe99..ca6aa0178 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
@@ -11,7 +11,6 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
import java.io.File;
-import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -160,13 +159,19 @@ public class DownloadRequester {
return true;
}
+ /**
+ * Downloads a feed
+ *
+ * @param context The application's environment.
+ * @param feed Feed to download
+ * @param loadAllPages Set to true to download all pages
+ */
public synchronized void downloadFeed(Context context, Feed feed, boolean loadAllPages)
throws DownloadRequestException {
if (feedFileValid(feed)) {
String username = (feed.getPreferences() != null) ? feed.getPreferences().getUsername() : null;
String password = (feed.getPreferences() != null) ? feed.getPreferences().getPassword() : null;
- Date lastUpdate = feed.getLastUpdate();
- long ifModifiedSince = lastUpdate.getTime() - 30; // account for some processing time
+ long ifModifiedSince = feed.getLastUpdate().getTime();
Bundle args = new Bundle();
args.putInt(REQUEST_ARG_PAGE_NR, feed.getPageNr());