SimpleRequest.java 3.5 KB

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