From 8e55a4d824296a93d3e6b98da7286567e38838f4 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Fri, 19 Aug 2022 11:45:43 +0300 Subject: [PATCH] Fix Shikimori authToken refreshing --- .../scrobbling/shikimori/data/ShikimoriInterceptor.kt | 11 +++++++---- .../scrobbling/shikimori/data/ShikimoriRepository.kt | 3 ++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/scrobbling/shikimori/data/ShikimoriInterceptor.kt b/app/src/main/java/org/koitharu/kotatsu/scrobbling/shikimori/data/ShikimoriInterceptor.kt index f203f2e4c..d0be7d23c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/scrobbling/shikimori/data/ShikimoriInterceptor.kt +++ b/app/src/main/java/org/koitharu/kotatsu/scrobbling/shikimori/data/ShikimoriInterceptor.kt @@ -10,10 +10,13 @@ private const val USER_AGENT_SHIKIMORI = "Kotatsu" class ShikimoriInterceptor(private val storage: ShikimoriStorage) : Interceptor { override fun intercept(chain: Interceptor.Chain): Response { - val request = chain.request().newBuilder() + val sourceRequest = chain.request() + val request = sourceRequest.newBuilder() request.header(CommonHeaders.USER_AGENT, USER_AGENT_SHIKIMORI) - storage.accessToken?.let { - request.header(CommonHeaders.AUTHORIZATION, "Bearer $it") + if (!sourceRequest.url.pathSegments.contains("oauth")) { + storage.accessToken?.let { + request.header(CommonHeaders.AUTHORIZATION, "Bearer $it") + } } val response = chain.proceed(request.build()) if (!response.isSuccessful && !response.isRedirect) { @@ -21,4 +24,4 @@ class ShikimoriInterceptor(private val storage: ShikimoriStorage) : Interceptor } return response } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/koitharu/kotatsu/scrobbling/shikimori/data/ShikimoriRepository.kt b/app/src/main/java/org/koitharu/kotatsu/scrobbling/shikimori/data/ShikimoriRepository.kt index 119d33637..fcf89b0d8 100644 --- a/app/src/main/java/org/koitharu/kotatsu/scrobbling/shikimori/data/ShikimoriRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/scrobbling/shikimori/data/ShikimoriRepository.kt @@ -40,13 +40,14 @@ class ShikimoriRepository( suspend fun authorize(code: String?) { val body = FormBody.Builder() - body.add("grant_type", "authorization_code") body.add("client_id", BuildConfig.SHIKIMORI_CLIENT_ID) body.add("client_secret", BuildConfig.SHIKIMORI_CLIENT_SECRET) if (code != null) { + body.add("grant_type", "authorization_code") body.add("redirect_uri", REDIRECT_URI) body.add("code", code) } else { + body.add("grant_type", "refresh_token") body.add("refresh_token", checkNotNull(storage.refreshToken)) } val request = Request.Builder()