Explorar el Código

Added Flickr object for service features, and refactored dependencies

Ana Sekuloski hace 3 años
padre
commit
a4fbc423a4

+ 27 - 0
flickersearchlibrary/src/main/java/com/livelike/flickersearchlibrary/Flickr.kt

@@ -0,0 +1,27 @@
+package com.livelike.flickersearchlibrary
+
+import com.livelike.flickersearchlibrary.api.model.PhotosPage
+import com.livelike.flickersearchlibrary.di.Dependencies
+import com.livelike.flickersearchlibrary.service.FlickrService
+import org.koin.java.KoinJavaComponent.inject
+
+/**
+ * Defines Flickr service features.
+ */
+object Flickr {
+
+    init {
+        Dependencies.init()
+    }
+
+    private val flickrService: FlickrService by inject(FlickrService::class.java)
+
+    /**
+     * Provides search result for given search term.
+     *
+     * @param searchQuery [String] the search term.
+     * @return [PhotosPage] search results page.
+     */
+    suspend fun search(searchQuery: String) = flickrService.search(searchQuery)
+
+}

+ 22 - 16
flickersearchlibrary/src/main/java/com/livelike/flickersearchlibrary/di/Dependencies.kt

@@ -3,30 +3,36 @@ package com.livelike.flickersearchlibrary.di
 import com.livelike.flickersearchlibrary.api.FlickrApi
 import com.livelike.flickersearchlibrary.api.utils.BASE_URL
 import com.livelike.flickersearchlibrary.service.logic.FlickrServiceLogic
+import org.koin.core.context.startKoin
 import org.koin.dsl.module
 import retrofit2.Retrofit
 import retrofit2.converter.moshi.MoshiConverterFactory
 
 /**
- * Koin module that declares dependencies required by Flickr API.
+ * Defines dependencies required by Flickr service features.
  */
-internal val flickrApiModule = module {
+internal object Dependencies {
 
-    single {
-        val retrofit = Retrofit.Builder()
-            .baseUrl(BASE_URL)
-            .addConverterFactory(MoshiConverterFactory.create())
-            .build()
-        retrofit.create(FlickrApi::class.java)
-    }
+    private val flickrModule = module {
 
-}
+        single {
+            val retrofit = Retrofit.Builder()
+                .baseUrl(BASE_URL)
+                .addConverterFactory(MoshiConverterFactory.create())
+                .build()
+            retrofit.create(FlickrApi::class.java)
+        }
 
-/**
- * Koin module that declares dependencies required by Flickr service features.
- */
-val flickrModule = module {
+        single { FlickrServiceLogic(get()) }
 
-    single { FlickrServiceLogic(get()) }
+    }
 
-}
+    /**
+     * Initializes all dependencies needed for Flick service features.
+     */
+    internal fun init() {
+        startKoin {
+            modules(flickrModule)
+        }
+    }
+}