mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 16:18:55 +01:00 
			
		
		
		
	This commit is contained in:
		@@ -112,11 +112,7 @@ class Myanimelist(private val context: Context, id: Int) : TrackService(id) {
 | 
			
		||||
                .toCompletable()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Attempt to login again if cookies have been cleared but credentials are still filled
 | 
			
		||||
    fun ensureLoggedIn() {
 | 
			
		||||
        if (isAuthorized) return
 | 
			
		||||
        if (!isLogged) throw Exception("MAL Login Credentials not found")
 | 
			
		||||
 | 
			
		||||
    fun refreshLogin() {
 | 
			
		||||
        val username = getUsername()
 | 
			
		||||
        val password = getPassword()
 | 
			
		||||
        logout()
 | 
			
		||||
@@ -131,6 +127,14 @@ class Myanimelist(private val context: Context, id: Int) : TrackService(id) {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Attempt to login again if cookies have been cleared but credentials are still filled
 | 
			
		||||
    fun ensureLoggedIn() {
 | 
			
		||||
        if (isAuthorized) return
 | 
			
		||||
        if (!isLogged) throw Exception("MAL Login Credentials not found")
 | 
			
		||||
 | 
			
		||||
        refreshLogin()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun logout() {
 | 
			
		||||
        super.logout()
 | 
			
		||||
        preferences.trackToken(this).delete()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
package eu.kanade.tachiyomi.data.track.myanimelist
 | 
			
		||||
 | 
			
		||||
import okhttp3.Interceptor
 | 
			
		||||
import okhttp3.Request
 | 
			
		||||
import okhttp3.RequestBody
 | 
			
		||||
import okhttp3.Response
 | 
			
		||||
import okio.Buffer
 | 
			
		||||
@@ -11,18 +12,27 @@ class MyAnimeListInterceptor(private val myanimelist: Myanimelist): Interceptor
 | 
			
		||||
    override fun intercept(chain: Interceptor.Chain): Response {
 | 
			
		||||
        myanimelist.ensureLoggedIn()
 | 
			
		||||
 | 
			
		||||
        var request = chain.request()
 | 
			
		||||
        request.body()?.let {
 | 
			
		||||
        val request = chain.request()
 | 
			
		||||
        var response = chain.proceed(updateRequest(request))
 | 
			
		||||
 | 
			
		||||
        if (response.code() == 400){
 | 
			
		||||
            myanimelist.refreshLogin()
 | 
			
		||||
            response = chain.proceed(updateRequest(request))
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return response
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun updateRequest(request: Request): Request {
 | 
			
		||||
        return request.body()?.let {
 | 
			
		||||
            val contentType = it.contentType().toString()
 | 
			
		||||
            val updatedBody = when {
 | 
			
		||||
                contentType.contains("x-www-form-urlencoded") -> updateFormBody(it)
 | 
			
		||||
                contentType.contains("json") -> updateJsonBody(it)
 | 
			
		||||
                else -> it
 | 
			
		||||
            }
 | 
			
		||||
            request = request.newBuilder().post(updatedBody).build()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return chain.proceed(request)
 | 
			
		||||
            request.newBuilder().post(updatedBody).build()
 | 
			
		||||
        } ?: request
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun bodyToString(requestBody: RequestBody): String {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user