All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy