commonMain.com.adamratzman.spotify.utils.ExternalUrls.kt Maven / Gradle / Ivy
/* Spotify Web API, Kotlin Wrapper; MIT License, 2017-2022; Original author: Adam Ratzman */
package com.adamratzman.spotify.utils
import com.adamratzman.spotify.models.ExternalUrl
import kotlinx.serialization.Serializable
/**
* Represents the external urls associated with this Spotify asset.
*
* @param spotify The associated Spotify link for this asset, if one exists.
* @param otherExternalUrls Other external urls, not including [spotify]
*/
@Serializable
public data class ExternalUrls(
val spotify: String? = null,
val otherExternalUrls: List,
private val allExternalUrls: List
) : List {
override val size: Int = allExternalUrls.size
override fun contains(element: ExternalUrl): Boolean = allExternalUrls.contains(element)
override fun containsAll(elements: Collection): Boolean = allExternalUrls.containsAll(elements)
override fun get(index: Int): ExternalUrl = allExternalUrls.get(index)
override fun indexOf(element: ExternalUrl): Int = allExternalUrls.indexOf(element)
override fun isEmpty(): Boolean = allExternalUrls.isEmpty()
override fun iterator(): Iterator = allExternalUrls.iterator()
override fun lastIndexOf(element: ExternalUrl): Int = allExternalUrls.lastIndexOf(element)
override fun listIterator(): ListIterator = allExternalUrls.listIterator()
override fun listIterator(index: Int): ListIterator = allExternalUrls.listIterator(index)
override fun subList(fromIndex: Int, toIndex: Int): List = allExternalUrls.subList(fromIndex, toIndex)
}
public fun getExternalUrls(externalUrlsString: Map): ExternalUrls {
val externalUrls = externalUrlsString.map { ExternalUrl(it.key, it.value) }
return ExternalUrls(
externalUrlsString["spotify"],
externalUrls.filter { it.name != "spotify" },
externalUrls
)
}