代码抽取聚合
1、将foudations包下mogo-utils模块下的network部分,抽取到core包下的mogo-core-network模块 2、将foudations包下mogo-commons模块下的部分network类,抽取到core包下的mogo-core-network模块 3、将AbsMogoApplication类中网络配置代码,抽取到NetConfigUtils类中
This commit is contained in:
@@ -19,24 +19,12 @@ import com.mogo.commons.analytics.AnalyticsUtils;
|
||||
import com.mogo.commons.crash.FinalizeCrashFixer;
|
||||
import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.commons.device.Devices;
|
||||
import com.mogo.commons.network.AllAllowedHostnameVerifier;
|
||||
import com.mogo.commons.network.Constants;
|
||||
import com.mogo.commons.network.ParamsUtil;
|
||||
import com.mogo.commons.network.X509TrustManagerImpl;
|
||||
import com.mogo.commons.storage.SpStorage;
|
||||
import com.mogo.commons.network.NetConfigUtils;
|
||||
import com.mogo.eagle.core.utilcode.mogo.toast.TipDrawable;
|
||||
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
|
||||
import com.mogo.eagle.core.utilcode.util.Utils;
|
||||
import com.mogo.utils.ThreadPoolService;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
import com.mogo.utils.network.NetConfig;
|
||||
|
||||
import java.security.SecureRandom;
|
||||
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.TrustManager;
|
||||
|
||||
import okhttp3.Request;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
@@ -135,25 +123,14 @@ public abstract class AbsMogoApplication extends Application {
|
||||
return contentView;
|
||||
}
|
||||
|
||||
/**
|
||||
* 忽略 https 验证
|
||||
*
|
||||
* @return {@link SSLContext}
|
||||
* @throws Exception
|
||||
*/
|
||||
private static SSLContext getSslContext() throws Exception {
|
||||
SSLContext sc = null;
|
||||
sc = SSLContext.getInstance("SSL");
|
||||
sc.init(null, new TrustManager[]{new X509TrustManagerImpl()}, new SecureRandom());
|
||||
return sc;
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步初始化
|
||||
*/
|
||||
protected void asyncInit() {
|
||||
ThreadPoolService.execute(() -> {
|
||||
initNetConfig();
|
||||
|
||||
//初始化网络配置
|
||||
NetConfigUtils.init(sApis);
|
||||
// 初始化埋点
|
||||
AnalyticsUtils.init(sApp);
|
||||
if (DebugConfig.getCarMachineType() == CAR_MACHINE_TYPE_SELF_INNOVATE) {
|
||||
@@ -171,39 +148,7 @@ public abstract class AbsMogoApplication extends Application {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化网络配置
|
||||
*/
|
||||
private static void initNetConfig() {
|
||||
try {
|
||||
SSLContext sc = getSslContext();
|
||||
NetConfig.instance().setSslContext(sc);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
NetConfig.instance().setSignaturePrefix(Constants.SIGN_PREFIX)
|
||||
.setPublicParams(ParamsUtil.getStaticParams())
|
||||
.setHostnameVerifier(new AllAllowedHostnameVerifier())
|
||||
.addNetworkInterceptor(chain -> {
|
||||
Request original = chain.request();
|
||||
Request request = original.newBuilder()
|
||||
.header("token", SpStorage.getTicket())
|
||||
.method(original.method(), original.body())
|
||||
.build();
|
||||
return chain.proceed(request);
|
||||
})
|
||||
// 增加域名->域名的转换方式,暂时去掉httpdns方式
|
||||
.addInterceptor(chain -> {
|
||||
Request request = chain.request();
|
||||
String path = request.url().encodedPath();
|
||||
String host = "http://" + sApis.syncGetHttpDns(request.url().host().replace("http://", "").replace("https://", ""), HTTP_DNS_ADDRESS_TYPE_HTTP, true);
|
||||
String url = host + path;
|
||||
Logger.d("DomainExchange", "oriHost: " + request.url().host() + " newHost: " + host + " \r\n newUrl: " + url);
|
||||
return chain.proceed(request.newBuilder().url(url).build());
|
||||
})
|
||||
.setHttpDns(null)
|
||||
.setLoggable(DebugConfig.isDebug());
|
||||
}
|
||||
|
||||
|
||||
// 缓存IP地址
|
||||
private String cacheIp = null;
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
package com.mogo.commons.analytics;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.Keep;
|
||||
import android.content.Context;
|
||||
|
||||
import com.elegant.analytics.Analytics;
|
||||
import com.elegant.analytics.AnalyticsConfig;
|
||||
@@ -14,6 +13,8 @@ import com.mogo.commons.network.ParamsUtil;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import androidx.annotation.Keep;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
* @since 2019-12-23
|
||||
@@ -29,7 +30,7 @@ public class AnalyticsUtils {
|
||||
AnalyticsConfig.getInstance( context ).setAppKey( "6bbe7e0e1ecd8e2f8dc336e1678a2791" );
|
||||
AnalyticsConfig.getInstance( context ).setUploadMode( DebugConfig.isDebug() ? UploadMode.instant : UploadMode.cache );
|
||||
AnalyticsConfig.getInstance( context ).setShouldLog( DebugConfig.isDebug() );
|
||||
AnalyticsConfig.getInstance( AbsMogoApplication.getApp() ).setParamsProvider( new IAnalyticsParamsProvider() {
|
||||
AnalyticsConfig.getInstance( AbsMogoApplication.getApp() ).setParamsProvider(new IAnalyticsParamsProvider() {
|
||||
@Override
|
||||
public Map< String, Object > staticParams() {
|
||||
return ParamsUtil.getAnalyticsCustomParams();
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
package com.mogo.commons.network;
|
||||
|
||||
import javax.net.ssl.HostnameVerifier;
|
||||
import javax.net.ssl.SSLSession;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
* @since 2019-08-30
|
||||
* <p>
|
||||
* 信任所有域名
|
||||
*/
|
||||
public class AllAllowedHostnameVerifier implements HostnameVerifier {
|
||||
|
||||
@Override
|
||||
public boolean verify( String hostname, SSLSession session ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
package com.mogo.commons.network;
|
||||
|
||||
public interface Constants {
|
||||
|
||||
String UTF_8 = "UTF-8";
|
||||
|
||||
String KEY_PHONE = "user_phone";
|
||||
String KEY_TOKEN = "user_token ";
|
||||
String KEY_USER_ID = "userId";
|
||||
String KEY_DISPLAY_NAME = "displayName";
|
||||
String KEY_SN = "sn";
|
||||
|
||||
String OS = "Android-Car";
|
||||
|
||||
String KEY_SOURCE = ServerParam.SOURCE;
|
||||
String DEFAULT_SOURCE = "appLauncher";
|
||||
|
||||
// 车机已绑定状态
|
||||
int STATUS_BIND = 1;
|
||||
|
||||
String KEY_TICKET = "ticket";
|
||||
|
||||
/**
|
||||
* sign,salt
|
||||
*/
|
||||
String SIGN_PREFIX = "JGjZx6";
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
package com.mogo.commons.network;
|
||||
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.mogo.utils.logger.Logger;
|
||||
import com.mogo.utils.network.BaseParams;
|
||||
import com.mogo.utils.network.HttpParams;
|
||||
|
||||
|
||||
/**
|
||||
* Created by congtaowang on 2018/10/21.
|
||||
*/
|
||||
public class HttpParamsEx extends HttpParams {
|
||||
|
||||
private static final String TAG = "HttpParamsEx";
|
||||
|
||||
@Override
|
||||
public BaseParams put( String key, Object value ) {
|
||||
|
||||
if ( !TextUtils.isEmpty( key ) ) {
|
||||
if ( value == null ) {
|
||||
Logger.e( TAG, "%s with illegal value", key );
|
||||
}
|
||||
}
|
||||
return super.put( key, value );
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
package com.mogo.commons.network;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
* @since 2020-01-02
|
||||
* <p>
|
||||
* 缓存当前经纬度位置,便于接口请求
|
||||
*/
|
||||
public class LocationHelper {
|
||||
|
||||
private static volatile LocationHelper sInstance;
|
||||
|
||||
private LocationHelper() {
|
||||
}
|
||||
|
||||
public static LocationHelper getInstance() {
|
||||
if ( sInstance == null ) {
|
||||
synchronized ( LocationHelper.class ) {
|
||||
if ( sInstance == null ) {
|
||||
sInstance = new LocationHelper();
|
||||
}
|
||||
}
|
||||
}
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
public synchronized void release() {
|
||||
sInstance = null;
|
||||
}
|
||||
|
||||
private Map< String, Object > mLocationProperties = new HashMap<>();
|
||||
|
||||
public synchronized Map< String, Object > getLocationProperties() {
|
||||
return mLocationProperties;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.mogo.commons.network;
|
||||
|
||||
import com.mogo.aicloud.services.httpdns.IMogoHttpDns;
|
||||
import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.commons.storage.SpStorage;
|
||||
import com.mogo.eagle.core.network.AllAllowedHostnameVerifier;
|
||||
import com.mogo.eagle.core.network.Constants;
|
||||
import com.mogo.eagle.core.network.NetConfig;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
|
||||
import javax.net.ssl.SSLContext;
|
||||
|
||||
import okhttp3.Request;
|
||||
|
||||
import static com.mogo.aicloud.services.httpdns.HttpDnsConst.HTTP_DNS_ADDRESS_TYPE_HTTP;
|
||||
|
||||
/**
|
||||
* @author xuxinchao
|
||||
* @description 网络配置工具
|
||||
* @since: 2021/12/20
|
||||
*/
|
||||
public class NetConfigUtils {
|
||||
|
||||
/**
|
||||
* 网络配置初始化
|
||||
* @param iMogoHttpDns Http DNS转换实现
|
||||
*/
|
||||
public static void init(IMogoHttpDns iMogoHttpDns){
|
||||
try {
|
||||
SSLContext sc = NetConfig.getSslContext();
|
||||
NetConfig.instance().setSslContext(sc);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
NetConfig.instance().setSignaturePrefix(Constants.SIGN_PREFIX)
|
||||
.setPublicParams(ParamsUtil.getStaticParams())
|
||||
.setHostnameVerifier(new AllAllowedHostnameVerifier())
|
||||
.addNetworkInterceptor(chain -> {
|
||||
Request original = chain.request();
|
||||
Request request = original.newBuilder()
|
||||
.header("token", SpStorage.getTicket())
|
||||
.method(original.method(), original.body())
|
||||
.build();
|
||||
return chain.proceed(request);
|
||||
})
|
||||
// 增加域名->域名的转换方式,暂时去掉httpdns方式
|
||||
.addInterceptor(chain -> {
|
||||
Request request = chain.request();
|
||||
String path = request.url().encodedPath();
|
||||
String host = "http://" + iMogoHttpDns.syncGetHttpDns(request.url().host().replace("http://", "").replace("https://", ""), HTTP_DNS_ADDRESS_TYPE_HTTP, true);
|
||||
String url = host + path;
|
||||
Logger.d("DomainExchange", "oriHost: " + request.url().host() + " newHost: " + host + " \r\n newUrl: " + url);
|
||||
return chain.proceed(request.newBuilder().url(url).build());
|
||||
})
|
||||
.setHttpDns(null)
|
||||
.setLoggable(DebugConfig.isDebug());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,11 +2,13 @@ package com.mogo.commons.network;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.mogo.utils.CheckUtils;
|
||||
import com.mogo.utils.network.HttpParams;
|
||||
import com.mogo.utils.network.NetConfig;
|
||||
import com.mogo.utils.network.ServerParam;
|
||||
import com.mogo.utils.network.utils.SignUtil;
|
||||
import com.elegant.utils.CheckUtils;
|
||||
import com.mogo.eagle.core.network.Constants;
|
||||
import com.mogo.eagle.core.network.HttpParams;
|
||||
import com.mogo.eagle.core.network.HttpParamsEx;
|
||||
import com.mogo.eagle.core.network.NetConfig;
|
||||
import com.mogo.eagle.core.network.ServerParam;
|
||||
import com.mogo.eagle.core.network.utils.SignUtil;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -3,24 +3,26 @@ package com.mogo.commons.network;
|
||||
import android.os.Build;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.collection.ArrayMap;
|
||||
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.commons.storage.SpStorage;
|
||||
import com.mogo.eagle.core.network.Constants;
|
||||
import com.mogo.eagle.core.network.LocationHelper;
|
||||
import com.mogo.eagle.core.network.ServerParam;
|
||||
import com.mogo.eagle.core.network.utils.GsonUtil;
|
||||
import com.mogo.utils.CommonUtils;
|
||||
import com.mogo.utils.DeviceIdUtils;
|
||||
import com.mogo.utils.WindowUtils;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
import com.mogo.utils.network.utils.GsonUtil;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.collection.ArrayMap;
|
||||
import okhttp3.RequestBody;
|
||||
|
||||
public class ParamsUtil {
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
package com.mogo.commons.network;
|
||||
|
||||
class ServerParam {
|
||||
|
||||
public static final String LAT = "lat";
|
||||
public static final String LNG = "lng";
|
||||
public static final String CITY_CODE = "cityCode";
|
||||
public static final String AD_CODE = "adCode";
|
||||
public static final String SELECTED_AD_CODE = "selectedAdCode";
|
||||
|
||||
// 用户名
|
||||
public static final String DISPLAY_NAME = "displayName";
|
||||
|
||||
public static final String OS = "os";
|
||||
public static final String BRAND = "brand";
|
||||
public static final String MANUFACTURER = "manufacturer";
|
||||
public static final String MODEL = "model";
|
||||
public static final String OS_VERSION = "osVersion";
|
||||
public static final String PRODUCT = "product";
|
||||
// 系统版本号
|
||||
public static final String DISPLAY_ID = "displayId";
|
||||
|
||||
public static final String MOBILE_MODEL = "hardWareModel";
|
||||
public static final String CELL_ID = "cellId";
|
||||
public static final String IMEI = "imei";
|
||||
public static final String IMSI = "imsi";
|
||||
public static final String SOURCE = "source";
|
||||
public static final String NET_TYPE = "netType";
|
||||
public static final String VERSION_CODE = "appVersionCode";
|
||||
public static final String VERSION_NAME = "appVersion";
|
||||
public static final String SCREEN_PIXELS = "pixels";
|
||||
public static final String ANDROID_ID = "androidId";
|
||||
public static final String DEVICE_ID = "deviceId";
|
||||
public static final String SN = "sn";
|
||||
public static final String CHANNEL = "channel";
|
||||
|
||||
public static final String FOTA_VERSION = "fotaVersion";
|
||||
|
||||
public static final String USER_ID = "userId";
|
||||
public static final String FILE = "file";
|
||||
public static final String END_POINT = "endPoint";
|
||||
public static final String END_POINT_CAR = "CAR";
|
||||
|
||||
public static final String PHONE = "phone";
|
||||
public static final String TICKET = "ticket";
|
||||
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
package com.mogo.commons.network;
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
import com.mogo.utils.network.RequestOptions;
|
||||
import com.mogo.utils.network.utils.Util;
|
||||
|
||||
import io.reactivex.Observer;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
|
||||
/**
|
||||
* Created by congtaowang on 2018/10/14.
|
||||
*/
|
||||
public abstract class SubscribeImpl< T extends BaseData> implements Observer< T > {
|
||||
|
||||
protected final RequestOptions mRequestOptions;
|
||||
|
||||
private static final String TAG = "SubscribeImpl";
|
||||
private boolean mAutoTipMsg = true;
|
||||
|
||||
public SubscribeImpl( RequestOptions requestOptions ) {
|
||||
mRequestOptions = requestOptions;
|
||||
}
|
||||
|
||||
public SubscribeImpl( RequestOptions requestOptions, boolean autoTipMsg ) {
|
||||
this( requestOptions );
|
||||
mAutoTipMsg = autoTipMsg;
|
||||
}
|
||||
|
||||
private void onFinish() {
|
||||
if ( !Util.checkAlive( mRequestOptions.getCaller() ) ) {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError( Throwable e ) {
|
||||
onFinish();
|
||||
Logger.e( TAG, e, "occur when net request." );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext( T o ) {
|
||||
if ( o != null ) {
|
||||
if ( o.code != 0 && o.code!= 200 ) {
|
||||
onError( o.msg, o.code );
|
||||
} else {
|
||||
onSuccess( o );
|
||||
}
|
||||
} else {
|
||||
onError( "", -1 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onSubscribe( Disposable d ) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
onFinish();
|
||||
}
|
||||
|
||||
public void onSuccess( T o ) {
|
||||
}
|
||||
|
||||
public void onError( String message, int code ) {
|
||||
Logger.e( TAG, "%d - %s", code, message );
|
||||
}
|
||||
|
||||
private static boolean isTicketUpdated = false;
|
||||
|
||||
private void onUpdateTicket() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.mogo.commons.network;
|
||||
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
package com.mogo.commons.network;
|
||||
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.cert.X509Certificate;
|
||||
|
||||
import javax.net.ssl.X509TrustManager;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
* @since 2019-08-30
|
||||
* <p>
|
||||
* 描述
|
||||
*/
|
||||
public class X509TrustManagerImpl implements X509TrustManager {
|
||||
|
||||
@Override
|
||||
public void checkClientTrusted( X509Certificate[] chain, String authType ) throws CertificateException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkServerTrusted( X509Certificate[] chain, String authType ) throws CertificateException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public X509Certificate[] getAcceptedIssuers() {
|
||||
return new X509Certificate[0];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user