|
@@ -16,6 +16,7 @@ import io.legado.app.utils.findNSPrefix
|
|
|
import io.legado.app.utils.printOnDebug
|
|
import io.legado.app.utils.printOnDebug
|
|
|
import io.legado.app.utils.toRequestBody
|
|
import io.legado.app.utils.toRequestBody
|
|
|
import kotlinx.coroutines.Dispatchers.IO
|
|
import kotlinx.coroutines.Dispatchers.IO
|
|
|
|
|
+import kotlinx.coroutines.ensureActive
|
|
|
import kotlinx.coroutines.withContext
|
|
import kotlinx.coroutines.withContext
|
|
|
import okhttp3.Interceptor
|
|
import okhttp3.Interceptor
|
|
|
import okhttp3.MediaType.Companion.toMediaType
|
|
import okhttp3.MediaType.Companion.toMediaType
|
|
@@ -35,6 +36,7 @@ import java.time.LocalDateTime
|
|
|
import java.time.ZoneOffset
|
|
import java.time.ZoneOffset
|
|
|
import java.time.format.DateTimeFormatter
|
|
import java.time.format.DateTimeFormatter
|
|
|
import java.util.concurrent.TimeUnit
|
|
import java.util.concurrent.TimeUnit
|
|
|
|
|
+import kotlin.coroutines.coroutineContext
|
|
|
|
|
|
|
|
@Suppress("unused", "MemberVisibilityCanBePrivate")
|
|
@Suppress("unused", "MemberVisibilityCanBePrivate")
|
|
|
open class WebDav(
|
|
open class WebDav(
|
|
@@ -245,6 +247,8 @@ open class WebDav(
|
|
|
val requestBody = EXISTS.toRequestBody("application/xml".toMediaType())
|
|
val requestBody = EXISTS.toRequestBody("application/xml".toMediaType())
|
|
|
method("PROPFIND", requestBody)
|
|
method("PROPFIND", requestBody)
|
|
|
}.use { it.isSuccessful }
|
|
}.use { it.isSuccessful }
|
|
|
|
|
+ }.onFailure {
|
|
|
|
|
+ coroutineContext.ensureActive()
|
|
|
}.getOrDefault(false)
|
|
}.getOrDefault(false)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -259,6 +263,8 @@ open class WebDav(
|
|
|
val requestBody = EXISTS.toRequestBody("application/xml".toMediaType())
|
|
val requestBody = EXISTS.toRequestBody("application/xml".toMediaType())
|
|
|
method("PROPFIND", requestBody)
|
|
method("PROPFIND", requestBody)
|
|
|
}.use { it.code != 401 }
|
|
}.use { it.code != 401 }
|
|
|
|
|
+ }.onFailure {
|
|
|
|
|
+ coroutineContext.ensureActive()
|
|
|
}.getOrDefault(true)
|
|
}.getOrDefault(true)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -279,6 +285,7 @@ open class WebDav(
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}.onFailure {
|
|
}.onFailure {
|
|
|
|
|
+ coroutineContext.ensureActive()
|
|
|
AppLog.put("WebDav创建目录失败\n${it.localizedMessage}", it)
|
|
AppLog.put("WebDav创建目录失败\n${it.localizedMessage}", it)
|
|
|
}.isSuccess
|
|
}.isSuccess
|
|
|
}
|
|
}
|
|
@@ -335,6 +342,7 @@ open class WebDav(
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}.onFailure {
|
|
}.onFailure {
|
|
|
|
|
+ coroutineContext.ensureActive()
|
|
|
AppLog.put("WebDav上传失败\n${it.localizedMessage}", it)
|
|
AppLog.put("WebDav上传失败\n${it.localizedMessage}", it)
|
|
|
throw WebDavException("WebDav上传失败\n${it.localizedMessage}")
|
|
throw WebDavException("WebDav上传失败\n${it.localizedMessage}")
|
|
|
}
|
|
}
|
|
@@ -355,6 +363,7 @@ open class WebDav(
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}.onFailure {
|
|
}.onFailure {
|
|
|
|
|
+ coroutineContext.ensureActive()
|
|
|
AppLog.put("WebDav上传失败\n${it.localizedMessage}", it)
|
|
AppLog.put("WebDav上传失败\n${it.localizedMessage}", it)
|
|
|
throw WebDavException("WebDav上传失败\n${it.localizedMessage}")
|
|
throw WebDavException("WebDav上传失败\n${it.localizedMessage}")
|
|
|
}
|
|
}
|
|
@@ -375,6 +384,7 @@ open class WebDav(
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}.onFailure {
|
|
}.onFailure {
|
|
|
|
|
+ coroutineContext.ensureActive()
|
|
|
AppLog.put("WebDav上传失败\n${it.localizedMessage}", it)
|
|
AppLog.put("WebDav上传失败\n${it.localizedMessage}", it)
|
|
|
throw WebDavException("WebDav上传失败\n${it.localizedMessage}")
|
|
throw WebDavException("WebDav上传失败\n${it.localizedMessage}")
|
|
|
}
|
|
}
|
|
@@ -405,6 +415,7 @@ open class WebDav(
|
|
|
checkResult(it)
|
|
checkResult(it)
|
|
|
}
|
|
}
|
|
|
}.onFailure {
|
|
}.onFailure {
|
|
|
|
|
+ coroutineContext.ensureActive()
|
|
|
AppLog.put("WebDav删除失败\n${it.localizedMessage}", it)
|
|
AppLog.put("WebDav删除失败\n${it.localizedMessage}", it)
|
|
|
}.isSuccess
|
|
}.isSuccess
|
|
|
}
|
|
}
|