2021-08-22 09:12:57 +02:00
|
|
|
package audio.funkwhale.ffa.utils
|
|
|
|
|
|
|
|
import android.content.Context
|
|
|
|
import java.io.BufferedReader
|
|
|
|
import java.io.File
|
|
|
|
import java.nio.charset.Charset
|
|
|
|
import java.security.MessageDigest
|
|
|
|
|
|
|
|
object FFACache {
|
2021-08-22 09:48:33 +02:00
|
|
|
|
2021-08-22 09:12:57 +02:00
|
|
|
private fun key(key: String): String {
|
|
|
|
val md = MessageDigest.getInstance("SHA-1")
|
|
|
|
val digest = md.digest(key.toByteArray(Charset.defaultCharset()))
|
|
|
|
|
2022-06-12 14:48:32 +02:00
|
|
|
return digest.fold("") { acc, it -> acc + "%02x".format(it) }
|
2021-08-22 09:12:57 +02:00
|
|
|
}
|
|
|
|
|
2022-06-12 14:48:32 +02:00
|
|
|
fun set(context: Context?, key:String, value: String){
|
|
|
|
set(context, key, value.toByteArray())
|
2021-08-22 09:12:57 +02:00
|
|
|
}
|
|
|
|
|
2022-06-12 14:48:32 +02:00
|
|
|
fun set(context: Context?, key: String, value: ByteArray) {
|
|
|
|
context?.let {
|
2021-08-22 09:12:57 +02:00
|
|
|
with(File(it.cacheDir, key(key))) {
|
2022-06-12 14:48:32 +02:00
|
|
|
writeBytes(value)
|
2021-08-22 09:12:57 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-06-12 14:48:32 +02:00
|
|
|
fun getLine(context: Context?, key: String): String? = get(context, key)?.let {
|
|
|
|
val line = it.readLine()
|
|
|
|
it.close()
|
|
|
|
line
|
|
|
|
}
|
|
|
|
|
|
|
|
fun getLines(context: Context?, key: String): List<String>? = get(context, key)
|
|
|
|
?.let { reader ->
|
|
|
|
val lines = reader.readLines()
|
|
|
|
reader.close()
|
|
|
|
lines
|
|
|
|
}
|
|
|
|
|
2021-08-22 09:12:57 +02:00
|
|
|
fun delete(context: Context?, key: String) = context?.let {
|
|
|
|
with(File(it.cacheDir, key(key))) {
|
|
|
|
delete()
|
|
|
|
}
|
|
|
|
}
|
2022-06-12 14:48:32 +02:00
|
|
|
|
|
|
|
private fun get(context: Context?, key: String): BufferedReader? = context?.let {
|
|
|
|
try {
|
|
|
|
with(File(it.cacheDir, key(key))) {
|
|
|
|
bufferedReader()
|
|
|
|
}
|
|
|
|
} catch (e: Exception) {
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|
2021-08-22 09:48:33 +02:00
|
|
|
}
|