代码抽取聚合

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:
xuxinchao
2021-12-20 15:14:13 +08:00
parent cdd9afb7da
commit ac05802f34
130 changed files with 325 additions and 1041 deletions

View File

@@ -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;

View File

@@ -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();

View File

@@ -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;
}
}

View File

@@ -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";
/**
* signsalt
*/
String SIGN_PREFIX = "JGjZx6";
}

View File

@@ -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 );
}
}

View File

@@ -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;
}
}

View File

@@ -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());
}
}

View File

@@ -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;

View File

@@ -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 {

View File

@@ -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";
}

View File

@@ -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() {
}
}

View File

@@ -1,5 +1,6 @@
package com.mogo.commons.network;
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;

View File

@@ -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];
}
}