Итак, я использую архитектуру MVVM с шаблоном Repository для выполнения различных вызовов API.У меня есть репозиторий под названием X, в котором у меня есть различные связанные вызовы API.
Перед выполнением любого из этих вызовов я хотел бы выполнить проверку.Если это происходит успешно, только тогда должен быть выполнен сетевой запрос.
fun getSomethingX(data: Data): Single<Data> {
return if (validation(data)) {
service.getSomethingX()
.onErrorResumeNext(...)
.map { ... ->
...
}
} else {
Single.just(null)
}
}
fun getSomethingY(data: Data): Single<Data> {
return if (validation(data)) {
service.getSomethingX()
.onErrorResumeNext(...)
.map { ... ->
...
}
} else {
Single.just(null)
}
}
Как видите, у меня может быть много функций сетевого запроса, называемых getSomething..()
.Я вижу это как код котельной плиты.
Существуют ли другие способы проверки (не только проверка токена, но и разрешение в целом)?Если да, можете ли вы показать мне пример?
Можно ли проводить проверку разрешений на уровне хранилища?
Возможно, лучший подходбудет делать проверку в Interceptor
?Но я не вижу чистого способа отменить запрос, если проверка не прошла.