feat: HTTP-клиенты Jellyfin + media-mirror в lib-core (KMP, Ktor)
media/JellyfinClient: users, rootItems, items, search, allItems, posterUrl (X-Emby-Token) media/MirrorClient: createMirror, mirrorByItem (404→null), list, delete, scan (X-API-Key) media/HttpClient: defaultHttpClient (ContentNegotiation+json, таймауты, ApiClientException) Ktor 3.3.0 (совместим с Kotlin 2.2; 3.5.2 требует Kotlin 2.3 — не берём) 17 тестов (MockEngine): пути, методы, заголовки, JSON, 201/404, round-trip DTO. Проверено на живых серверах: Jellyfin (6 users, корень, поиск 'дюна'), mirror (by-item done + url, список done)
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
kotlin = "2.2.0"
|
||||
kotlinx-serialization = "1.8.1"
|
||||
kotlinx-coroutines = "1.10.2"
|
||||
ktor = "3.3.0"
|
||||
android = "8.9.2"
|
||||
compose-plugin = "1.8.0"
|
||||
androidx-compose-bom = "2025.05.00"
|
||||
@@ -13,11 +14,21 @@ kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serializa
|
||||
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" }
|
||||
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" }
|
||||
kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinx-coroutines" }
|
||||
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" }
|
||||
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" }
|
||||
android-material3 = { module = "androidx.compose.material3:material3" }
|
||||
androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidx-compose-bom" }
|
||||
exoplayer = { module = "com.google.android.exoplayer:exoplayer", version.ref = "exoplayer" }
|
||||
|
||||
# Ktor client (HTTP)
|
||||
ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" }
|
||||
ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" }
|
||||
ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" }
|
||||
ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" }
|
||||
ktor-client-logging = { module = "io.ktor:ktor-client-logging", version.ref = "ktor" }
|
||||
ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" }
|
||||
ktor-client-mock = { module = "io.ktor:ktor-client-mock", version.ref = "ktor" }
|
||||
|
||||
[plugins]
|
||||
android-application = { id = "com.android.application", version.ref = "android" }
|
||||
android-library = { id = "com.android.library", version.ref = "android" }
|
||||
|
||||
Reference in New Issue
Block a user