ultrasonic-app-subsonic-and.../ultrasonic/src/main/kotlin/org/moire/ultrasonic/subsonic/RestErrorMapper.kt

39 lines
2.3 KiB
Kotlin

@file:JvmName("RestErrorMapper")
package org.moire.ultrasonic.subsonic
import android.content.Context
import org.moire.ultrasonic.R
import org.moire.ultrasonic.api.subsonic.SubsonicError.GENERIC
import org.moire.ultrasonic.api.subsonic.SubsonicError.INCOMPATIBLE_CLIENT_PROTOCOL_VERSION
import org.moire.ultrasonic.api.subsonic.SubsonicError.INCOMPATIBLE_SERVER_PROTOCOL_VERSION
import org.moire.ultrasonic.api.subsonic.SubsonicError.REQUESTED_DATA_WAS_NOT_FOUND
import org.moire.ultrasonic.api.subsonic.SubsonicError.REQUIRED_PARAM_MISSING
import org.moire.ultrasonic.api.subsonic.SubsonicError.TOKEN_AUTH_NOT_SUPPORTED_FOR_LDAP
import org.moire.ultrasonic.api.subsonic.SubsonicError.TRIAL_PERIOD_IS_OVER
import org.moire.ultrasonic.api.subsonic.SubsonicError.USER_NOT_AUTHORIZED_FOR_OPERATION
import org.moire.ultrasonic.api.subsonic.SubsonicError.WRONG_USERNAME_OR_PASSWORD
import org.moire.ultrasonic.service.parser.SubsonicRESTException
/**
* Extension for [SubsonicRESTException] that returns localized error string, that can used to
* display error reason for user.
*/
fun SubsonicRESTException.getLocalizedErrorMessage(context: Context): String =
when (error) {
GENERIC -> context.getString(R.string.api_subsonic_generic, message)
REQUIRED_PARAM_MISSING -> context.getString(R.string.api_subsonic_param_missing)
INCOMPATIBLE_CLIENT_PROTOCOL_VERSION -> context
.getString(R.string.api_subsonic_upgrade_client)
INCOMPATIBLE_SERVER_PROTOCOL_VERSION -> context
.getString(R.string.api_subsonic_upgrade_server)
WRONG_USERNAME_OR_PASSWORD -> context.getString(R.string.api_subsonic_not_authenticated)
TOKEN_AUTH_NOT_SUPPORTED_FOR_LDAP -> context
.getString(R.string.api_subsonic_token_auth_not_supported_for_ldap)
USER_NOT_AUTHORIZED_FOR_OPERATION -> context
.getString(R.string.api_subsonic_not_authorized)
TRIAL_PERIOD_IS_OVER -> context.getString(R.string.api_subsonic_trial_period_is_over)
REQUESTED_DATA_WAS_NOT_FOUND -> context
.getString(R.string.api_subsonic_requested_data_was_not_found)
else -> context.getString(R.string.api_subsonic_unknown_api_error)
}