conventionschedule-android/app/src/main/java/com/adlerosn/brasilfurfest/schedule/managers/OfflineCacheManager.kt

38 lines
1.6 KiB
Kotlin
Raw Normal View History

2019-01-05 06:06:44 +00:00
package com.adlerosn.brasilfurfest.schedule.managers
import android.content.Context
import android.content.res.Resources
import com.adlerosn.brasilfurfest.helper.joinFile
import com.adlerosn.brasilfurfest.helper.lastPathPart
2019-01-05 06:06:44 +00:00
import com.adlerosn.brasilfurfest.helper.nullFun
import java.io.File
2019-01-05 06:06:44 +00:00
import java.io.InputStream
2019-04-29 19:25:23 +00:00
import java.lang.Exception
2019-01-05 06:06:44 +00:00
class OfflineCacheManager(context: Context): CacheManager() {
private val assets = context.assets
private val cacheDir = context.cacheDir
2019-04-29 19:25:23 +00:00
override val goesOnline = false
override val preloaded = false
override fun getStamp(file: String): String? = get(file)?.second
override fun get(file: String): Pair<InputStream, String>? = try {
Pair(assets.open("out/$file"), UNIX_TIMESTAMP_START)
} catch (e: Exception) { null }
2019-01-05 06:06:44 +00:00
override fun set(file: String, requestResult: Pair<ByteArray, String>) = nullFun()
override fun delete(file: String) = false
override fun sanitize() = 0
override fun startMonitoringNeededFiles() = nullFun()
override fun removeNotNeededFiles() = 0
override val files get() = (assets.list("out") ?: arrayOf()).toSet()
override fun getFileFor(asset: String): File {
val cachedFile = cacheDir.joinFile(asset.lastPathPart())
if(!cachedFile.exists()){
val assetDescriptor = get(asset.lastPathPart())
if (assetDescriptor == null)
throw Resources.NotFoundException("Unavailable asset: $asset")
else
cachedFile.writeBytes(assetDescriptor.first.readBytes())
}
return cachedFile
}
2019-01-05 06:06:44 +00:00
}