Loading app/autodiscovery/providersxml/src/main/java/com/fsck/k9/autodiscovery/providersxml/KoinModule.kt +1 −1 Original line number Diff line number Diff line Loading @@ -4,5 +4,5 @@ import org.koin.dsl.module val autodiscoveryProvidersXmlModule = module { factory { ProvidersXmlProvider(context = get()) } factory { ProvidersXmlDiscovery(xmlProvider = get()) } factory { ProvidersXmlDiscovery(xmlProvider = get(), oAuthConfigurationProvider = get()) } } app/autodiscovery/providersxml/src/main/java/com/fsck/k9/autodiscovery/providersxml/ProvidersXmlDiscovery.kt +5 −5 Original line number Diff line number Diff line Loading @@ -9,12 +9,14 @@ import com.fsck.k9.autodiscovery.api.DiscoveryTarget import com.fsck.k9.helper.EmailHelper import com.fsck.k9.mail.AuthType import com.fsck.k9.mail.ConnectionSecurity import com.fsck.k9.oauth.OAuthConfigurationProvider import com.fsck.k9.preferences.Protocols import org.xmlpull.v1.XmlPullParser import timber.log.Timber class ProvidersXmlDiscovery( private val xmlProvider: ProvidersXmlProvider private val xmlProvider: ProvidersXmlProvider, private val oAuthConfigurationProvider: OAuthConfigurationProvider ) : ConnectionSettingsDiscovery { override fun discover(email: String, target: DiscoveryTarget): DiscoveryResults? { Loading Loading @@ -104,8 +106,7 @@ class ProvidersXmlDiscovery( uri.port } // TODO: Remove this hack val authType = if (host == "imap.gmail.com" || host == "imap.googlemail.com") { val authType = if (oAuthConfigurationProvider.getConfiguration(host) != null) { AuthType.XOAUTH2 } else { AuthType.PLAIN Loading Loading @@ -134,8 +135,7 @@ class ProvidersXmlDiscovery( uri.port } // TODO: Remove this hack val authType = if (host == "smtp.gmail.com" || host == "smtp.googlemail.com") { val authType = if (oAuthConfigurationProvider.getConfiguration(host) != null) { AuthType.XOAUTH2 } else { AuthType.PLAIN Loading app/autodiscovery/providersxml/src/test/java/com/fsck/k9/autodiscovery/providersxml/ProvidersXmlDiscoveryTest.kt +20 −1 Original line number Diff line number Diff line Loading @@ -5,12 +5,15 @@ import com.fsck.k9.RobolectricTest import com.fsck.k9.autodiscovery.api.DiscoveryTarget import com.fsck.k9.mail.AuthType import com.fsck.k9.mail.ConnectionSecurity import com.fsck.k9.oauth.OAuthConfiguration import com.fsck.k9.oauth.OAuthConfigurationProvider import com.google.common.truth.Truth.assertThat import org.junit.Test class ProvidersXmlDiscoveryTest : RobolectricTest() { private val xmlProvider = ProvidersXmlProvider(ApplicationProvider.getApplicationContext()) private val providersXmlDiscovery = ProvidersXmlDiscovery(xmlProvider) private val oAuthConfigurationProvider = createOAuthConfigurationProvider() private val providersXmlDiscovery = ProvidersXmlDiscovery(xmlProvider, oAuthConfigurationProvider) @Test fun discover_withGmailDomain_shouldReturnCorrectSettings() { Loading Loading @@ -39,4 +42,20 @@ class ProvidersXmlDiscoveryTest : RobolectricTest() { assertThat(connectionSettings).isNull() } private fun createOAuthConfigurationProvider(): OAuthConfigurationProvider { val googleConfig = OAuthConfiguration( clientId = "irrelevant", scopes = listOf("irrelevant"), authorizationEndpoint = "irrelevant", tokenEndpoint = "irrelevant" ) return OAuthConfigurationProvider( configurations = mapOf( listOf("imap.gmail.com", "smtp.gmail.com") to googleConfig, ), googleConfiguration = googleConfig ) } } app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/OAuthConfiguration.kt→app/core/src/main/java/com/fsck/k9/oauth/OAuthConfiguration.kt +1 −1 Original line number Diff line number Diff line package com.fsck.k9.activity.setup package com.fsck.k9.oauth data class OAuthConfiguration( val clientId: String, Loading app/core/src/main/java/com/fsck/k9/oauth/OAuthConfigurationProvider.kt 0 → 100644 +22 −0 Original line number Diff line number Diff line package com.fsck.k9.oauth class OAuthConfigurationProvider( private val configurations: Map<List<String>, OAuthConfiguration>, private val googleConfiguration: OAuthConfiguration ) { private val hostnameMapping: Map<String, OAuthConfiguration> = buildMap { for ((hostnames, configuration) in configurations) { for (hostname in hostnames) { put(hostname.lowercase(), configuration) } } } fun getConfiguration(hostname: String): OAuthConfiguration? { return hostnameMapping[hostname.lowercase()] } fun isGoogle(hostname: String): Boolean { return getConfiguration(hostname) == googleConfiguration } } Loading
app/autodiscovery/providersxml/src/main/java/com/fsck/k9/autodiscovery/providersxml/KoinModule.kt +1 −1 Original line number Diff line number Diff line Loading @@ -4,5 +4,5 @@ import org.koin.dsl.module val autodiscoveryProvidersXmlModule = module { factory { ProvidersXmlProvider(context = get()) } factory { ProvidersXmlDiscovery(xmlProvider = get()) } factory { ProvidersXmlDiscovery(xmlProvider = get(), oAuthConfigurationProvider = get()) } }
app/autodiscovery/providersxml/src/main/java/com/fsck/k9/autodiscovery/providersxml/ProvidersXmlDiscovery.kt +5 −5 Original line number Diff line number Diff line Loading @@ -9,12 +9,14 @@ import com.fsck.k9.autodiscovery.api.DiscoveryTarget import com.fsck.k9.helper.EmailHelper import com.fsck.k9.mail.AuthType import com.fsck.k9.mail.ConnectionSecurity import com.fsck.k9.oauth.OAuthConfigurationProvider import com.fsck.k9.preferences.Protocols import org.xmlpull.v1.XmlPullParser import timber.log.Timber class ProvidersXmlDiscovery( private val xmlProvider: ProvidersXmlProvider private val xmlProvider: ProvidersXmlProvider, private val oAuthConfigurationProvider: OAuthConfigurationProvider ) : ConnectionSettingsDiscovery { override fun discover(email: String, target: DiscoveryTarget): DiscoveryResults? { Loading Loading @@ -104,8 +106,7 @@ class ProvidersXmlDiscovery( uri.port } // TODO: Remove this hack val authType = if (host == "imap.gmail.com" || host == "imap.googlemail.com") { val authType = if (oAuthConfigurationProvider.getConfiguration(host) != null) { AuthType.XOAUTH2 } else { AuthType.PLAIN Loading Loading @@ -134,8 +135,7 @@ class ProvidersXmlDiscovery( uri.port } // TODO: Remove this hack val authType = if (host == "smtp.gmail.com" || host == "smtp.googlemail.com") { val authType = if (oAuthConfigurationProvider.getConfiguration(host) != null) { AuthType.XOAUTH2 } else { AuthType.PLAIN Loading
app/autodiscovery/providersxml/src/test/java/com/fsck/k9/autodiscovery/providersxml/ProvidersXmlDiscoveryTest.kt +20 −1 Original line number Diff line number Diff line Loading @@ -5,12 +5,15 @@ import com.fsck.k9.RobolectricTest import com.fsck.k9.autodiscovery.api.DiscoveryTarget import com.fsck.k9.mail.AuthType import com.fsck.k9.mail.ConnectionSecurity import com.fsck.k9.oauth.OAuthConfiguration import com.fsck.k9.oauth.OAuthConfigurationProvider import com.google.common.truth.Truth.assertThat import org.junit.Test class ProvidersXmlDiscoveryTest : RobolectricTest() { private val xmlProvider = ProvidersXmlProvider(ApplicationProvider.getApplicationContext()) private val providersXmlDiscovery = ProvidersXmlDiscovery(xmlProvider) private val oAuthConfigurationProvider = createOAuthConfigurationProvider() private val providersXmlDiscovery = ProvidersXmlDiscovery(xmlProvider, oAuthConfigurationProvider) @Test fun discover_withGmailDomain_shouldReturnCorrectSettings() { Loading Loading @@ -39,4 +42,20 @@ class ProvidersXmlDiscoveryTest : RobolectricTest() { assertThat(connectionSettings).isNull() } private fun createOAuthConfigurationProvider(): OAuthConfigurationProvider { val googleConfig = OAuthConfiguration( clientId = "irrelevant", scopes = listOf("irrelevant"), authorizationEndpoint = "irrelevant", tokenEndpoint = "irrelevant" ) return OAuthConfigurationProvider( configurations = mapOf( listOf("imap.gmail.com", "smtp.gmail.com") to googleConfig, ), googleConfiguration = googleConfig ) } }
app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/OAuthConfiguration.kt→app/core/src/main/java/com/fsck/k9/oauth/OAuthConfiguration.kt +1 −1 Original line number Diff line number Diff line package com.fsck.k9.activity.setup package com.fsck.k9.oauth data class OAuthConfiguration( val clientId: String, Loading
app/core/src/main/java/com/fsck/k9/oauth/OAuthConfigurationProvider.kt 0 → 100644 +22 −0 Original line number Diff line number Diff line package com.fsck.k9.oauth class OAuthConfigurationProvider( private val configurations: Map<List<String>, OAuthConfiguration>, private val googleConfiguration: OAuthConfiguration ) { private val hostnameMapping: Map<String, OAuthConfiguration> = buildMap { for ((hostnames, configuration) in configurations) { for (hostname in hostnames) { put(hostname.lowercase(), configuration) } } } fun getConfiguration(hostname: String): OAuthConfiguration? { return hostnameMapping[hostname.lowercase()] } fun isGoogle(hostname: String): Boolean { return getConfiguration(hostname) == googleConfiguration } }