2018-06-26 21:11:39 +02:00
|
|
|
package org.moire.ultrasonic.subsonic.loader.image
|
|
|
|
|
|
|
|
import com.squareup.picasso.Picasso.LoadedFrom.NETWORK
|
|
|
|
import com.squareup.picasso.Request
|
|
|
|
import com.squareup.picasso.RequestHandler
|
2020-06-13 19:04:31 +02:00
|
|
|
import java.io.IOException
|
2018-06-26 21:11:39 +02:00
|
|
|
import okio.Okio
|
|
|
|
import org.moire.ultrasonic.api.subsonic.SubsonicAPIClient
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Loads cover arts from subsonic api.
|
|
|
|
*/
|
|
|
|
class CoverArtRequestHandler(private val apiClient: SubsonicAPIClient) : RequestHandler() {
|
|
|
|
override fun canHandleRequest(data: Request): Boolean {
|
|
|
|
return with(data.uri) {
|
|
|
|
scheme == SCHEME &&
|
2020-06-13 19:04:31 +02:00
|
|
|
authority == AUTHORITY &&
|
|
|
|
path == "/$COVER_ART_PATH"
|
2018-06-26 21:11:39 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun load(request: Request, networkPolicy: Int): Result {
|
2018-09-30 10:37:14 +02:00
|
|
|
val id = request.uri.getQueryParameter(QUERY_ID)
|
|
|
|
?: throw IllegalArgumentException("Nullable id")
|
2018-06-26 21:11:39 +02:00
|
|
|
|
|
|
|
val response = apiClient.getCoverArt(id)
|
|
|
|
if (response.hasError()) {
|
|
|
|
throw IOException("${response.apiError}")
|
|
|
|
} else {
|
|
|
|
return Result(Okio.source(response.stream), NETWORK)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|