Handle 403 Forbidden

This commit is contained in:
Martin Fietz 2016-04-12 11:40:06 +02:00
parent 93eba24d08
commit 989f2e1c58
4 changed files with 18 additions and 10 deletions

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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>