pull/95/head
kunfei 5 years ago
parent 76dfb8d6d8
commit ef523f384b
  1. 37
      app/src/main/java/io/legado/app/help/storage/WebDavHelp.kt

@ -1,6 +1,8 @@
package io.legado.app.help.storage package io.legado.app.help.storage
import android.content.Context import android.content.Context
import android.os.Handler
import android.os.Looper
import io.legado.app.App import io.legado.app.App
import io.legado.app.constant.PreferKey import io.legado.app.constant.PreferKey
import io.legado.app.help.coroutine.Coroutine import io.legado.app.help.coroutine.Coroutine
@ -13,6 +15,7 @@ import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.jetbrains.anko.selector import org.jetbrains.anko.selector
import org.jetbrains.anko.toast
import java.io.File import java.io.File
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
@ -25,7 +28,7 @@ object WebDavHelp {
FileUtils.getCachePath() FileUtils.getCachePath()
} }
private fun getWebDavUrl(): String? { private fun getWebDavUrl(): String {
var url = App.INSTANCE.getPrefString(PreferKey.webDavUrl) var url = App.INSTANCE.getPrefString(PreferKey.webDavUrl)
if (url.isNullOrEmpty()) { if (url.isNullOrEmpty()) {
url = defaultWebDavUrl url = defaultWebDavUrl
@ -47,7 +50,7 @@ object WebDavHelp {
private fun getWebDavFileNames(): ArrayList<String> { private fun getWebDavFileNames(): ArrayList<String> {
val url = getWebDavUrl() val url = getWebDavUrl()
val names = arrayListOf<String>() val names = arrayListOf<String>()
if (!url.isNullOrBlank() && initWebDav()) { if (initWebDav()) {
try { try {
var files = WebDav(url + "legado/").listFiles() var files = WebDav(url + "legado/").listFiles()
files = files.reversed() files = files.reversed()
@ -81,7 +84,7 @@ object WebDavHelp {
private fun restoreWebDav(name: String, success: () -> Unit) { private fun restoreWebDav(name: String, success: () -> Unit) {
Coroutine.async { Coroutine.async {
getWebDavUrl()?.let { getWebDavUrl().let {
val file = WebDav(it + "legado/" + name) val file = WebDav(it + "legado/" + name)
file.downloadTo(zipFilePath, true) file.downloadTo(zipFilePath, true)
@Suppress("BlockingMethodInNonBlockingContext") @Suppress("BlockingMethodInNonBlockingContext")
@ -94,18 +97,24 @@ object WebDavHelp {
} }
fun backUpWebDav(path: String) { fun backUpWebDav(path: String) {
if (initWebDav()) { try {
val paths = arrayListOf(*Backup.backupFileNames) if (initWebDav()) {
for (i in 0 until paths.size) { val paths = arrayListOf(*Backup.backupFileNames)
paths[i] = path + File.separator + paths[i] for (i in 0 until paths.size) {
paths[i] = path + File.separator + paths[i]
}
FileUtils.deleteFile(zipFilePath)
if (ZipUtils.zipFiles(paths, zipFilePath)) {
WebDav(getWebDavUrl() + "legado").makeAsDir()
val putUrl = getWebDavUrl() + "legado/backup" +
SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())
.format(Date(System.currentTimeMillis())) + ".zip"
WebDav(putUrl).upload(zipFilePath)
}
} }
FileUtils.deleteFile(zipFilePath) } catch (e: Exception) {
if (ZipUtils.zipFiles(paths, zipFilePath)) { Handler(Looper.getMainLooper()).post {
WebDav(getWebDavUrl() + "legado").makeAsDir() App.INSTANCE.toast("WebDav\n${e.localizedMessage}")
val putUrl = getWebDavUrl() + "legado/backup" +
SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())
.format(Date(System.currentTimeMillis())) + ".zip"
WebDav(putUrl).upload(zipFilePath)
} }
} }
} }

Loading…
Cancel
Save