Skip to content

Commit

Permalink
feat: add landing
Browse files Browse the repository at this point in the history
  • Loading branch information
pank-su committed Dec 13, 2023
1 parent 8d10e19 commit cce7dba
Show file tree
Hide file tree
Showing 24 changed files with 376 additions and 714 deletions.
30 changes: 25 additions & 5 deletions library/src/commonMain/kotlin/Client.kt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import dsl.YandexMusicTagMaker
import exceptions.NotAuthenticatedException
import exceptions.SessionExpiredException
import io.ktor.client.*
import io.ktor.client.call.*
Expand All @@ -9,14 +10,16 @@ import io.ktor.client.request.*
import io.ktor.client.request.forms.*
import io.ktor.http.*
import io.ktor.serialization.kotlinx.json.*
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import model.*
import model.account.Experiments
import model.account.PromoCodeStatus
import model.account.Status
import model.account.UserSettings
import model.ad.Ad
import model.feed.Feed
import model.landing.BlockType
import model.landing.Landing


expect fun getHttpClientEngine(): HttpClientEngine
Expand Down Expand Up @@ -124,10 +127,12 @@ class Client {
}
}
}
}
headers {
remove(HttpHeaders.ContentType)
remove(HttpHeaders.ContentLength)
} else if (method == HttpMethod.Get) {
url {
body.forEach {
parameters.append(it.key, it.value)
}
}
}
}.body<BasicResponse<T>>().result.apply { client = this@Client }
}
Expand Down Expand Up @@ -197,4 +202,19 @@ class Client {
)

suspend fun feed() = request<Feed>("feed")

suspend fun feedWizardIsPassed() =
requestPrimitive<HashMap<String, Boolean>>("feed", "wizard", "is-passed").value!!["isWizardPassed"] as Boolean

suspend fun landing(vararg blocks: BlockType) =
request<Landing>(
listOf("landing3"),
body = hashMapOf(
"blocks" to blocks.joinToString(",") {
val json = Json.encodeToString(it)
json.substring(1..<json.length - 1)
},
"eitherUserId" to (me?.account?.uid ?: throw NotAuthenticatedException()).toString()
)
)
}
524 changes: 0 additions & 524 deletions library/src/commonMain/kotlin/model/account/Experiments.kt

This file was deleted.

13 changes: 13 additions & 0 deletions library/src/commonMain/kotlin/model/account/Theme.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package model.account

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
enum class Theme {
@SerialName("white")
White,

@SerialName("black")
Black
}
23 changes: 0 additions & 23 deletions library/src/commonMain/kotlin/model/account/UserSettings.kt
Original file line number Diff line number Diff line change
@@ -1,33 +1,10 @@
package model.account

import kotlinx.datetime.Instant
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonNames
import model.Result
import kotlin.reflect.KMutableProperty1

@OptIn(ExperimentalSerializationApi::class)

@Serializable
enum class Visibility {
@JsonNames("PUBLIC", "public")
PUBLIC,

@JsonNames("PRIVATE", "private")
PRIVATE
}

@Serializable
enum class Theme {
@SerialName("white")
White,

@SerialName("black")
Black
}

@Serializable
data class UserSettings(
var uid: Int? = null,
Expand Down
15 changes: 15 additions & 0 deletions library/src/commonMain/kotlin/model/account/Visibility.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package model.account

import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonNames

@OptIn(ExperimentalSerializationApi::class)
@Serializable
enum class Visibility {
@JsonNames("PUBLIC", "public")
PUBLIC,

@JsonNames("PRIVATE", "private")
PRIVATE
}
17 changes: 0 additions & 17 deletions library/src/commonMain/kotlin/model/ad/Ad.kt
Original file line number Diff line number Diff line change
@@ -1,25 +1,8 @@
package model.ad

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import model.Result

@Serializable
enum class TypeProduct {
@SerialName("subscription")
Subscription
}

enum class Currency {
RUB
}

@Serializable
enum class PaymentMethod {
@SerialName("card")
Card
}

@Serializable
data class Ad(
val offersBatchId: String? = null,
Expand Down
5 changes: 5 additions & 0 deletions library/src/commonMain/kotlin/model/ad/Currency.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package model.ad

enum class Currency {
RUB
}
10 changes: 10 additions & 0 deletions library/src/commonMain/kotlin/model/ad/PaymentMethod.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package model.ad

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
enum class PaymentMethod {
@SerialName("card")
Card
}
10 changes: 10 additions & 0 deletions library/src/commonMain/kotlin/model/ad/TypeProduct.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package model.ad

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
enum class TypeProduct {
@SerialName("subscription")
Subscription
}
102 changes: 0 additions & 102 deletions library/src/commonMain/kotlin/model/album/Album.kt
Original file line number Diff line number Diff line change
@@ -1,112 +1,10 @@
package model.album

import kotlinx.datetime.Instant
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import model.artist.Artist
import model.track.Options

@Serializable
enum class AlbumType {
@SerialName("single")
Single,

@SerialName("compilation")
Compilation,

@SerialName("podcast")
Podcast,

@SerialName("audiobook")
AudioBook
}

@Serializable
enum class MetaType {
@SerialName("music")
Music,

@SerialName("podcast")
Podcast,

@SerialName("podcast-episode")
PodcastEpisode,

@SerialName("audiobook")
AudioBook
}

@Serializable
enum class Genre {
@SerialName("rock")
Rock,

@SerialName("alternative")
Alternative,

@SerialName("pop")
Pop,

@SerialName("films")
Films,

@SerialName("rusrap")
RusRap,

@SerialName("local-indie")
LocalIndie,

@SerialName("indie")
Indie,

@SerialName("rap")
Rap,

@SerialName("foreignrap")
ForeignRap,

@SerialName("ska")
SKA,

@SerialName("punk")
Punk,

@SerialName("postpunk")
PostPunk,

@SerialName("rusrock")
RusRock,

@SerialName("animated")
Animated,

@SerialName("soundtrack")
SoundTrack,

@SerialName("rusbards")
Rusbards,

@SerialName("ruspop")
RusPop,

@SerialName("dance")
Dance,

@SerialName("podcasts")
Podcasts,

edmgenre, breakbeatgenre,

@SerialName("dnb")
DrumAndBase,

@SerialName("soviet")
Soviet,

@SerialName("fairytales")
FairyTales
}

@Serializable
data class Album(
val id: Int,
Expand Down
19 changes: 19 additions & 0 deletions library/src/commonMain/kotlin/model/album/AlbumType.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package model.album

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
enum class AlbumType {
@SerialName("single")
Single,

@SerialName("compilation")
Compilation,

@SerialName("podcast")
Podcast,

@SerialName("audiobook")
AudioBook
}
79 changes: 79 additions & 0 deletions library/src/commonMain/kotlin/model/album/Genre.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package model.album

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
enum class Genre {
@SerialName("rock")
Rock,

@SerialName("alternative")
Alternative,

@SerialName("pop")
Pop,

@SerialName("films")
Films,

@SerialName("rusrap")
RusRap,

@SerialName("local-indie")
LocalIndie,

@SerialName("indie")
Indie,

@SerialName("rap")
Rap,

@SerialName("foreignrap")
ForeignRap,

@SerialName("ska")
SKA,

@SerialName("punk")
Punk,

@SerialName("postpunk")
PostPunk,

@SerialName("rusrock")
RusRock,

@SerialName("animated")
Animated,

@SerialName("soundtrack")
SoundTrack,

@SerialName("rusbards")
Rusbards,

@SerialName("ruspop")
RusPop,

@SerialName("dance")
Dance,

@SerialName("podcasts")
Podcasts,

// TODO
edmgenre, breakbeatgenre, ukrrock, experimental, electronics, industrial,

@SerialName("social-tracks")
SocialTracks,

@SerialName("dnb")
DrumAndBase,

@SerialName("soviet")
Soviet,

@SerialName("fairytales")
FairyTales
}

0 comments on commit cce7dba

Please sign in to comment.