diff --git a/app/build.gradle b/app/build.gradle
index 22d0269..2346d31 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -74,7 +74,8 @@ dependencies {
implementation "io.ktor:ktor-client-core:$ktor_version"
implementation "io.ktor:ktor-client-android:$ktor_version"
- implementation "io.ktor:ktor-client-serialization:$ktor_version"
+ implementation "io.ktor:ktor-client-content-negotiation:$ktor_version"
+ implementation "io.ktor:ktor-serialization-kotlinx-json:$ktor_version"
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
diff --git a/app/src/main/java/org/mosad/teapod/parser/crunchyroll/Crunchyroll.kt b/app/src/main/java/org/mosad/teapod/parser/crunchyroll/Crunchyroll.kt
index a700ce4..eb5b2d5 100644
--- a/app/src/main/java/org/mosad/teapod/parser/crunchyroll/Crunchyroll.kt
+++ b/app/src/main/java/org/mosad/teapod/parser/crunchyroll/Crunchyroll.kt
@@ -25,13 +25,13 @@ package org.mosad.teapod.parser.crunchyroll
import android.util.Log
import io.ktor.client.*
import io.ktor.client.call.*
-import io.ktor.client.features.*
-import io.ktor.client.features.json.*
-import io.ktor.client.features.json.serializer.*
+import io.ktor.client.plugins.*
+import io.ktor.client.plugins.contentnegotiation.*
import io.ktor.client.request.*
import io.ktor.client.request.forms.*
import io.ktor.client.statement.*
import io.ktor.http.*
+import io.ktor.serialization.kotlinx.json.*
import kotlinx.coroutines.*
import kotlinx.serialization.SerializationException
import kotlinx.serialization.json.Json
@@ -41,14 +41,14 @@ import kotlinx.serialization.json.put
import org.mosad.teapod.preferences.EncryptedPreferences
import org.mosad.teapod.preferences.Preferences
-private val json = Json { ignoreUnknownKeys = true }
-
object Crunchyroll {
private val TAG = javaClass.name
private val client = HttpClient {
- install(JsonFeature) {
- serializer = KotlinxSerializer(json)
+ install(ContentNegotiation) {
+ json(Json {
+ ignoreUnknownKeys = true
+ })
}
}
private const val baseUrl = "https://beta-api.crunchyroll.com"
@@ -77,7 +77,7 @@ object Crunchyroll {
*/
fun initBasicApiToken() = runBlocking {
withContext(Dispatchers.IO) {
- basicApiToken = (client.get(basicApiTokenUrl) as HttpResponse).readText()
+ basicApiToken = client.get { url(basicApiTokenUrl) }.bodyAsText()
Log.i(TAG, "basic auth token: $basicApiToken")
}
}
@@ -107,7 +107,7 @@ object Crunchyroll {
val response: HttpResponse = client.submitForm("$baseUrl$tokenEndpoint", formParameters = formData) {
header("Authorization", "Basic $basicApiToken")
}
- token = response.receive()
+ token = response.body()
tokenValidUntil = System.currentTimeMillis() + (token.expiresIn * 1000)
response.status
} catch (ex: ClientRequestException) {
@@ -155,10 +155,10 @@ object Crunchyroll {
// for json set body and content type
if (bodyObject is JsonObject) {
- body = bodyObject
+ setBody(bodyObject)
contentType(ContentType.Application.Json)
}
- }
+ }.body()
response
}
diff --git a/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt b/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt
index c779528..e417ac9 100644
--- a/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt
+++ b/app/src/main/java/org/mosad/teapod/ui/activity/player/PlayerViewModel.kt
@@ -135,8 +135,6 @@ class PlayerViewModel(application: Application) : AndroidViewModel(application)
currentPlayheads = Crunchyroll.playheads(episodeIDs)
}
).joinAll()
-
-
Log.d(classTag, "meta: $mediaMeta")
setCurrentEpisode(episodeId)
diff --git a/app/src/main/java/org/mosad/teapod/util/metadb/MetaDBController.kt b/app/src/main/java/org/mosad/teapod/util/metadb/MetaDBController.kt
index 3389ef7..4a77328 100644
--- a/app/src/main/java/org/mosad/teapod/util/metadb/MetaDBController.kt
+++ b/app/src/main/java/org/mosad/teapod/util/metadb/MetaDBController.kt
@@ -24,11 +24,12 @@ package org.mosad.teapod.util.metadb
import android.util.Log
import io.ktor.client.*
-import io.ktor.client.features.*
-import io.ktor.client.features.json.*
-import io.ktor.client.features.json.serializer.*
+import io.ktor.client.call.*
+import io.ktor.client.plugins.*
+import io.ktor.client.plugins.contentnegotiation.*
import io.ktor.client.request.*
import io.ktor.http.*
+import io.ktor.serialization.kotlinx.json.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import kotlinx.serialization.decodeFromString
@@ -40,8 +41,8 @@ object MetaDBController {
private const val repoUrl = "https://gitlab.com/Seil0/teapodmetadb/-/raw/main/crunchy/"
private val client = HttpClient {
- install(JsonFeature) {
- serializer = KotlinxSerializer(Json)
+ install(ContentNegotiation) {
+ json()
}
}
@@ -49,7 +50,7 @@ object MetaDBController {
private var metaCacheList = arrayListOf()
suspend fun list() = withContext(Dispatchers.IO) {
- val raw: String = client.get("$repoUrl/list.json")
+ val raw: String = client.get("$repoUrl/list.json").body()
mediaList = Json.decodeFromString(raw)
}
@@ -70,7 +71,7 @@ object MetaDBController {
private suspend fun getTVShowMetadataFromDB(crSeriesId: String): TVShowMeta? = withContext(Dispatchers.IO) {
return@withContext try {
- val raw: String = client.get("$repoUrl/tv/$crSeriesId/media.json")
+ val raw: String = client.get("$repoUrl/tv/$crSeriesId/media.json").body()
val meta: TVShowMeta = Json.decodeFromString(raw)
metaCacheList.add(meta)
diff --git a/app/src/main/java/org/mosad/teapod/util/tmdb/TMDBApiController.kt b/app/src/main/java/org/mosad/teapod/util/tmdb/TMDBApiController.kt
index ba0cd53..7084394 100644
--- a/app/src/main/java/org/mosad/teapod/util/tmdb/TMDBApiController.kt
+++ b/app/src/main/java/org/mosad/teapod/util/tmdb/TMDBApiController.kt
@@ -25,10 +25,10 @@ package org.mosad.teapod.util.tmdb
import android.util.Log
import io.ktor.client.*
import io.ktor.client.call.*
-import io.ktor.client.features.json.*
-import io.ktor.client.features.json.serializer.*
+import io.ktor.client.plugins.contentnegotiation.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
+import io.ktor.serialization.kotlinx.json.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.invoke
@@ -46,10 +46,11 @@ import org.mosad.teapod.util.concatenate
class TMDBApiController {
private val classTag = javaClass.name
- private val json = Json { ignoreUnknownKeys = true }
private val client = HttpClient {
- install(JsonFeature) {
- serializer = KotlinxSerializer(json)
+ install(ContentNegotiation) {
+ json(Json {
+ ignoreUnknownKeys = true
+ })
}
}
@@ -78,7 +79,7 @@ class TMDBApiController {
}
}
- response.receive()
+ response.body()
}
}
diff --git a/build.gradle b/build.gradle
index ee589f6..f27a81c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = "1.7.10"
- ext.ktor_version = "1.6.8"
+ ext.ktor_version = "2.0.3"
ext.exo_version = "2.17.1"
repositories {
google()