Delete file when exception is thrown

This commit is contained in:
len 2016-06-09 15:46:08 +02:00
parent 2d1e85f280
commit 682a2c7546

View file

@ -258,16 +258,17 @@ class DownloadManager(private val context: Context, private val sourceManager: S
private fun downloadImage(page: Page, source: OnlineSource, directory: File, filename: String): Observable<Page> { private fun downloadImage(page: Page, source: OnlineSource, directory: File, filename: String): Observable<Page> {
page.status = Page.DOWNLOAD_IMAGE page.status = Page.DOWNLOAD_IMAGE
return source.imageResponse(page) return source.imageResponse(page)
.flatMap { .map {
val file = File(directory, filename)
try { try {
val file = File(directory, filename)
file.parentFile.mkdirs() file.parentFile.mkdirs()
it.body().source().saveImageTo(file.outputStream(), preferences.reencodeImage()) it.body().source().saveImageTo(file.outputStream(), preferences.reencodeImage())
} catch (e: Exception) { } catch (e: Exception) {
it.body().close() it.close()
file.delete()
throw e throw e
} }
Observable.just(page) page
} }
.retryWhen { .retryWhen {
it.zipWith(Observable.range(1, 3)) { errors, retries -> retries } it.zipWith(Observable.range(1, 3)) { errors, retries -> retries }