diff --git a/src/main/kotlin/com/stevesoltys/applemusic/AppleMusic.kt b/src/main/kotlin/com/stevesoltys/applemusic/AppleMusic.kt index 3e70ad9..737cf02 100644 --- a/src/main/kotlin/com/stevesoltys/applemusic/AppleMusic.kt +++ b/src/main/kotlin/com/stevesoltys/applemusic/AppleMusic.kt @@ -24,11 +24,15 @@ class AppleMusic( AppleMusicConfiguration(teamId, privateKey, keyId, storefront) } + private val retrofitBuilder: AppleMusicRetrofitBuilder by lazy { + AppleMusicRetrofitBuilder() + } + private var currentToken: AppleMusicAuthToken? = null private val appleMusicService: AppleMusicService get() { - return AppleMusicRetrofitBuilder() + return retrofitBuilder .build(configuration, token().toString()) .create(AppleMusicService::class.java) } diff --git a/src/main/kotlin/com/stevesoltys/applemusic/net/AppleMusicRetrofitBuilder.kt b/src/main/kotlin/com/stevesoltys/applemusic/net/AppleMusicRetrofitBuilder.kt index 11813a9..aae0076 100644 --- a/src/main/kotlin/com/stevesoltys/applemusic/net/AppleMusicRetrofitBuilder.kt +++ b/src/main/kotlin/com/stevesoltys/applemusic/net/AppleMusicRetrofitBuilder.kt @@ -11,18 +11,22 @@ import retrofit2.converter.jackson.JacksonConverterFactory */ class AppleMusicRetrofitBuilder { - fun build(configuration: AppleMusicConfiguration, token: String): Retrofit { - val objectMapper = AppleMusicObjectMapper() + private val objectMapper = AppleMusicObjectMapper() - val okHttpClient = OkHttpClient.Builder() - .addInterceptor { chain -> - val newRequest: Request = chain.request().newBuilder() - .addHeader("Authorization", "Bearer $token") - .build() + private val okHttpClient = OkHttpClient.Builder() + .addInterceptor { chain -> + val newRequest: Request = chain.request().newBuilder() + .addHeader("Authorization", "Bearer $token") + .build() - chain.proceed(newRequest) - } - .build() + chain.proceed(newRequest) + } + .build() + + private lateinit var token: String + + fun build(configuration: AppleMusicConfiguration, token: String): Retrofit { + this.token = token return Retrofit.Builder() .baseUrl("https://api.music.apple.com/v1/catalog/${configuration.storefront}/")