hasancse1991

Untitled

Jun 22nd, 2019
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. package com.gearsbd.khelobd.network
  2.  
  3. import android.content.Context
  4. import android.net.ConnectivityManager
  5. import android.net.NetworkInfo
  6. import com.gearsbd.khelobd.base_classes.BaseResponse
  7. import io.reactivex.BackpressureStrategy
  8. import io.reactivex.Flowable
  9. import retrofit2.Response
  10.  
  11. fun <T> Flowable<Response<T>>.onResponse() : Flowable<T> {
  12.  
  13. return this.map { response ->
  14. if(response.isSuccessful && response.body() != null) {
  15. if(response.body() is BaseResponse) {
  16. if ((response.body() as BaseResponse).isSuccess) {
  17. response.body()
  18. } else {
  19. throw Exception((response.body() as BaseResponse).message)
  20. }
  21. } else {
  22. throw Exception("Data parsing error")
  23. }
  24. } else {
  25. throw Exception(response.message())
  26. }
  27. }
  28. }
  29.  
  30. fun <T> Flowable<T>.onError(context: Context) : Flowable<T> {
  31. return this.onErrorResumeNext { it: Throwable ->
  32. Flowable.create<T>({ emitter ->
  33. if (!isNetworkAvailable(context)) {
  34. emitter.onError(Exception("No internet connection"))
  35. } else {
  36. emitter.onError(it)
  37. }
  38. }, BackpressureStrategy.BUFFER)
  39. }
  40. }
  41.  
  42. fun isNetworkAvailable(context: Context): Boolean {
  43. val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
  44. val activeNetwork: NetworkInfo? = connectivityManager.activeNetworkInfo
  45. return activeNetwork?.isConnected == true
  46. }
Advertisement
Add Comment
Please, Sign In to add comment