Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Модель ответа от сервера
- data class SomeResponse(
- @SerializedName("AA") val aa: String?,
- @SerializedName("BB") val bb: Int,
- @SerializedName("CC") val cc: List<String>?
- )
- // Бизнес модель
- data class Some(
- val fullName: String,
- val age: Int,
- val children: List<String>
- )
- class TestFragment() {
- val repository = TestRepository()
- init {
- // Эмулируем хороший ответ
- repository.getInfoState1()
- .subscribe({
- // получили нужную модель
- }, {
- if (it is BadDataResponseException) // обработали так как нам надо
- else it.printStackTrace()
- })
- // Эмулируем плохой ответ
- repository.getInfoState2()
- .subscribe({
- // получили нужную модель
- }, {
- if (it is BadDataResponseException) // обработали так как нам надо
- else it.printStackTrace()
- })
- }
- }
- class TestRepository {
- val service = ServerResponse()
- fun getInfoState1(): Observable<Some> {
- return service.getSomeInfoNormal()
- .map { response ->
- Some(
- fullName = response.aa ?: "",
- age = response.bb,
- children = response.cc ?: emptyList()
- )
- }
- }
- fun getInfoState2(): Observable<Some> {
- return service.getSomeInfoBad()
- .map { response ->
- Some(
- fullName = response.aa ?: throw BadDataResponseException(),
- age = response.bb,
- children = response.cc ?: emptyList()
- )
- }
- }
- }
- // Exception которым мы должны пультся в таких ситуациях
- class BadDataResponseException : RuntimeException()
- // Эмуляция ответов от сервера, реализовывать не надо))
- class ServerResponse : TestService {
- override fun getSomeInfoNormal(): Observable<SomeResponse> {
- return Observable.just(SomeResponse("", 0, emptyList()))
- }
- override fun getSomeInfoBad(): Observable<SomeResponse> {
- return Observable.just(SomeResponse(null, 0, emptyList()))
- }
- }
- interface TestService {
- @GET("someInfo")
- fun getSomeInfoNormal(): Observable<SomeResponse>
- @GET("someInfo")
- fun getSomeInfoBad(): Observable<SomeResponse>
- }
Add Comment
Please, Sign In to add comment