12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package com.jyc.threegames.net;
- import android.app.Dialog;
- import android.content.Context;
- import android.text.TextUtils;
- import android.widget.Toast;
- import com.jyc.threegames.bean.ControllerMessage;
- import io.reactivex.Observable;
- import io.reactivex.android.schedulers.AndroidSchedulers;
- import io.reactivex.disposables.Disposable;
- import io.reactivex.functions.Consumer;
- import io.reactivex.schedulers.Schedulers;
- public class SimpleRequest<T> {
- public Disposable request(Context context, Observable<? extends ControllerMessage<T>> req){
- return request(context, req, null, null, null, null, null);
- }
- public Disposable request(Context context, Observable<? extends ControllerMessage<T>> req, Executor<T> success){
- return request(context, req, null, null, success, null, null);
- }
- public Disposable requestMustDo(Context context, Observable<? extends ControllerMessage<T>> req, String errorMessage, Dialog loading, Executor<ControllerMessage<T>> mustDo){
- return request(context, req, null, null, null, mustDo, null);
- }
- public Disposable request(Context context, Observable<? extends ControllerMessage<T>> req, Executor<T> success, Executor<Throwable> error){
- return request(context, req, null, null, success, null, error);
- }
- public Disposable request(Context context, Observable<? extends ControllerMessage<T>> req, String errorMessage, Executor<T> success){
- return request(context, req, errorMessage, null, success, null, null);
- }
- public Disposable request(Context context, Observable<? extends ControllerMessage<T>> req, String errorMessage, Dialog loading, Executor<T> success){
- return request(context, req, errorMessage, loading, success, null, null);
- }
- 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){
- return req.subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Consumer<ControllerMessage<T>>() {
- @Override
- public void accept(ControllerMessage<T> message) throws Exception {
- if (loading != null)
- loading.dismiss();
- if (mustDo != null) {
- mustDo.execute(message);
- return;
- }
- if (message.isSuccess() && success != null){
- success.execute(message.getObject());
- }else
- if (!TextUtils.isEmpty(errorMessage))
- Toast.makeText(context, TextUtils.isEmpty(message.getMessage()) ? errorMessage : message.getMessage() , Toast.LENGTH_LONG).show();
- }
- }, new Consumer<Throwable>() {
- @Override
- public void accept(Throwable throwable) throws Exception {
- if (loading != null)
- loading.dismiss();
- if (error != null)
- error.execute(throwable);
- else if (!TextUtils.isEmpty(errorMessage))
- Toast.makeText(context, errorMessage, Toast.LENGTH_LONG).show();
- }
- });
- }
- public interface Executor<T>{
- void execute(T obj);
- }
- }
|