Browse Source

Refactored FlickrServiceLogic to handle exceptions

Ana Sekuloski 3 years ago
parent
commit
c6e786e8c6

+ 17 - 8
flickersearchlibrary/src/main/java/com/livelike/flickersearchlibrary/service/logic/FlickrServiceLogic.kt

@@ -12,17 +12,26 @@ internal class FlickrServiceLogic(private val api: FlickrApi) : FlickrService {
 
     private val cachedPhotos = mutableListOf<Photo>()
 
+    private val LOG_TAG = "FlickrService"
+
     override suspend fun search(searchQuery: String): List<Photo> {
-        val response = api.search(searchQuery)
-        if (response.isSuccessful) {
-            response.body()?.let {
-                cachedPhotos.clear()
-                cachedPhotos.addAll(it.photosPage.photos)
+        runCatching {
+            val response = api.search(searchQuery)
+            if (response.isSuccessful) {
+                response.body()?.let {
+                    cachedPhotos.clear()
+                    cachedPhotos.addAll(it.photosPage.photos)
+                }
+            } else {
+                Log.d(
+                    LOG_TAG,
+                    "Flickr API responded with error: ${response.errorBody().toString()}"
+                )
             }
-        } else {
+        }.onFailure { exception: Throwable ->
             Log.d(
-                "FlickrService",
-                "Flickr API responded with error: " + response.errorBody().toString()
+                LOG_TAG,
+                "Exception occurred when executing API call: ${exception.message}"
             )
         }