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 { public Disposable request(Context context, Observable> req){ return request(context, req, null, null, null, null, null); } public Disposable request(Context context, Observable> req, Executor success){ return request(context, req, null, null, success, null, null); } public Disposable requestMustDo(Context context, Observable> req, String errorMessage, Dialog loading, Executor> mustDo){ return request(context, req, null, null, null, mustDo, null); } public Disposable request(Context context, Observable> req, Executor success, Executor error){ return request(context, req, null, null, success, null, error); } public Disposable request(Context context, Observable> req, String errorMessage, Executor success){ return request(context, req, errorMessage, null, success, null, null); } public Disposable request(Context context, Observable> req, String errorMessage, Dialog loading, Executor success){ return request(context, req, errorMessage, loading, success, null, null); } public Disposable request(final Context context, Observable> req, final String errorMessage, final Dialog loading, final Executor success, final Executor> mustDo, final Executor error){ return req.subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer>() { @Override public void accept(ControllerMessage 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() { @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{ void execute(T obj); } }