Skip to content

Commit

Permalink
Метод на получение рекламы
Browse files Browse the repository at this point in the history
  • Loading branch information
pank-su committed Nov 23, 2023
1 parent d0462ca commit d02ac91
Show file tree
Hide file tree
Showing 7 changed files with 112 additions and 10 deletions.
12 changes: 7 additions & 5 deletions library/src/commonMain/kotlin/Client.kt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

import dsl.YandexMusicTagMaker
import exceptions.SessionExpiredException
import io.ktor.client.*
Expand All @@ -15,6 +16,7 @@ import model.BasicResponse
import model.Result
import model.account.Status
import model.account.UserSettings
import model.ad.Ad


expect fun getHttpClientEngine(): HttpClientEngine
Expand Down Expand Up @@ -130,15 +132,15 @@ class Client {
suspend fun init(init: Client.() -> Unit) {
this.init()
try {
me = getStatus()
me = status()
} catch (e: SessionExpiredException) {
println("Токен некореектный или истёк")
}
}

suspend fun getStatus() = request<Status>("account", "status")
suspend fun getSettings() = request<UserSettings>("account", "settings")
// suspend fun setSettings(settings: UserSettings) =
// requestPost<UserSettings>("account", "settings", body = settings)
suspend fun status() = request<Status>("account", "status")
suspend fun userSettings() = request<UserSettings>("account", "settings")

suspend fun ads() = request<Ad>("settings")

}
31 changes: 31 additions & 0 deletions library/src/commonMain/kotlin/model/ad/Ad.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
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,
val inAppProducts: List<AppProduct>,
val nativeProducts: List<AppProduct>,
val webPaymentUrl: String,
val promoCodesEnabled: Boolean
) :
Result()
28 changes: 28 additions & 0 deletions library/src/commonMain/kotlin/model/ad/AppProduct.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package model.ad

import kotlinx.datetime.DateTimePeriod
import kotlinx.serialization.Serializable

@Serializable
data class AppProduct(
val productId: String,
val offersPositionId: String,
val type: TypeProduct,
val commonPeriodDuration: DateTimePeriod? = null,
val duration: Int,
val trialDuration: Int,
val price: Price? = null,
val plus: Boolean,
val feature: String,
val features: List<Feature>,
val debug: Boolean = false,
val buttonText: String = "",
val buttonAdditionalText: String = "",
val description: String,
val paymentMethodTypes: List<PaymentMethod>,
val available: Boolean,
val vendorTrialAvailable: Boolean? = null,
val familySub: Boolean? = null,
val trialAvailable: Boolean? = null,
val family: Boolean? = null
)
16 changes: 16 additions & 0 deletions library/src/commonMain/kotlin/model/ad/Feature.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package model.ad

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

@Serializable
enum class Feature {
@SerialName("basic-plus")
BasicPlus,

@SerialName("basic-music")
BasicMusic,

@SerialName("basic-kinopoisk")
BasicKinopoisk,
}
6 changes: 6 additions & 0 deletions library/src/commonMain/kotlin/model/ad/Price.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package model.ad

import kotlinx.serialization.Serializable

@Serializable
data class Price(val amount: Float, val currency: Currency)
17 changes: 17 additions & 0 deletions library/src/commonTest/kotlin/AdsTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@

import dsl.client
import io.getenv
import kotlinx.coroutines.test.runTest
import kotlin.test.Test

class AdsTest {

@Test
fun gettingAds() = runTest {
val ad = client { }.ads()

val token = getenv("token") ?: return@runTest
if (token == "") return@runTest
client { this.token = token }.ads()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,29 @@ import kotlin.test.assertEquals
import kotlin.test.assertFailsWith
import kotlin.test.assertNotEquals

class SettingsTest {
class UserSettingsTest {
@Test
fun gettingSettings() = runTest {
fun gettingUserSettings() = runTest {
assertFailsWith<NotAuthenticatedException> {
client { }.getSettings()
client { }.userSettings()
}
val token = getenv("token") ?: return@runTest
if (token == "") return@runTest
client { this.token = token }.getSettings()
client { this.token = token }.userSettings()
}

@Test
fun updateSettings() = runTest {
val token = getenv("token") ?: return@runTest
if (token == "") return@runTest
val client = client { this.token = token }
val settings = client.getSettings()
val settings = client.userSettings()
assertEquals(settings.update(UserSettings::volumePercents, 80).volumePercents, 80)
assertEquals(settings.update(UserSettings::volumePercents, 75).volumePercents, 75)
assertEquals(settings.update(UserSettings::theme, Theme.White).theme, Theme.White)
assertEquals(settings.update(UserSettings::theme, Theme.Black).theme, Theme.Black)
assertNotEquals(settings, settings.update(UserSettings::autoPlayRadio, !settings.autoPlayRadio))
settings.update(UserSettings::volumePercents, settings.volumePercents)
settings.update(UserSettings::theme, settings.theme)
}
}

0 comments on commit d02ac91

Please sign in to comment.