diff --git a/app/src/main/java/net/vonforst/evmap/api/goingelectric/GoingElectricApi.kt b/app/src/main/java/net/vonforst/evmap/api/goingelectric/GoingElectricApi.kt index b1173356..0e1f1706 100644 --- a/app/src/main/java/net/vonforst/evmap/api/goingelectric/GoingElectricApi.kt +++ b/app/src/main/java/net/vonforst/evmap/api/goingelectric/GoingElectricApi.kt @@ -344,40 +344,48 @@ class GoingElectricApiWrapper( referenceData: ReferenceData, id: Long ): Resource { - val response = api.getChargepointDetail(id) - return if (response.isSuccessful && response.body()!!.status == "ok" && response.body()!!.chargelocations.size == 1) { - Resource.success( - (response.body()!!.chargelocations[0] as GEChargeLocation).convert( - apikey + try { + val response = api.getChargepointDetail(id) + return if (response.isSuccessful && response.body()!!.status == "ok" && response.body()!!.chargelocations.size == 1) { + Resource.success( + (response.body()!!.chargelocations[0] as GEChargeLocation).convert( + apikey + ) ) - ) - } else { - Resource.error(response.message(), null) + } else { + Resource.error(response.message(), null) + } + } catch (e: IOException) { + return Resource.error(e.message, null) } } override suspend fun getReferenceData(): Resource = withContext(Dispatchers.IO) { - val plugs = async { api.getPlugs() } - val chargeCards = async { api.getChargeCards() } - val networks = async { api.getNetworks() } + try { + val plugs = async { api.getPlugs() } + val chargeCards = async { api.getChargeCards() } + val networks = async { api.getNetworks() } - val plugsResponse = plugs.await() - val chargeCardsResponse = chargeCards.await() - val networksResponse = networks.await() + val plugsResponse = plugs.await() + val chargeCardsResponse = chargeCards.await() + val networksResponse = networks.await() - val responses = listOf(plugsResponse, chargeCardsResponse, networksResponse) + val responses = listOf(plugsResponse, chargeCardsResponse, networksResponse) - if (responses.map { it.isSuccessful }.all { it }) { - Resource.success( - GEReferenceData( - plugsResponse.body()!!.result, - networksResponse.body()!!.result, - chargeCardsResponse.body()!!.result + if (responses.map { it.isSuccessful }.all { it }) { + Resource.success( + GEReferenceData( + plugsResponse.body()!!.result, + networksResponse.body()!!.result, + chargeCardsResponse.body()!!.result + ) ) - ) - } else { - Resource.error(responses.find { !it.isSuccessful }!!.message(), null) + } else { + Resource.error(responses.find { !it.isSuccessful }!!.message(), null) + } + } catch (e: IOException) { + Resource.error(e.message, null) } } diff --git a/app/src/main/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapApi.kt b/app/src/main/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapApi.kt index 5f5dcd90..46b471d0 100644 --- a/app/src/main/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapApi.kt +++ b/app/src/main/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapApi.kt @@ -20,6 +20,7 @@ import retrofit2.Retrofit import retrofit2.converter.moshi.MoshiConverterFactory import retrofit2.http.GET import retrofit2.http.Query +import java.io.IOException interface OpenChargeMapApi { @GET("poi/") @@ -137,29 +138,33 @@ class OpenChargeMapApiWrapper( } val operators = formatMultipleChoice(operatorsVal) - val response = api.getChargepoints( - OCMBoundingBox( - bounds.southwest.latitude, bounds.southwest.longitude, - bounds.northeast.latitude, bounds.northeast.longitude - ), - minPower = minPower, - plugs = connectors, - operators = operators, - statusType = if (excludeFaults == true) noFaultStatuses.joinToString(",") else null - ) - if (!response.isSuccessful) { - return Resource.error(response.message(), null) - } + try { + val response = api.getChargepoints( + OCMBoundingBox( + bounds.southwest.latitude, bounds.southwest.longitude, + bounds.northeast.latitude, bounds.northeast.longitude + ), + minPower = minPower, + plugs = connectors, + operators = operators, + statusType = if (excludeFaults == true) noFaultStatuses.joinToString(",") else null + ) + if (!response.isSuccessful) { + return Resource.error(response.message(), null) + } - var result = postprocessResult( - response.body()!!, - minPower, - connectorsVal, - minConnectors, - referenceData, - zoom - ) - return Resource.success(result) + var result = postprocessResult( + response.body()!!, + minPower, + connectorsVal, + minConnectors, + referenceData, + zoom + ) + return Resource.success(result) + } catch (e: IOException) { + return Resource.error(e.message, null) + } } override suspend fun getChargepointsRadius( @@ -189,27 +194,31 @@ class OpenChargeMapApiWrapper( } val operators = formatMultipleChoice(operatorsVal) - val response = api.getChargepointsRadius( - location.latitude, location.longitude, - radius.toDouble(), - minPower = minPower, - plugs = connectors, - operators = operators, - statusType = if (excludeFaults == true) noFaultStatuses.joinToString(",") else null - ) - if (!response.isSuccessful) { - return Resource.error(response.message(), null) - } + try { + val response = api.getChargepointsRadius( + location.latitude, location.longitude, + radius.toDouble(), + minPower = minPower, + plugs = connectors, + operators = operators, + statusType = if (excludeFaults == true) noFaultStatuses.joinToString(",") else null + ) + if (!response.isSuccessful) { + return Resource.error(response.message(), null) + } - val result = postprocessResult( - response.body()!!, - minPower, - connectorsVal, - minConnectors, - referenceData, - zoom - ) - return Resource.success(result) + val result = postprocessResult( + response.body()!!, + minPower, + connectorsVal, + minConnectors, + referenceData, + zoom + ) + return Resource.success(result) + } catch (e: IOException) { + return Resource.error(e.message, null) + } } private fun postprocessResult( @@ -244,20 +253,28 @@ class OpenChargeMapApiWrapper( id: Long ): Resource { val referenceData = referenceData as OCMReferenceData - val response = api.getChargepointDetail(id) - if (response.isSuccessful && response.body()?.size == 1) { - return Resource.success(response.body()!![0].convert(referenceData)) - } else { - return Resource.error(response.message(), null) + try { + val response = api.getChargepointDetail(id) + if (response.isSuccessful && response.body()?.size == 1) { + return Resource.success(response.body()!![0].convert(referenceData)) + } else { + return Resource.error(response.message(), null) + } + } catch (e: IOException) { + return Resource.error(e.message, null) } } override suspend fun getReferenceData(): Resource { - val response = api.getReferenceData() - if (response.isSuccessful) { - return Resource.success(response.body()!!) - } else { - return Resource.error(response.message(), null) + try { + val response = api.getReferenceData() + if (response.isSuccessful) { + return Resource.success(response.body()!!) + } else { + return Resource.error(response.message(), null) + } + } catch (e: IOException) { + return Resource.error(e.message, null) } }