summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorMartin Fietz <Martin.Fietz@gmail.com>2016-04-12 11:40:06 +0200
committerMartin Fietz <Martin.Fietz@gmail.com>2016-04-12 11:40:06 +0200
commit989f2e1c58c673ff92cf57207be6db83f2711093 (patch)
treec2ed6870c66077deb1f61c13d16459afb7d12d24 /core
parent93eba24d084d3774abe1eb46b396c10bf674be05 (diff)
downloadAntennaPod-989f2e1c58c673ff92cf57207be6db83f2711093.zip
Handle 403 Forbidden
Diffstat (limited to 'core')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java19
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/DownloadError.java4
-rw-r--r--core/src/main/res/values/strings.xml1
4 files changed, 18 insertions, 10 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
index 3f0112b56..0d038ed53 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
@@ -204,8 +204,10 @@ public class DownloadService extends Service {
FeedItem item = media.getItem();
boolean httpNotFound = status.getReason() == DownloadError.ERROR_HTTP_DATA_ERROR
&& String.valueOf(HttpURLConnection.HTTP_NOT_FOUND).equals(status.getReasonDetailed());
+ boolean forbidden = status.getReason() == DownloadError.ERROR_FORBIDDEN
+ && String.valueOf(HttpURLConnection.HTTP_FORBIDDEN).equals(status.getReasonDetailed());
boolean notEnoughSpace = status.getReason() == DownloadError.ERROR_NOT_ENOUGH_SPACE;
- if (httpNotFound || notEnoughSpace) {
+ if (httpNotFound || forbidden || notEnoughSpace) {
DBWriter.saveFeedItemAutoDownloadFailed(item).get();
}
// to make lists reload the failed item, we fake an item update
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 0faa3f7c1..cb0f8f1ea 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
@@ -124,14 +124,6 @@ public class HttpDownloader extends Downloader {
}
}
- if(request.getFeedfileType() == FeedMedia.FEEDFILETYPE_FEEDMEDIA) {
- String contentType = response.header("Content-Type");
- if(!contentType.startsWith("audio/") && !contentType.startsWith("video/")) {
- onFail(DownloadError.ERROR_FILE_TYPE, null);
- return;
- }
- }
-
responseBody = response.body();
String contentEncodingHeader = response.header("Content-Encoding");
boolean isGzip = false;
@@ -174,6 +166,9 @@ public class HttpDownloader extends Downloader {
if (response.code() == HttpURLConnection.HTTP_UNAUTHORIZED) {
error = DownloadError.ERROR_UNAUTHORIZED;
details = String.valueOf(response.code());
+ } else if(response.code() == HttpURLConnection.HTTP_FORBIDDEN) {
+ error = DownloadError.ERROR_FORBIDDEN;
+ details = String.valueOf(response.code());
} else {
error = DownloadError.ERROR_HTTP_DATA_ERROR;
details = String.valueOf(response.code());
@@ -187,6 +182,14 @@ public class HttpDownloader extends Downloader {
return;
}
+ if(request.getFeedfileType() == FeedMedia.FEEDFILETYPE_FEEDMEDIA) {
+ String contentType = response.header("Content-Type");
+ if(!contentType.startsWith("audio/") && !contentType.startsWith("video/")) {
+ onFail(DownloadError.ERROR_FILE_TYPE, null);
+ return;
+ }
+ }
+
connection = new BufferedInputStream(responseBody.byteStream());
String contentRangeHeader = (fileExists) ? response.header("Content-Range") : null;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/DownloadError.java b/core/src/main/java/de/danoeh/antennapod/core/util/DownloadError.java
index 4ad88743f..7779158e5 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/DownloadError.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/DownloadError.java
@@ -20,7 +20,9 @@ public enum DownloadError {
ERROR_REQUEST_ERROR(12, R.string.download_error_request_error),
ERROR_DB_ACCESS_ERROR(13, R.string.download_error_db_access),
ERROR_UNAUTHORIZED(14, R.string.download_error_unauthorized),
- ERROR_FILE_TYPE(15, R.string.download_error_file_type_type);
+ ERROR_FILE_TYPE(15, R.string.download_error_file_type_type),
+ ERROR_FORBIDDEN(16, R.string.download_error_forbidden);
+
private final int code;
private final int resId;
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index 4575f665e..9026e2129 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -177,6 +177,7 @@
<string name="download_error_unknown_host">Unknown Host</string>
<string name="download_error_unauthorized">Authentication Error</string>
<string name="download_error_file_type_type">File Type Error</string>
+ <string name="download_error_forbidden">Forbidden</string>
<string name="cancel_all_downloads_label">Cancel all downloads</string>
<string name="download_canceled_msg">Download canceled</string>
<string name="download_canceled_autodownload_enabled_msg">Download canceled\nDisabled <i>Auto Download</i> for this item</string>