All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.leancloud.core.PushClient Maven / Gradle / Ivy

package cn.leancloud.core;

import cn.leancloud.service.PushService;
import cn.leancloud.utils.ErrorUtils;
import cn.leancloud.json.JSONObject;
import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;

import java.util.Map;

public class PushClient {
  private PushService service = null;
  private boolean asynchronized = false;
  private AppConfiguration.SchedulerCreator defaultCreator = null;

  public PushClient(PushService service, boolean asyncRequest, AppConfiguration.SchedulerCreator observerSchedulerCreator) {
    this.service = service;
    this.asynchronized = AppConfiguration.isAsynchronized();
    this.defaultCreator = AppConfiguration.getDefaultScheduler();
    PaasClient.getGlobalOkHttpClient();
  }

  public Observable sendPushRequest(Map param) {
    return wrapObservable(service.sendPushRequest(JSONObject.Builder.create(param)));
  }

  private Observable wrapObservable(Observable observable) {
    if (null == observable) {
      return null;
    }
    if (asynchronized) {
      observable = observable.subscribeOn(Schedulers.io());
    }
    if (null != defaultCreator) {
      observable = observable.observeOn(defaultCreator.create());
    }
    observable = observable.onErrorResumeNext(new Function() {
      @Override
      public ObservableSource apply(Throwable throwable) throws Exception {
        return Observable.error(ErrorUtils.propagateException(throwable));
      }
    });
    return observable;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy