29 lines
1002 B
Kotlin
29 lines
1002 B
Kotlin
package org.moire.ultrasonic.api.subsonic.interceptors
|
|
|
|
import okhttp3.Interceptor
|
|
import okhttp3.Interceptor.Chain
|
|
import okhttp3.Response
|
|
import org.moire.ultrasonic.api.subsonic.SubsonicAPIVersions
|
|
|
|
/**
|
|
* Proxy [Interceptor] that uses one of [hexInterceptor] or [mD5Interceptor] depends on [apiVersion].
|
|
*
|
|
* To force [hexInterceptor] set [forceHexPassword] to `true`. Usually it should be done only for
|
|
* ldap users.
|
|
*/
|
|
internal class ProxyPasswordInterceptor(
|
|
initialAPIVersions: SubsonicAPIVersions,
|
|
private val hexInterceptor: PasswordHexInterceptor,
|
|
private val mD5Interceptor: PasswordMD5Interceptor,
|
|
private val forceHexPassword: Boolean = false
|
|
) : Interceptor {
|
|
var apiVersion: SubsonicAPIVersions = initialAPIVersions
|
|
|
|
override fun intercept(chain: Chain): Response =
|
|
if (apiVersion < SubsonicAPIVersions.V1_13_0 || forceHexPassword) {
|
|
hexInterceptor.intercept(chain)
|
|
} else {
|
|
mD5Interceptor.intercept(chain)
|
|
}
|
|
}
|