Loading app/src/main/kotlin/at/bitfire/davdroid/network/PersistentCookieStore.kt +33 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package at.bitfire.davdroid.network import android.accounts.Account import android.accounts.AccountManager import android.content.Context import android.util.Log import at.bitfire.davdroid.settings.AccountSettings import okhttp3.Cookie import okhttp3.CookieJar Loading Loading @@ -51,12 +52,33 @@ class PersistentCookieStore(context: Context, private val account: Account): Coo } val cookieString = cookieMap.values.joinToString(separator = AccountSettings.COOKIE_SEPARATOR) accountManager.setUserData(account, AccountSettings.COOKIE_KEY, cookieString) setUserData(url, cookieString) } private fun setUserData(url: HttpUrl, cookieString: String) { if (url.toString().contains(DAV_PATTERN)) { accountManager.setUserData(account, DAV_COOKIE_KEY, cookieString) } else if (url.toString().contains(NOTES_PATTERN)) { accountManager.setUserData(account, NOTES_COOKIE_KEY, cookieString) } else { accountManager.setUserData(account, EDRIVE_COOKIE_KEY, cookieString) } } private fun getUserData(url: HttpUrl): String? { if (url.toString().contains(DAV_PATTERN)) { accountManager.getUserData(account, DAV_COOKIE_KEY) } else if (url.toString().contains(NOTES_PATTERN)) { accountManager.getUserData(account, NOTES_COOKIE_KEY) } else { accountManager.getUserData(account, EDRIVE_COOKIE_KEY) } return null } private fun getCookieMap(url: HttpUrl): HashMap<String, Cookie> { val result = HashMap<String, Cookie>() val cookiesString = accountManager.getUserData(account, AccountSettings.COOKIE_KEY)?: return HashMap() val cookiesString = getUserData(url) ?: return HashMap() val cookies = cookiesString.split(AccountSettings.COOKIE_SEPARATOR.toRegex()).dropLastWhile { it.isEmpty() } .toTypedArray() Loading @@ -71,4 +93,13 @@ class PersistentCookieStore(context: Context, private val account: Account): Coo return result } companion object { private const val DAV_PATTERN = "/dav/" private const val NOTES_PATTERN = "/notes/" private const val NOTES_COOKIE_KEY = "notes_cookie_key" private const val DAV_COOKIE_KEY = "dav_cookie_key" private const val EDRIVE_COOKIE_KEY = "edrive_cookie_key" } } Loading
app/src/main/kotlin/at/bitfire/davdroid/network/PersistentCookieStore.kt +33 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package at.bitfire.davdroid.network import android.accounts.Account import android.accounts.AccountManager import android.content.Context import android.util.Log import at.bitfire.davdroid.settings.AccountSettings import okhttp3.Cookie import okhttp3.CookieJar Loading Loading @@ -51,12 +52,33 @@ class PersistentCookieStore(context: Context, private val account: Account): Coo } val cookieString = cookieMap.values.joinToString(separator = AccountSettings.COOKIE_SEPARATOR) accountManager.setUserData(account, AccountSettings.COOKIE_KEY, cookieString) setUserData(url, cookieString) } private fun setUserData(url: HttpUrl, cookieString: String) { if (url.toString().contains(DAV_PATTERN)) { accountManager.setUserData(account, DAV_COOKIE_KEY, cookieString) } else if (url.toString().contains(NOTES_PATTERN)) { accountManager.setUserData(account, NOTES_COOKIE_KEY, cookieString) } else { accountManager.setUserData(account, EDRIVE_COOKIE_KEY, cookieString) } } private fun getUserData(url: HttpUrl): String? { if (url.toString().contains(DAV_PATTERN)) { accountManager.getUserData(account, DAV_COOKIE_KEY) } else if (url.toString().contains(NOTES_PATTERN)) { accountManager.getUserData(account, NOTES_COOKIE_KEY) } else { accountManager.getUserData(account, EDRIVE_COOKIE_KEY) } return null } private fun getCookieMap(url: HttpUrl): HashMap<String, Cookie> { val result = HashMap<String, Cookie>() val cookiesString = accountManager.getUserData(account, AccountSettings.COOKIE_KEY)?: return HashMap() val cookiesString = getUserData(url) ?: return HashMap() val cookies = cookiesString.split(AccountSettings.COOKIE_SEPARATOR.toRegex()).dropLastWhile { it.isEmpty() } .toTypedArray() Loading @@ -71,4 +93,13 @@ class PersistentCookieStore(context: Context, private val account: Account): Coo return result } companion object { private const val DAV_PATTERN = "/dav/" private const val NOTES_PATTERN = "/notes/" private const val NOTES_COOKIE_KEY = "notes_cookie_key" private const val DAV_COOKIE_KEY = "dav_cookie_key" private const val EDRIVE_COOKIE_KEY = "edrive_cookie_key" } }