parent
a70c9bb35c
commit
64abf589b1
Binary file not shown.
@ -1,335 +0,0 @@ |
||||
package xyz.fycz.myreader.model.user; |
||||
|
||||
import android.content.Context; |
||||
|
||||
import io.reactivex.annotations.NonNull; |
||||
import xyz.fycz.myreader.application.App; |
||||
import xyz.fycz.myreader.model.storage.Backup; |
||||
import xyz.fycz.myreader.model.storage.Restore; |
||||
import xyz.fycz.myreader.webapi.ResultCallback; |
||||
import xyz.fycz.myreader.common.APPCONST; |
||||
import xyz.fycz.myreader.common.URLCONST; |
||||
import xyz.fycz.myreader.util.*; |
||||
import xyz.fycz.myreader.util.utils.FileUtils; |
||||
|
||||
import java.io.*; |
||||
import java.net.HttpURLConnection; |
||||
import java.net.URL; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* @author fengyue |
||||
* @date 2020/4/26 11:03 |
||||
*/ |
||||
public class UserService { |
||||
/** |
||||
* 登录 |
||||
* @param userLoginInfo 用户名输入的用户名和密码等登录信息 |
||||
* @return 是否成功登录 |
||||
*/ |
||||
public static void login(final Map<String, String> userLoginInfo, final ResultCallback resultCallback) { |
||||
App.getApplication().newThread(() -> { |
||||
HttpURLConnection conn = null; |
||||
try { |
||||
URL url = new URL(URLCONST.APP_WEB_URL + "login"); |
||||
conn = (HttpURLConnection) url.openConnection(); |
||||
conn.setRequestMethod("POST"); |
||||
conn.setConnectTimeout(60 * 1000); |
||||
conn.setReadTimeout(60 * 1000); |
||||
conn.setDoInput(true); |
||||
conn.setDoOutput(true); |
||||
String params = "username=" + userLoginInfo.get("loginName") + |
||||
"&password=" + userLoginInfo.get("loginPwd") + makeSignalParam(); |
||||
// 获取URLConnection对象对应的输出流
|
||||
PrintWriter out = new PrintWriter(conn.getOutputStream()); |
||||
// 发送请求参数
|
||||
out.print(params); |
||||
// flush输出流的缓冲
|
||||
out.flush(); |
||||
InputStream in = conn.getInputStream(); |
||||
BufferedReader bw = new BufferedReader(new InputStreamReader(in, "utf-8")); |
||||
StringBuilder sb = new StringBuilder(); |
||||
String line = bw.readLine(); |
||||
while (line != null) { |
||||
sb.append(line); |
||||
line = bw.readLine(); |
||||
} |
||||
resultCallback.onFinish(sb.toString(), 1); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
resultCallback.onError(e); |
||||
}finally { |
||||
if (conn != null) { |
||||
conn.disconnect(); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
|
||||
public static void register(final Map<String, String> userRegisterInfo, final ResultCallback resultCallback) { |
||||
App.getApplication().newThread(() -> { |
||||
HttpURLConnection conn = null; |
||||
try { |
||||
URL url = new URL(URLCONST.APP_WEB_URL + "reg"); |
||||
conn = (HttpURLConnection) url.openConnection(); |
||||
conn.setRequestMethod("POST"); |
||||
conn.setDoInput(true); |
||||
conn.setDoOutput(true); |
||||
String params = "username=" + userRegisterInfo.get("username") + "&password=" + |
||||
CyptoUtils.encode(APPCONST.KEY, userRegisterInfo.get("password")) + "&key=" + |
||||
CyptoUtils.encode(APPCONST.KEY, APPCONST.publicKey) + makeSignalParam(); |
||||
// 获取URLConnection对象对应的输出流
|
||||
PrintWriter out = new PrintWriter(conn.getOutputStream()); |
||||
// 发送请求参数
|
||||
out.print(params); |
||||
// flush输出流的缓冲
|
||||
out.flush(); |
||||
BufferedReader bw = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); |
||||
StringBuilder sb = new StringBuilder(); |
||||
String line = bw.readLine(); |
||||
while (line != null) { |
||||
sb.append(line); |
||||
line = bw.readLine(); |
||||
} |
||||
resultCallback.onFinish(sb.toString(), 1); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
resultCallback.onError(e); |
||||
} finally { |
||||
if (conn != null) { |
||||
conn.disconnect(); |
||||
} |
||||
} |
||||
|
||||
}); |
||||
} |
||||
|
||||
/** |
||||
* 写配置 |
||||
* @param userLoginInfo |
||||
* @return |
||||
*/ |
||||
public static boolean writeConfig(Map<String,String> userLoginInfo){ |
||||
FileOutputStream fos = null; |
||||
try { |
||||
fos = App.getApplication().openFileOutput("userConfig.fy", Context.MODE_PRIVATE); |
||||
String userInfo = "username='" + userLoginInfo.get("loginName") + "',\npassword='" + userLoginInfo.get("loginPwd") + "'"; |
||||
byte[] bs = userInfo.getBytes(); |
||||
fos.write(bs); |
||||
//写完后一定要刷新
|
||||
fos.flush(); |
||||
return true; |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} finally { |
||||
IOUtils.close(fos); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 读配置 |
||||
* @return |
||||
*/ |
||||
public static Map<String,String> readConfig(){ |
||||
File file = App.getApplication().getFileStreamPath("userConfig.fy"); |
||||
if (!file.exists()){ |
||||
return null; |
||||
} |
||||
BufferedReader br = null; |
||||
try { |
||||
br = new BufferedReader(new FileReader(file)); |
||||
String tem; |
||||
StringBuilder config = new StringBuilder(); |
||||
while ((tem = br.readLine()) != null){ |
||||
config.append(tem); |
||||
} |
||||
String[] user = config.toString().split(","); |
||||
String userName = user[0].substring(user[0].indexOf("'") + 1, user[0].lastIndexOf("'")); |
||||
String password = user[1].substring(user[1].indexOf("'") + 1, user[1].lastIndexOf("'")); |
||||
Map<String,String> userInfo = new HashMap<>(); |
||||
userInfo.put("userName", userName); |
||||
userInfo.put("password", password); |
||||
return userInfo; |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
}finally { |
||||
IOUtils.close(br); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
public static void writeUsername(String username){ |
||||
File file = FileUtils.getFile(APPCONST.QQ_DATA_DIR + "user"); |
||||
BufferedWriter bw = null; |
||||
try { |
||||
bw = new BufferedWriter(new FileWriter(file)); |
||||
bw.write(username); |
||||
bw.flush(); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
}finally { |
||||
IOUtils.close(bw); |
||||
} |
||||
} |
||||
|
||||
public static String readUsername(){ |
||||
File file = new File(APPCONST.QQ_DATA_DIR + "user"); |
||||
if (!file.exists()){ |
||||
return ""; |
||||
} |
||||
BufferedReader br = null; |
||||
try { |
||||
br = new BufferedReader(new FileReader(file)); |
||||
return br.readLine(); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
return ""; |
||||
} finally { |
||||
IOUtils.close(br); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 网络备份 |
||||
* @return |
||||
*/ |
||||
public static void webBackup(ResultCallback rc){ |
||||
Map<String,String> userInfo = readConfig(); |
||||
if (userInfo == null){ |
||||
rc.onFinish(false, 0); |
||||
} |
||||
Backup.INSTANCE.backup(App.getmContext(), APPCONST.FILE_DIR + "webBackup/", new Backup.CallBack() { |
||||
@Override |
||||
public void backupSuccess() { |
||||
App.getApplication().newThread(() ->{ |
||||
File inputFile = FileUtils.getFile(APPCONST.FILE_DIR + "webBackup"); |
||||
if (!inputFile.exists()) { |
||||
rc.onFinish(false, 0); |
||||
} |
||||
File zipFile = FileUtils.getFile(APPCONST.FILE_DIR + "webBackup.zip"); |
||||
FileInputStream fis = null; |
||||
HttpURLConnection conn = null; |
||||
try { |
||||
//压缩文件
|
||||
ZipUtils.zipFile(inputFile, zipFile); |
||||
fis = new FileInputStream(zipFile); |
||||
URL url = new URL(URLCONST.APP_WEB_URL + "bak?username=" + userInfo.get("userName") + |
||||
makeSignalParam()); |
||||
conn = (HttpURLConnection) url.openConnection(); |
||||
conn.setRequestMethod("POST"); |
||||
conn.setRequestProperty("Content-type", "multipart/form-data"); |
||||
conn.setDoInput(true); |
||||
conn.setDoOutput(true); |
||||
OutputStream out = conn.getOutputStream(); |
||||
byte[] bytes = new byte[1024]; |
||||
int len = -1; |
||||
while ((len = fis.read(bytes)) != -1){ |
||||
out.write(bytes, 0, len); |
||||
} |
||||
out.flush(); |
||||
zipFile.delete(); |
||||
BufferedReader bw = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); |
||||
StringBuilder sb = new StringBuilder(); |
||||
String line = bw.readLine(); |
||||
while (line != null) { |
||||
sb.append(line); |
||||
line = bw.readLine(); |
||||
} |
||||
String[] info = sb.toString().split(":"); |
||||
int code = Integer.parseInt(info[0].trim()); |
||||
rc.onFinish(code == 104, 0); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
rc.onError(e); |
||||
} finally { |
||||
IOUtils.close(fis); |
||||
if (conn != null) { |
||||
conn.disconnect(); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
|
||||
@Override |
||||
public void backupError(@NonNull String msg) { |
||||
ToastUtils.showError(msg); |
||||
rc.onFinish(false, 0); |
||||
} |
||||
}, false); |
||||
|
||||
} |
||||
|
||||
/** |
||||
* 网络恢复 |
||||
* @return |
||||
*/ |
||||
public static void webRestore(ResultCallback rc){ |
||||
Map<String,String> userInfo = readConfig(); |
||||
if (userInfo == null){ |
||||
rc.onFinish(false, 0); |
||||
} |
||||
FileOutputStream fos = null; |
||||
File zipFile = FileUtils.getFile(APPCONST.FILE_DIR + "webBackup.zip"); |
||||
HttpURLConnection conn = null; |
||||
try { |
||||
URL url = new URL(URLCONST.APP_WEB_URL + "ret?username=" + userInfo.get("userName") + |
||||
makeSignalParam()); |
||||
conn = (HttpURLConnection) url.openConnection(); |
||||
conn.setRequestMethod("POST"); |
||||
conn.setDoInput(true); |
||||
InputStream is = conn.getInputStream(); |
||||
fos = new FileOutputStream(zipFile); |
||||
//一边读,一边写
|
||||
byte[] bytes = new byte[512]; |
||||
int readCount = 0; |
||||
while ((readCount = is.read(bytes)) != -1) { |
||||
fos.write(bytes,0, readCount); |
||||
} |
||||
//刷新,输出流一定要刷新
|
||||
fos.flush(); |
||||
if (zipFile.length() == 0){ |
||||
zipFile.delete(); |
||||
rc.onFinish(false, 0); |
||||
} |
||||
ZipUtils.unzipFile(zipFile.getAbsolutePath(), APPCONST.FILE_DIR); |
||||
Restore.INSTANCE.restore(APPCONST.FILE_DIR + "webBackup/", new Restore.CallBack() { |
||||
@Override |
||||
public void restoreSuccess() { |
||||
zipFile.delete(); |
||||
rc.onFinish(true, 0); |
||||
} |
||||
|
||||
@Override |
||||
public void restoreError(@NonNull String msg) { |
||||
ToastUtils.showError(msg); |
||||
rc.onFinish(false, 0); |
||||
} |
||||
}); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
rc.onError(e); |
||||
}finally { |
||||
IOUtils.close(fos); |
||||
if (conn != null) { |
||||
conn.disconnect(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
public static String makeSignalParam(){ |
||||
return "&signal=" + AppInfoUtils.getSingInfo(App.getmContext(), |
||||
App.getApplication().getPackageName(), AppInfoUtils.SHA1); |
||||
} |
||||
|
||||
/** |
||||
* 判断是否登录 |
||||
* @return |
||||
*/ |
||||
public static boolean isLogin(){ |
||||
File file = App.getApplication().getFileStreamPath("userConfig.fy"); |
||||
return file.exists(); |
||||
} |
||||
} |
@ -1,3 +1,3 @@ |
||||
#Fri Jun 18 21:45:31 CST 2021 |
||||
VERSION_CODE=236 |
||||
VERSION_CODE=238 |
||||
NEED_CREATE_RELEASE=true |
||||
|
Loading…
Reference in new issue