diff --git a/app/src/main/assets/defaultData/directLinkUpload.json b/app/src/main/assets/defaultData/directLinkUpload.json index b74237185..091966570 100644 --- a/app/src/main/assets/defaultData/directLinkUpload.json +++ b/app/src/main/assets/defaultData/directLinkUpload.json @@ -1,5 +1,12 @@ -{ - "uploadUrl": "https://sy.mgz6.cc/shuyuan,{\"method\":\"POST\",\"body\": {\"file\": \"fileRequest\"},\"type\": \"multipart/form-data\"}", - "downloadUrlRule": "$.data@js:if (result == '') \n '' \n else \n 'https://shuyuan.mgz6.cc/shuyuan/' + result", - "summary": "有效期2天" -} \ No newline at end of file +[ + { + "uploadUrl": "https://sy.mgz6.cc/shuyuan,{\"method\":\"POST\",\"body\": {\"file\": \"fileRequest\"},\"type\": \"multipart/form-data\"}", + "downloadUrlRule": "$.data@js:if (result == '') \n '' \n else \n 'https://shuyuan.mgz6.cc/shuyuan/' + result", + "summary": "喵公子网盘(有效期2天)" + }, + { + "uploadUrl": "http://v2.jt12.de/up-v2.php,{\"method\":\"POST\",\"body\": {\"file\": \"fileRequest\"},\"type\": \"multipart/form-data\"}", + "downloadUrlRule": "$.msg", + "summary": "橘途网盘(永久有效)" + } +] \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/help/DirectLinkUpload.kt b/app/src/main/java/io/legado/app/help/DirectLinkUpload.kt index 92751e4a2..825b461b9 100644 --- a/app/src/main/java/io/legado/app/help/DirectLinkUpload.kt +++ b/app/src/main/java/io/legado/app/help/DirectLinkUpload.kt @@ -6,6 +6,7 @@ import io.legado.app.model.analyzeRule.AnalyzeRule import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.utils.ACache import io.legado.app.utils.GSON +import io.legado.app.utils.fromJsonArray import io.legado.app.utils.fromJsonObject import splitties.init.appCtx import java.io.File @@ -18,7 +19,6 @@ object DirectLinkUpload { @Throws(NoStackTraceException::class) suspend fun upLoad(fileName: String, file: Any, contentType: String): String { val rule = getRule() - rule ?: throw NoStackTraceException("直链上传规则未配置") val url = rule.uploadUrl if (url.isBlank()) { throw NoStackTraceException("上传url未配置") @@ -37,16 +37,16 @@ object DirectLinkUpload { return downloadUrl } - private val defaultRule: Rule? by lazy { + private val defaultRules: List by lazy { val json = String( appCtx.assets.open("defaultData${File.separator}directLinkUpload.json") .readBytes() ) - GSON.fromJsonObject(json).getOrNull() + GSON.fromJsonArray(json).getOrThrow() } - fun getRule(): Rule? { - return getConfig() ?: defaultRule + fun getRule(): Rule { + return getConfig() ?: defaultRules[0] } fun getConfig(): Rule? { @@ -64,7 +64,7 @@ object DirectLinkUpload { } fun getSummary(): String? { - return getRule()?.summary + return getRule().summary } @Keep diff --git a/app/src/main/java/io/legado/app/utils/UrlUtil.kt b/app/src/main/java/io/legado/app/utils/UrlUtil.kt index 2b31e02bc..ce8b4f0b7 100644 --- a/app/src/main/java/io/legado/app/utils/UrlUtil.kt +++ b/app/src/main/java/io/legado/app/utils/UrlUtil.kt @@ -34,7 +34,7 @@ object UrlUtil { */ fun getFileName(fileUrl: String): String? { return kotlin.runCatching { - var fileName = "" + var fileName: String val url = URL(fileUrl) val conn: HttpURLConnection = url.openConnection() as HttpURLConnection // head方式 @@ -63,7 +63,7 @@ object UrlUtil { fun getSuffix(url: String, default: String): String { val suffix = url.substringAfterLast(".").substringBeforeLast(",") //检查截取的后缀字符是否合法 [a-zA-Z0-9] - val fileSuffixRegex = Regex("^[a-z0-9]+$", RegexOption.IGNORE_CASE) + val fileSuffixRegex = Regex("^[a-z\\d]+$", RegexOption.IGNORE_CASE) return if (suffix.length > 5 || !suffix.matches(fileSuffixRegex)) { default } else {