增加了V2XApiServiceFactory.java

解决HttpDns的域名不同问题
V2XApiServiceFactory可以获取指定的域名对应的API
This commit is contained in:
董宏宇
2021-01-07 11:26:36 +08:00
parent f74432453a
commit 80689307b2
2 changed files with 106 additions and 15 deletions

View File

@@ -0,0 +1,97 @@
package com.mogo.module.v2x.network;
import android.content.Context;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.module.common.constants.HostConst;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.network.IMogoNetwork;
/**
* 应对不同接口对应不同服务域名的工厂累
*/
public class V2XApiServiceFactory {
private static V2XApiService mDevaApiService;
private static V2XApiService mDataApiService;
private static V2XApiService mLauncherSnapshotApiService;
private static V2XApiService mGeoFenceCarServiceApiService;
private static V2XApiService mRealtimeLocationApiService;
private static V2XApiService mDataServiceApiService;
/**
* 获取指定域名下的 API 服务
*/
public static V2XApiService getApiService(Context context, String netHost) {
IMogoNetwork network = (IMogoNetwork) ARouter.getInstance()
.build(MogoServicePaths.PATH_SERVICES_NETWORK)
.navigation(context);
return network.create(V2XApiService.class, netHost);
}
public static V2XApiService getDevaApiService(Context context) {
if (mDevaApiService == null) {
synchronized (V2XApiServiceFactory.class) {
if (mDevaApiService == null) {
mDevaApiService = getApiService(context, HostConst.DEVA_HOST);
}
}
}
return mDevaApiService;
}
public static V2XApiService getDataApiService(Context context) {
if (mDataApiService == null) {
synchronized (V2XApiServiceFactory.class) {
if (mDataApiService == null) {
mDataApiService = getApiService(context, HostConst.DATA_SERVICE_HOST);
}
}
}
return mDataApiService;
}
public static V2XApiService getLauncherSnapshotApiService(Context context) {
if (mLauncherSnapshotApiService == null) {
synchronized (V2XApiServiceFactory.class) {
if (mLauncherSnapshotApiService == null) {
mLauncherSnapshotApiService = getApiService(context, HostConst.LAUNCHER_SNAPSHOT_HOST);
}
}
}
return mLauncherSnapshotApiService;
}
public static V2XApiService getGeoFenceCarServiceApiService(Context context) {
if (mGeoFenceCarServiceApiService == null) {
synchronized (V2XApiServiceFactory.class) {
if (mGeoFenceCarServiceApiService == null) {
mGeoFenceCarServiceApiService = getApiService(context, HostConst.GEOFENCE_HOST);
}
}
}
return mGeoFenceCarServiceApiService;
}
public static V2XApiService getRealtimeLocationApiService(Context context) {
if (mRealtimeLocationApiService == null) {
synchronized (V2XApiServiceFactory.class) {
if (mRealtimeLocationApiService == null) {
mRealtimeLocationApiService = getApiService(context, HostConst.REALTIME_LOCATION_HOST);
}
}
}
return mRealtimeLocationApiService;
}
public static V2XApiService getDataServiceApiService(Context context) {
if (mDataServiceApiService == null) {
synchronized (V2XApiServiceFactory.class) {
if (mDataServiceApiService == null) {
mDataServiceApiService = getApiService(context, HostConst.DATA_SERVICE_HOST);
}
}
}
return mDataServiceApiService;
}
}

View File

@@ -2,13 +2,10 @@ package com.mogo.module.v2x.network;
import android.content.Context;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.data.BaseData;
import com.mogo.commons.network.ParamsProvider;
import com.mogo.commons.network.SubscribeImpl;
import com.mogo.commons.network.Utils;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.network.IMogoNetwork;
import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.GsonUtil;
@@ -26,21 +23,18 @@ import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
public class V2XShareNetworkModel {
private final Context mContext;
private V2XApiService mRefreshApiService;
private static final String TAG = "V2XShareNetworkModel";
private final Context mContext;
public V2XShareNetworkModel(Context context) {
this.mContext = context;
IMogoNetwork network = (IMogoNetwork) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_NETWORK).navigation(context);
this.mRefreshApiService = network.create(V2XApiService.class, HttpConstant.Companion.getNetHost());
}
/*
/**
* 两个任务串行
* 1.分享次数,热心指数
* 2.分享列表
* */
*/
public void getShareEventResponse(int page, int size, V2XRefreshCallback callback) {
Observable<String> indexObservable = Observable.create(new ObservableOnSubscribe<String>() {
@@ -99,9 +93,9 @@ public class V2XShareNetworkModel {
});
}
/*
/**
* 热心指数
* */
*/
public void getShareIndex(V2XRefreshCallback callback) {
final ParamsProvider.Builder builder = new ParamsProvider.Builder(mContext);
HashMap<String, Object> hashMap = new HashMap<>();
@@ -109,7 +103,7 @@ public class V2XShareNetworkModel {
builder.append("data", GsonUtil.jsonFromObject(hashMap));
Map<String, Object> parameters = builder.build();
//热心指数
mRefreshApiService.getEnthusiasmIndex(parameters)
V2XApiServiceFactory.getDevaApiService(mContext).getEnthusiasmIndex(parameters)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create((mContext))) {
@@ -140,9 +134,9 @@ public class V2XShareNetworkModel {
}
/*
/**
* 分享列表
* */
*/
public void getShareEventList(int page, int size, V2XRefreshCallback callback) {
final ParamsProvider.Builder builder = new ParamsProvider.Builder(mContext);
@@ -153,7 +147,7 @@ public class V2XShareNetworkModel {
builder.append("data", GsonUtil.jsonFromObject(hashMap));
Map<String, Object> parameters = builder.build();
mRefreshApiService.getShareEventList(parameters)
V2XApiServiceFactory.getDevaApiService(mContext).getShareEventList(parameters)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(mContext)) {