From b2aff1efc9e6527e70ba519e5171096394e6ccf7 Mon Sep 17 00:00:00 2001 From: Mitchell Syer Date: Sat, 16 Mar 2024 23:36:45 -0400 Subject: [PATCH] Fix MAL after restarting the server (#903) * Fix MAL after restarting the server * Cleanup MAL interceptor * Fix * Cleanup Anilist interceptor * Use IOException * Make Anilist private * Lint --- .../manga/impl/track/tracker/anilist/Anilist.kt | 2 +- .../track/tracker/anilist/AnilistInterceptor.kt | 15 ++++++--------- .../impl/track/tracker/myanimelist/MyAnimeList.kt | 2 +- .../tracker/myanimelist/MyAnimeListInterceptor.kt | 10 +++------- 4 files changed, 11 insertions(+), 18 deletions(-) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/anilist/Anilist.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/anilist/Anilist.kt index 64f3a6a5..48b53896 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/anilist/Anilist.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/anilist/Anilist.kt @@ -31,7 +31,7 @@ class Anilist(id: Int) : Tracker(id, "AniList"), DeletableTrackService { private val json: Json by injectLazy() - private val interceptor by lazy { AnilistInterceptor(this, getPassword()) } + private val interceptor by lazy { AnilistInterceptor(this) } private val api by lazy { AnilistApi(client, interceptor) } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/anilist/AnilistInterceptor.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/anilist/AnilistInterceptor.kt index 82f8cf39..d4c8cab0 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/anilist/AnilistInterceptor.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/anilist/AnilistInterceptor.kt @@ -5,7 +5,7 @@ import okhttp3.Response import suwayomi.tachidesk.manga.impl.track.tracker.TokenExpired import java.io.IOException -class AnilistInterceptor(val anilist: Anilist, private var token: String?) : Interceptor { +class AnilistInterceptor(private val anilist: Anilist) : Interceptor { /** * OAuth object used for authenticated requests. * @@ -17,18 +17,16 @@ class AnilistInterceptor(val anilist: Anilist, private var token: String?) : Int field = value?.copy(expires = value.expires * 1000 - 60 * 1000) } + init { + oauth = anilist.loadOAuth() + } + override fun intercept(chain: Interceptor.Chain): Response { if (anilist.getIfAuthExpired()) { throw TokenExpired() } val originalRequest = chain.request() - if (token.isNullOrEmpty()) { - throw Exception("Not authenticated with Anilist") - } - if (oauth == null) { - oauth = anilist.loadOAuth() - } // Refresh access token if null or expired. if (oauth?.isExpired() == true) { anilist.setAuthExpired() @@ -37,7 +35,7 @@ class AnilistInterceptor(val anilist: Anilist, private var token: String?) : Int // Throw on null auth. if (oauth == null) { - throw IOException("No authentication token") + throw IOException("Anilist: User is not authenticated") } // Add the authorization header to the original request. @@ -54,7 +52,6 @@ class AnilistInterceptor(val anilist: Anilist, private var token: String?) : Int * and the oauth object. */ fun setAuth(oauth: OAuth?) { - token = oauth?.access_token this.oauth = oauth anilist.saveOAuth(oauth) } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/myanimelist/MyAnimeList.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/myanimelist/MyAnimeList.kt index 4fc707d6..87e0d36e 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/myanimelist/MyAnimeList.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/myanimelist/MyAnimeList.kt @@ -28,7 +28,7 @@ class MyAnimeList(id: Int) : Tracker(id, "MyAnimeList"), DeletableTrackService { private val json: Json by injectLazy() - private val interceptor by lazy { MyAnimeListInterceptor(this, getPassword()) } + private val interceptor by lazy { MyAnimeListInterceptor(this) } private val api by lazy { MyAnimeListApi(client, interceptor) } override val supportsReadingDates: Boolean = true diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/myanimelist/MyAnimeListInterceptor.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/myanimelist/MyAnimeListInterceptor.kt index abf8c3ea..bd9ae23d 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/myanimelist/MyAnimeListInterceptor.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/tracker/myanimelist/MyAnimeListInterceptor.kt @@ -10,10 +10,10 @@ import suwayomi.tachidesk.manga.impl.track.tracker.TokenRefreshFailed import uy.kohesive.injekt.injectLazy import java.io.IOException -class MyAnimeListInterceptor(private val myanimelist: MyAnimeList, private var token: String?) : Interceptor { +class MyAnimeListInterceptor(private val myanimelist: MyAnimeList) : Interceptor { private val json: Json by injectLazy() - private var oauth: OAuth? = null + private var oauth: OAuth? = myanimelist.loadOAuth() override fun intercept(chain: Interceptor.Chain): Response { if (myanimelist.getIfAuthExpired()) { @@ -44,7 +44,6 @@ class MyAnimeListInterceptor(private val myanimelist: MyAnimeList, private var t * and the oauth object. */ fun setAuth(oauth: OAuth?) { - token = oauth?.access_token this.oauth = oauth myanimelist.saveOAuth(oauth) } @@ -75,10 +74,7 @@ class MyAnimeListInterceptor(private val myanimelist: MyAnimeList, private var t } } .getOrNull() - ?.also { - this.oauth = it - myanimelist.saveOAuth(it) - } + ?.also(::setAuth) ?: throw TokenRefreshFailed() } }