Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.gearsbd.khelobd.network
- import android.content.Context
- import android.net.ConnectivityManager
- import android.net.NetworkInfo
- import com.gearsbd.khelobd.base_classes.BaseResponse
- import io.reactivex.BackpressureStrategy
- import io.reactivex.Flowable
- import retrofit2.Response
- fun <T> Flowable<Response<T>>.onResponse() : Flowable<T> {
- return this.map { response ->
- if(response.isSuccessful && response.body() != null) {
- if(response.body() is BaseResponse) {
- if ((response.body() as BaseResponse).isSuccess) {
- response.body()
- } else {
- throw Exception((response.body() as BaseResponse).message)
- }
- } else {
- throw Exception("Data parsing error")
- }
- } else {
- throw Exception(response.message())
- }
- }
- }
- fun <T> Flowable<T>.onError(context: Context) : Flowable<T> {
- return this.onErrorResumeNext { it: Throwable ->
- Flowable.create<T>({ emitter ->
- if (!isNetworkAvailable(context)) {
- emitter.onError(Exception("No internet connection"))
- } else {
- emitter.onError(it)
- }
- }, BackpressureStrategy.BUFFER)
- }
- }
- fun isNetworkAvailable(context: Context): Boolean {
- val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
- val activeNetwork: NetworkInfo? = connectivityManager.activeNetworkInfo
- return activeNetwork?.isConnected == true
- }
Advertisement
Add Comment
Please, Sign In to add comment