package com.github.apognu.otter.repositories import android.content.Context import com.github.apognu.otter.utils.Album import com.github.apognu.otter.utils.AlbumsCache import com.github.apognu.otter.utils.AlbumsResponse import com.github.apognu.otter.utils.FunkwhaleResponse import com.github.kittinunf.fuel.gson.gsonDeserializerOf import com.google.gson.reflect.TypeToken import java.io.BufferedReader class AlbumsRepository(override val context: Context?, artistId: Int? = null) : Repository() { override val cacheId: String by lazy { if (artistId == null) "albums" else "albums-artist-$artistId" } override val upstream: Upstream by lazy { val url = if (artistId == null) "/api/v1/albums?playable=true" else "/api/v1/albums?playable=true&artist=$artistId" HttpUpstream>( HttpUpstream.Behavior.Progressive, url, object : TypeToken() {}.type ) } override fun cache(data: List) = AlbumsCache(data) override fun uncache(reader: BufferedReader) = gsonDeserializerOf(AlbumsCache::class.java).deserialize(reader) }