Explorar el Código

Get several image urls per request when searching covers

sirekanyan hace 8 años
padre
commit
571135b5fc

+ 2 - 1
app/src/main/java/me/vadik/knigopis/api/BookCoverSearch.kt

@@ -42,7 +42,8 @@ class BookCoverSearchImpl(
   private fun searchThumbnail(query: String) =
       imageEndpoint.searchImage(query)
           .delay((Math.random() * MAX_DELAY_IN_MICROSECONDS).toLong(), TimeUnit.MICROSECONDS)
-          .map(ImageThumbnail::url)
+          .map(ImageThumbnail::urls)
+          .map(List<String>::first)
 
   private fun getSearchQuery(book: Book) =
       book.title.split(" ").size.let { titleWordsCount ->

+ 5 - 2
app/src/main/java/me/vadik/knigopis/api/ImageEndpoint.kt

@@ -7,6 +7,9 @@ import retrofit2.http.Query
 
 interface ImageEndpoint {
 
-  @GET("search/images?count=1")
-  fun searchImage(@Query("q") query: String): Single<ImageThumbnail>
+  @GET("search/images")
+  fun searchImage(
+      @Query("q") query: String,
+      @Query("count") count: Int = 10
+  ): Single<ImageThumbnail>
 }

+ 3 - 5
app/src/main/java/me/vadik/knigopis/api/gson/ImageThumbnailDeserializer.kt

@@ -4,7 +4,6 @@ import com.google.gson.JsonDeserializationContext
 import com.google.gson.JsonDeserializer
 import com.google.gson.JsonElement
 import me.vadik.knigopis.model.ImageThumbnail
-import me.vadik.knigopis.model.emptyThumbnail
 import java.lang.reflect.Type
 
 class ImageThumbnailDeserializer : JsonDeserializer<ImageThumbnail> {
@@ -13,8 +12,7 @@ class ImageThumbnailDeserializer : JsonDeserializer<ImageThumbnail> {
           .getAsJsonObject("data")
           .getAsJsonObject("result")
           .getAsJsonArray("items")
-          .firstOrNull()
-          ?.asJsonObject
-          ?.let { ImageThumbnail("https:" + it["thumbnail"].asString) }
-          ?: emptyThumbnail
+          .map { it.asJsonObject["thumbnail"].asString }
+          .map { "https:" + it }
+          .let(::ImageThumbnail)
 }

+ 1 - 3
app/src/main/java/me/vadik/knigopis/model/ImageThumbnail.kt

@@ -1,5 +1,3 @@
 package me.vadik.knigopis.model
 
-val emptyThumbnail = ImageThumbnail("")
-
-class ImageThumbnail(val url: String)
+class ImageThumbnail(val urls: List<String>)