Skip to content

Commit cb13d8c

Browse files
committed
allow instantiation by refresh token
1 parent f61c36e commit cb13d8c

File tree

6 files changed

+26
-12
lines changed

6 files changed

+26
-12
lines changed

src/commonMain/kotlin/com.adamratzman.spotify/Builder.kt

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ class SpotifyAppApiBuilder(
364364
require((clientId != null && clientSecret != null) || authorization.token != null || authorization.tokenString != null) { "You didn't specify a client id or client secret in the credentials block!" }
365365
return when {
366366
authorization.token != null -> SpotifyAppApi(
367-
clientId ,
367+
clientId,
368368
clientSecret,
369369
authorization.token!!,
370370
options.useCache,
@@ -392,6 +392,20 @@ class SpotifyAppApiBuilder(
392392
options.json
393393
)
394394
}
395+
authorization.refreshTokenString != null -> {
396+
SpotifyAppApi(
397+
clientId,
398+
clientSecret,
399+
Token("", "", 0, authorization.refreshTokenString!!),
400+
options.useCache,
401+
options.cacheLimit,
402+
false,
403+
options.retryWhenRateLimited,
404+
options.enableLogger,
405+
options.testTokenValidity,
406+
options.json
407+
)
408+
}
395409
else -> try {
396410
require(clientId != null && clientSecret != null) { "Illegal credentials provided" }
397411
val token = getCredentialedToken(clientId, clientSecret, null, options.json)
@@ -448,15 +462,17 @@ data class SpotifyCredentials(val clientId: String?, val clientSecret: String?,
448462
class SpotifyUserAuthorizationBuilder(
449463
var authorizationCode: String? = null,
450464
var tokenString: String? = null,
451-
var token: Token? = null
465+
var token: Token? = null,
466+
var refreshTokenString: String? = null
452467
) {
453-
fun build() = SpotifyUserAuthorization(authorizationCode, tokenString, token)
468+
fun build() = SpotifyUserAuthorization(authorizationCode, tokenString, token, refreshTokenString)
454469
}
455470

456471
data class SpotifyUserAuthorization(
457472
var authorizationCode: String?,
458473
var tokenString: String?,
459-
var token: Token?
474+
var token: Token?,
475+
var refreshTokenString: String?
460476
)
461477

462478
/**

src/commonMain/kotlin/com.adamratzman.spotify/SpotifyApi.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ import com.adamratzman.spotify.models.TokenValidityResponse
2727
import com.adamratzman.spotify.models.serialization.toObject
2828
import com.adamratzman.spotify.utils.asList
2929
import com.adamratzman.spotify.utils.runBlocking
30-
import kotlinx.coroutines.Dispatchers
31-
import kotlinx.serialization.json.Json
3230
import kotlin.coroutines.CoroutineContext
3331
import kotlin.jvm.JvmOverloads
32+
import kotlinx.coroutines.Dispatchers
33+
import kotlinx.serialization.json.Json
3434

3535
internal const val base = "https://api.spotify.com/v1"
3636

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.adamratzman.spotify.http.SpotifyEndpoint
66
import com.adamratzman.spotify.models.serialization.toCursorBasedPagingObject
77
import com.adamratzman.spotify.models.serialization.toPagingObject
88
import com.adamratzman.spotify.utils.runBlocking
9+
import kotlin.reflect.KClass
910
import kotlinx.coroutines.Dispatchers
1011
import kotlinx.coroutines.ExperimentalCoroutinesApi
1112
import kotlinx.coroutines.flow.Flow
@@ -17,7 +18,6 @@ import kotlinx.coroutines.flow.toList
1718
import kotlinx.serialization.SerialName
1819
import kotlinx.serialization.Serializable
1920
import kotlinx.serialization.Transient
20-
import kotlin.reflect.KClass
2121

2222
/*
2323
Types used in PagingObjects and CursorBasedPagingObjects:
@@ -73,7 +73,7 @@ class PagingObject<T : Any>(
7373
return (if (type == PagingTraversalType.FORWARDS) next else previous)?.let { endpoint!!.get(it) }?.let { json ->
7474
when (itemClazz) {
7575
SimpleTrack::class -> json.toPagingObject(SimpleTrack.serializer(), null, endpointFinal, endpointFinal.api.json)
76-
SpotifyCategory::class -> json.toPagingObject(SpotifyCategory.serializer(), null, endpointFinal , endpointFinal.api.json)
76+
SpotifyCategory::class -> json.toPagingObject(SpotifyCategory.serializer(), null, endpointFinal, endpointFinal.api.json)
7777
SimpleAlbum::class -> json.toPagingObject(SimpleAlbum.serializer(), null, endpointFinal, endpointFinal.api.json)
7878
SimplePlaylist::class -> json.toPagingObject(SimplePlaylist.serializer(), null, endpointFinal, endpointFinal.api.json)
7979
SavedTrack::class -> json.toPagingObject(SavedTrack.serializer(), null, endpointFinal, endpointFinal.api.json)

src/commonTest/kotlin/com.adamratzman/spotify/Common.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ val api = when {
1111
}.build()
1212
}
1313
else -> {
14-
println(getEnvironmentVariable("spotifyRedirectUri")?.isBlank())
1514
spotifyClientApi {
1615
credentials {
1716
clientId = getEnvironmentVariable("clientId")

src/commonTest/kotlin/com.adamratzman/spotify/public/PublicTracksAPITest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ package com.adamratzman.spotify.public
44
import com.adamratzman.spotify.SpotifyException
55
import com.adamratzman.spotify.api
66
import com.adamratzman.spotify.utils.Market
7-
import org.spekframework.spek2.Spek
8-
import org.spekframework.spek2.style.specification.describe
97
import kotlin.test.assertEquals
108
import kotlin.test.assertFailsWith
119
import kotlin.test.assertNull
1210
import kotlin.test.assertTrue
11+
import org.spekframework.spek2.Spek
12+
import org.spekframework.spek2.style.specification.describe
1313

1414
class PublicTracksAPITest : Spek({
1515
describe("Track API (Public View) test") {

src/commonTest/kotlin/com.adamratzman/spotify/utilities/UtilityTests.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ class UtilityTests : Spek({
6060
clientSecret = getEnvironmentVariable("clientSecret")
6161
}
6262
}.build()
63-
TODO()
6463
}
6564
}
6665
}

0 commit comments

Comments
 (0)