|
|
@@ -0,0 +1,94 @@
|
|
|
+/*
|
|
|
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
|
|
|
+ */
|
|
|
+package kr.co.zumo.app.lifeplus.model.module;
|
|
|
+
|
|
|
+import android.util.Log;
|
|
|
+
|
|
|
+import io.reactivex.Single;
|
|
|
+import io.reactivex.disposables.Disposable;
|
|
|
+import io.reactivex.functions.Consumer;
|
|
|
+import kr.co.zumo.app.lifeplus.bean.api.LifeplusAPIBean;
|
|
|
+import kr.co.zumo.app.lifeplus.bean.api.RequestBean;
|
|
|
+
|
|
|
+/**
|
|
|
+ * APIFAQModule
|
|
|
+ * <pre>
|
|
|
+ * </pre>
|
|
|
+ *
|
|
|
+ * @author 민효동
|
|
|
+ * @version 1.0
|
|
|
+ * @history 민효동 [2018. 10. 12.] [최초 작성]
|
|
|
+ * @since 2018. 10. 12.
|
|
|
+ */
|
|
|
+public abstract class APIModule<T extends RequestBean, R extends LifeplusAPIBean> implements Disposable {
|
|
|
+
|
|
|
+ protected Disposable disposable;
|
|
|
+
|
|
|
+ // result
|
|
|
+ public class APIConsumer implements Consumer<LifeplusAPIBean> {
|
|
|
+ private IAPIModuleListener listener;
|
|
|
+
|
|
|
+ public APIConsumer(IAPIModuleListener listener) {
|
|
|
+ this.listener = listener;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void accept(LifeplusAPIBean resultBean) throws Exception {
|
|
|
+ Log.i("APP# APIModule | accept", "| " + resultBean.toPrettyJson());
|
|
|
+ if (resultBean.isSuccess()) {
|
|
|
+ listener.onApiResult(resultBean);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ listener.onApiError(resultBean.getReturnMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // error
|
|
|
+ public class APIErrorConsumer implements Consumer<Throwable> {
|
|
|
+ private IAPIModuleListener listener;
|
|
|
+
|
|
|
+ public APIErrorConsumer(IAPIModuleListener listener) {
|
|
|
+ this.listener = listener;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void accept(Throwable e) throws Exception {
|
|
|
+ listener.onApiError(e.getLocalizedMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void dispose() {
|
|
|
+ if (null != disposable) {
|
|
|
+ disposable.dispose();
|
|
|
+ disposable = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean isDisposed() {
|
|
|
+ if (null != disposable) {
|
|
|
+ return disposable.isDisposed();
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /***********************************
|
|
|
+ * abstract
|
|
|
+ ***********************************/
|
|
|
+
|
|
|
+ protected abstract Single<R> getAPI(T requestBean);
|
|
|
+
|
|
|
+
|
|
|
+ /***********************************
|
|
|
+ * public
|
|
|
+ ***********************************/
|
|
|
+
|
|
|
+ public Disposable call(T requestBean, IAPIModuleListener listener) {
|
|
|
+ disposable = getAPI(requestBean).subscribe(new APIConsumer(listener), new APIErrorConsumer(listener));
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|