From 04029d50dbf84956df75581855097025bfced3bf Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Tue, 9 Nov 2021 11:43:16 +0100 Subject: [PATCH] Added RemoteSource.kt exception catch, dependencies update --- .../look4sat/framework/remote/RemoteSource.kt | 8 +++-- build.gradle | 4 +-- .../look4sat/data/DefaultRepository.kt | 33 ++++++++++--------- .../look4sat/data/RemoteDataSource.kt | 2 +- 4 files changed, 27 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/remote/RemoteSource.kt b/app/src/main/java/com/rtbishop/look4sat/framework/remote/RemoteSource.kt index 2d768731..06dc7e75 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/remote/RemoteSource.kt +++ b/app/src/main/java/com/rtbishop/look4sat/framework/remote/RemoteSource.kt @@ -9,7 +9,11 @@ import java.net.URL class RemoteSource(private val ioDispatcher: CoroutineDispatcher) : RemoteDataSource { @Suppress("BlockingMethodInNonBlockingContext") - override suspend fun fetchFileStream(fileUrl: String): InputStream { - return withContext(ioDispatcher) { URL(fileUrl).openStream() } + override suspend fun fetchFileStream(url: String): InputStream? { + return try { + withContext(ioDispatcher) { URL(url).openStream() } + } catch (e: Exception) { + null + } } } diff --git a/build.gradle b/build.gradle index 2768a340..d548c3c0 100644 --- a/build.gradle +++ b/build.gradle @@ -6,11 +6,11 @@ buildscript { material_version = '1.4.0' splash_screen_version = '1.0.0-alpha01' constraint_layout_version = '2.1.1' - lifecycle_version = '2.3.1' + lifecycle_version = '2.4.0' navigation_version = '2.3.5' preference_version = '1.1.1' room_version = '2.3.0' - hilt_version = '2.39.1' + hilt_version = '2.40' json_version = '20210307' osmdroid_version = '6.1.11' timber_version = '5.0.1' diff --git a/core/src/main/java/com/rtbishop/look4sat/data/DefaultRepository.kt b/core/src/main/java/com/rtbishop/look4sat/data/DefaultRepository.kt index 592577d5..bc69790e 100644 --- a/core/src/main/java/com/rtbishop/look4sat/data/DefaultRepository.kt +++ b/core/src/main/java/com/rtbishop/look4sat/data/DefaultRepository.kt @@ -65,22 +65,24 @@ class DefaultRepository( } launch { val updateTimeMillis = measureTimeMillis { - val fetchesMap = mutableMapOf>() - val streamsMap = mutableMapOf() + val jobsMap = mutableMapOf>() + val streamsMap = mutableMapOf() val streams = mutableListOf() val entries = mutableListOf() - sources.forEach { fetchesMap[it] = async { remoteSource.fetchFileStream(it) } } - fetchesMap.forEach { streamsMap[it.key] = it.value.await() } + sources.forEach { jobsMap[it] = async { remoteSource.fetchFileStream(it) } } + jobsMap.forEach { streamsMap[it.key] = it.value.await() } streamsMap.forEach { stream -> - when { - stream.key.contains("=csv", true) -> { - val tles = dataParser.parseCSVStream(stream.value) - entries.addAll(tles.map { tle -> SatEntry(tle) }) + stream.value?.let { inputStream -> + when { + stream.key.contains("=csv", true) -> { + val tles = dataParser.parseCSVStream(inputStream) + entries.addAll(tles.map { tle -> SatEntry(tle) }) + } + stream.key.contains(".zip", true) -> { + streams.add(ZipInputStream(inputStream).apply { nextEntry }) + } + else -> streams.add(inputStream) } - stream.key.contains(".zip", true) -> { - streams.add(ZipInputStream(stream.value).apply { nextEntry }) - } - else -> streams.add(stream.value) } } streams.forEach { stream -> entries.addAll(importSatellites(stream)) } @@ -89,9 +91,10 @@ class DefaultRepository( println("Update from web took $updateTimeMillis ms") } launch { - val jsonStream = remoteSource.fetchFileStream(transmittersSource) - val transmitters = dataParser.parseJSONStream(jsonStream) - localSource.updateTransmitters(transmitters) + remoteSource.fetchFileStream(transmittersSource)?.let { inputStream -> + val transmitters = dataParser.parseJSONStream(inputStream) + localSource.updateTransmitters(transmitters) + } } } } diff --git a/core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt b/core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt index dff99ea2..b7a9a9a1 100644 --- a/core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt +++ b/core/src/main/java/com/rtbishop/look4sat/data/RemoteDataSource.kt @@ -21,5 +21,5 @@ import java.io.InputStream interface RemoteDataSource { - suspend fun fetchFileStream(fileUrl: String): InputStream + suspend fun fetchFileStream(url: String): InputStream? }