Skip to content

Commit 34fd391

Browse files
committed
make additional data classes serializable when possible
Signed-off-by: Adam Ratzman <[email protected]>
1 parent 06d146d commit 34fd391

File tree

8 files changed

+20
-3
lines changed

8 files changed

+20
-3
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,3 +333,4 @@ gradle-app.setting
333333
**/build/
334334

335335
# End of https://www.toptal.com/developers/gitignore/api/gradle,kotlin,android,intellij+all,node
336+
/docs/

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ repositories {
3737
jcenter()
3838
}
3939
40-
implementation("com.adamratzman:spotify-api-kotlin-core:3.3.01")
40+
implementation("com.adamratzman:spotify-api-kotlin-core:3.3.02")
4141
```
4242

4343
Note that images and profiles are not supported on the Kotlin/JS target.

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ buildscript {
3232
}
3333

3434
group = "com.adamratzman"
35-
version = "3.3.01"
35+
version = "3.3.02"
3636

3737
tasks.withType<Test> {
3838
this.testLogging {

src/commonMain/kotlin/com.adamratzman.spotify/endpoints/public/BrowseApi.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import com.adamratzman.spotify.utils.Locale
2424
import com.adamratzman.spotify.utils.Market
2525
import com.adamratzman.spotify.utils.formatDate
2626
import kotlin.reflect.KClass
27+
import kotlinx.serialization.Serializable
2728
import kotlinx.serialization.builtins.ListSerializer
2829
import kotlinx.serialization.builtins.serializer
2930

@@ -313,6 +314,7 @@ public class BrowseApi(api: GenericSpotifyApi) : SpotifyEndpoint(api) {
313314
*
314315
* @param attribute The spotify id for the track attribute
315316
*/
317+
@Serializable
316318
public sealed class TuneableTrackAttribute<T : Number>(
317319
public val attribute: String,
318320
public val integerOnly: Boolean,
@@ -460,6 +462,7 @@ public sealed class TuneableTrackAttribute<T : Number>(
460462
/**
461463
* The track attribute wrapper contains a set value for a specific [TuneableTrackAttribute]
462464
*/
465+
@Serializable
463466
public data class TrackAttribute<T : Number>(val tuneableTrackAttribute: TuneableTrackAttribute<T>, val value: T) {
464467
public companion object {
465468
public fun <T : Number> create(tuneableTrackAttribute: TuneableTrackAttribute<T>, value: T): TrackAttribute<T> =

src/commonMain/kotlin/com.adamratzman.spotify/http/Endpoints.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import com.adamratzman.spotify.utils.getCurrentTimeMs
1414
import kotlin.math.ceil
1515
import kotlinx.coroutines.TimeoutCancellationException
1616
import kotlinx.coroutines.withTimeout
17+
import kotlinx.serialization.Serializable
18+
import kotlinx.serialization.Transient
1719

1820
public abstract class SpotifyEndpoint(public val api: GenericSpotifyApi) {
1921
public val cache: SpotifyCache = SpotifyCache()
@@ -225,7 +227,9 @@ public data class SpotifyRequest(
225227
val api: GenericSpotifyApi
226228
)
227229

230+
@Serializable
228231
public data class CacheState(val data: String, val eTag: String?, val expireBy: Long = 0) {
232+
@Transient
229233
private val cacheRegex = "max-age=(\\d+)".toRegex()
230234
internal fun isStillValid(): Boolean = getCurrentTimeMs() <= this.expireBy
231235

src/commonMain/kotlin/com.adamratzman.spotify/http/HttpConnection.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import io.ktor.http.content.ByteArrayContent
2424
import io.ktor.utils.io.core.toByteArray
2525
import kotlinx.coroutines.CancellationException
2626
import kotlinx.coroutines.delay
27+
import kotlinx.serialization.Serializable
2728

2829
public enum class HttpRequestMethod(internal val externalMethod: HttpMethod) {
2930
GET(HttpMethod.Get),
@@ -32,8 +33,10 @@ public enum class HttpRequestMethod(internal val externalMethod: HttpMethod) {
3233
DELETE(HttpMethod.Delete);
3334
}
3435

36+
@Serializable
3537
public data class HttpHeader(val key: String, val value: String)
3638

39+
@Serializable
3740
public data class HttpResponse(val responseCode: Int, val body: String, val headers: List<HttpHeader>)
3841

3942
/**

src/commonMain/kotlin/com.adamratzman.spotify/models/Albums.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public data class SimpleAlbum(
7171
public suspend fun toFullAlbum(market: Market? = null): Album? = api.albums.getAlbum(id, market)
7272
}
7373

74+
@Serializable
7475
public data class ReleaseDate(val year: Int, val month: Int?, val day: Int?)
7576

7677
/**

src/commonMain/kotlin/com.adamratzman.spotify/models/Authentication.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.adamratzman.spotify.SpotifyScope
66
import com.adamratzman.spotify.utils.getCurrentTimeMs
77
import kotlinx.serialization.SerialName
88
import kotlinx.serialization.Serializable
9+
import kotlinx.serialization.Transient
910

1011
/**
1112
* Represents a Spotify Token, retrieved through instantiating a [SpotifyApi]
@@ -42,4 +43,8 @@ public data class Token(
4243
}
4344
}
4445

45-
public data class TokenValidityResponse(val isValid: Boolean, val exception: Exception?)
46+
@Serializable
47+
public data class TokenValidityResponse(
48+
val isValid: Boolean,
49+
@Transient val exception: Exception? = null
50+
)

0 commit comments

Comments
 (0)