package com.auto.lyric.base.model;
|
|
import androidx.lifecycle.ViewModel;
|
|
import com.auto.lyric.base.activities.BaseActivity;
|
import com.auto.lyric.retrofit.AndroidScheduler;
|
import com.auto.lyric.retrofit.api.FieldData;
|
import com.auto.lyric.retrofit.observable.HttpObserver;
|
import com.auto.lyric.util.DeviceIdUtils;
|
import com.auto.lyric.util.NetWorkUtils;
|
import com.auto.lyric.util.SHA1UTIL;
|
import com.google.gson.Gson;
|
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.UUID;
|
|
import io.reactivex.Observable;
|
import io.reactivex.schedulers.Schedulers;
|
import okhttp3.FormBody;
|
import okhttp3.MediaType;
|
import okhttp3.RequestBody;
|
|
/**
|
* Created by Administrator on 2021/11/11 0011.
|
*/
|
public class BaseViewModel extends ViewModel {
|
|
protected BaseActivity activity;
|
|
public void onCreate(BaseActivity activity){
|
this.activity = activity;
|
}
|
|
protected RequestBody createJsonBody(Object obj){
|
return FormBody.create(MediaType.parse("application/json; charset=utf-8"),obj instanceof String?obj.toString(): new Gson().toJson(obj));
|
}
|
|
/**
|
* 网络请求观察
|
* @param observable
|
* @param <T>
|
* @return
|
*/
|
public <T> void httpObserverOn(Observable<T> observable, HttpObserver observer){
|
observable.subscribeOn(Schedulers.io())//指定网络请求在io后台线程中进行
|
.observeOn(AndroidScheduler.mainThread())
|
.subscribe(observer);
|
}
|
|
public Map getApiFileds(String userId,String activeKey){
|
FieldData data = new FieldData();
|
data.userID = userId;
|
data.ip = NetWorkUtils.getNetIp();
|
data.random = UUID.randomUUID().toString();
|
data.timeStamp = new Date().getTime()/1000+"";
|
data.phoneID = DeviceIdUtils.getAndroidId(activity);
|
data.activeKey = activeKey;
|
String sign = String.format("%s%s%s%s%s%s",activeKey,data.ip,data.phoneID ,data.random,data.timeStamp,userId);
|
data.sign = SHA1UTIL.MD5(SHA1UTIL.getSHA(sign));
|
Gson gson = new Gson();
|
return gson.fromJson(gson.toJson(data), Map.class);
|
}
|
|
public Map<String, RequestBody> getApiMultiFileds(String userId, String activeKey){
|
Map<String,String> fileds = getApiFileds(userId,activeKey);
|
Map<String, RequestBody> multiMap = new HashMap<>();
|
for(String key : fileds.keySet()){
|
multiMap.put(key,RequestBody.create(fileds.get(key),null));
|
}
|
return multiMap;
|
}
|
|
|
}
|