Added RemoteSource.kt exception catch, dependencies update
This commit is contained in:
1 parent
5ba7ee746c
commit
04029d50db
4 files changed
+27
-20
No files matched your search
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -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'
|
||||
|
||||
@@ -65,22 +65,24 @@ class DefaultRepository(
|
||||
}
|
||||
launch {
|
||||
val updateTimeMillis = measureTimeMillis {
|
||||
val fetchesMap = mutableMapOf<String, Deferred<InputStream>>()
|
||||
val streamsMap = mutableMapOf<String, InputStream>()
|
||||
val jobsMap = mutableMapOf<String, Deferred<InputStream?>>()
|
||||
val streamsMap = mutableMapOf<String, InputStream?>()
|
||||
val streams = mutableListOf<InputStream>()
|
||||
val entries = mutableListOf<SatEntry>()
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,5 +21,5 @@ import java.io.InputStream
|
||||
|
||||
interface RemoteDataSource {
|
||||
|
||||
suspend fun fetchFileStream(fileUrl: String): InputStream
|
||||
suspend fun fetchFileStream(url: String): InputStream?
|
||||
}
|
||||
Reference in new issue
Block a user