package com.radiola.data.remote import javax.inject.Inject import javax.inject.Singleton /** * Потоки Love Radio (n340.com) отдают музыку только с валидным сессионным UID, * привязанным к IP клиента. Берём UID с устройства из их player/config и * подставляем в URL потока. UID кэшируем (он стабилен в рамках сессии). */ @Singleton class LoveStreamResolver @Inject constructor( private val loveApi: LoveApi ) { @Volatile private var cachedUid: String? = null private fun isLove(url: String): Boolean = url.contains("n340.com") || url.contains("loveradio") suspend fun resolve(url: String): String { if (!isLove(url)) return url val uid = cachedUid ?: runCatching { loveApi.getConfig().data.uid } .getOrNull() ?.takeIf { it.isNotBlank() } ?.also { cachedUid = it } if (uid.isNullOrBlank()) return url // фолбэк: пусть играет что есть val base = url.substringBefore("?") return "$base?type=aac&UID=$uid" } }