Skip to content

Commit

Permalink
feat: add Chart
Browse files Browse the repository at this point in the history
  • Loading branch information
pank-su committed Dec 26, 2023
1 parent 25906f3 commit ef09dc0
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 2 deletions.
14 changes: 12 additions & 2 deletions library/src/commonMain/kotlin/Client.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import dsl.YandexMusicTagMaker
import exceptions.NotAuthenticatedException
import exceptions.SessionExpiredException
import extensions.removeCarets
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.engine.*
Expand All @@ -19,6 +20,8 @@ import model.account.UserSettings
import model.ad.Ad
import model.feed.Feed
import model.landing.BlockType
import model.landing.ChartInfo
import model.landing.ChartOption
import model.landing.Landing


Expand Down Expand Up @@ -211,11 +214,18 @@ class Client {
listOf("landing3"),
body = hashMapOf(
"blocks" to blocks.joinToString(",") {
val json = Json.encodeToString(it)
json.substring(1..<json.length - 1)
Json.encodeToString(it).removeCarets()

},
"eitherUserId" to (me?.account?.uid ?: throw NotAuthenticatedException()).toString()
)
)

suspend fun chart(chartOption: ChartOption? = null) =
request<ChartInfo>(
"landing3", "chart", if (chartOption != null) {
Json.encodeToString(chartOption).removeCarets()
} else ""
)

}
4 changes: 4 additions & 0 deletions library/src/commonMain/kotlin/extensions/RemoveCaretsJson.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package extensions

fun String.removeCarets() =
this.substring(1..<this.length - 1)
8 changes: 8 additions & 0 deletions library/src/commonMain/kotlin/model/landing/ChartInfo.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package model.landing

import kotlinx.serialization.Serializable
import model.Result
import model.playlist.Playlist

@Serializable
data class ChartInfo(val id: String, val type: String, val typeForFrom: String, val title: String, val menu: ChartInfoMenu, val chart: Playlist? = null, val chartDescription: String? = null) : Result()
6 changes: 6 additions & 0 deletions library/src/commonMain/kotlin/model/landing/ChartInfoMenu.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package model.landing

import kotlinx.serialization.Serializable

@Serializable
data class ChartInfoMenu(val items: List<ChartInfoMenuItem>)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package model.landing

import kotlinx.serialization.Serializable

@Serializable
data class ChartInfoMenuItem(val title: String, val url: String, val selected: Boolean? = null)
8 changes: 8 additions & 0 deletions library/src/commonMain/kotlin/model/landing/ChartOption.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package model.landing

import kotlinx.serialization.SerialName

enum class ChartOption {
@SerialName("world") World,
@SerialName("russia") Russia
}
12 changes: 12 additions & 0 deletions library/src/commonTest/kotlin/ChartTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import dsl.client
import kotlinx.coroutines.test.runTest
import model.landing.ChartOption
import kotlin.test.Test

class ChartTest {
@Test
fun gettingTest() = runTest {
val chart = client { }.chart(ChartOption.World)
println(chart)
}
}

0 comments on commit ef09dc0

Please sign in to comment.