SimpleRequest.java 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package com.jyc.threegames.net;
  2. import android.app.Dialog;
  3. import android.content.Context;
  4. import android.text.TextUtils;
  5. import android.widget.Toast;
  6. import com.jyc.threegames.bean.ControllerMessage;
  7. import com.jyc.threegames.utils.ToastUtil;
  8. import io.reactivex.Observable;
  9. import io.reactivex.android.schedulers.AndroidSchedulers;
  10. import io.reactivex.disposables.Disposable;
  11. import io.reactivex.functions.Consumer;
  12. import io.reactivex.schedulers.Schedulers;
  13. public class SimpleRequest<T> {
  14. public Disposable request(Context context, Observable<? extends ControllerMessage<T>> req){
  15. return request(context, req, null, null, null, null, null);
  16. }
  17. public Disposable request(Context context, Observable<? extends ControllerMessage<T>> req, Executor<T> success){
  18. return request(context, req, null, null, success, null, null);
  19. }
  20. public Disposable requestMustDo(Context context, Observable<? extends ControllerMessage<T>> req, String errorMessage, Dialog loading, Executor<ControllerMessage<T>> mustDo){
  21. return request(context, req, null, null, null, mustDo, null);
  22. }
  23. public Disposable request(Context context, Observable<? extends ControllerMessage<T>> req, Executor<T> success, Executor<Throwable> error){
  24. return request(context, req, null, null, success, null, error);
  25. }
  26. public Disposable request(Context context, Observable<? extends ControllerMessage<T>> req, String errorMessage, Executor<T> success){
  27. return request(context, req, errorMessage, null, success, null, null);
  28. }
  29. public Disposable request(Context context, Observable<? extends ControllerMessage<T>> req, String errorMessage, Dialog loading, Executor<T> success){
  30. return request(context, req, errorMessage, loading, success, null, null);
  31. }
  32. public Disposable request(final Context context, Observable<? extends ControllerMessage<T>> req, final String errorMessage, final Dialog loading, final Executor<T> success, final Executor<ControllerMessage<T>> mustDo, final Executor<Throwable> error){
  33. return req.subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread())
  34. .subscribe(new Consumer<ControllerMessage<T>>() {
  35. @Override
  36. public void accept(ControllerMessage<T> message) throws Exception {
  37. if (loading != null)
  38. loading.dismiss();
  39. if (mustDo != null) {
  40. mustDo.execute(message);
  41. return;
  42. }
  43. if (message.isSuccess() && success != null){
  44. success.execute(message.getObject());
  45. }else
  46. if (!TextUtils.isEmpty(errorMessage))
  47. ToastUtil.showToast(context, TextUtils.isEmpty(message.getMessage()) ? errorMessage : message.getMessage());
  48. }
  49. }, new Consumer<Throwable>() {
  50. @Override
  51. public void accept(Throwable throwable) throws Exception {
  52. if (loading != null)
  53. loading.dismiss();
  54. if (error != null)
  55. error.execute(throwable);
  56. else if (!TextUtils.isEmpty(errorMessage))
  57. ToastUtil.showToast(context, errorMessage);
  58. }
  59. });
  60. }
  61. public interface Executor<T>{
  62. void execute(T obj);
  63. }
  64. }