mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -5,10 +5,19 @@ import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.ReplaceRule
|
||||
import io.legado.app.utils.GSON
|
||||
import io.legado.app.utils.fromJsonObject
|
||||
import io.legado.app.utils.replace
|
||||
import io.legado.app.utils.stackTraceStr
|
||||
import kotlinx.coroutines.runBlocking
|
||||
|
||||
object ReplaceRuleController {
|
||||
|
||||
val allRules get() = appDb.replaceRuleDao.all
|
||||
val allRules: ReturnData
|
||||
get() {
|
||||
val rules = appDb.replaceRuleDao.all
|
||||
val returnData = ReturnData()
|
||||
returnData.setData(GSON.toJson(rules))
|
||||
return returnData
|
||||
}
|
||||
|
||||
|
||||
fun saveRule(postData: String?): ReturnData {
|
||||
@@ -26,11 +35,64 @@ object ReplaceRuleController {
|
||||
return returnData
|
||||
}
|
||||
|
||||
|
||||
fun delete(postData: String?): ReturnData {
|
||||
val returnData = ReturnData()
|
||||
postData ?: return returnData.setErrorMsg("数据不能为空")
|
||||
val rule = GSON.fromJsonObject<ReplaceRule>(postData).getOrNull()
|
||||
if (rule == null) {
|
||||
returnData.setErrorMsg("格式不对")
|
||||
} else {
|
||||
appDb.replaceRuleDao.delete(rule)
|
||||
}
|
||||
return returnData
|
||||
}
|
||||
|
||||
/**
|
||||
* 传入测试数据格式
|
||||
* {
|
||||
* rule: Replace,
|
||||
* text: "xxx"
|
||||
* }
|
||||
*/
|
||||
fun testRule(postData: String?): ReturnData {
|
||||
val returnData = ReturnData()
|
||||
postData ?: return returnData.setErrorMsg("数据不能为空")
|
||||
val map = GSON.fromJsonObject<Map<String, *>>(postData).getOrNull()
|
||||
|
||||
if (map == null) {
|
||||
returnData.setErrorMsg("格式不对")
|
||||
} else {
|
||||
val rule = map["rule"]?.let {
|
||||
if (it is String) {
|
||||
GSON.fromJsonObject<ReplaceRule>(it).getOrNull()
|
||||
} else {
|
||||
GSON.fromJsonObject<ReplaceRule>(GSON.toJson(it)).getOrNull()
|
||||
}
|
||||
}
|
||||
if (rule == null) {
|
||||
returnData.setErrorMsg("格式不对")
|
||||
return returnData
|
||||
}
|
||||
if (rule.pattern.isEmpty()) {
|
||||
returnData.setErrorMsg("替换规则不能为空")
|
||||
}
|
||||
val text = map["text"] as String
|
||||
val content = runBlocking {
|
||||
try {
|
||||
if (rule.isRegex) {
|
||||
text.replace(
|
||||
rule.pattern.toRegex(),
|
||||
rule.replacement, rule.timeoutMillisecond
|
||||
)
|
||||
} else {
|
||||
text.replace(rule.pattern, rule.replacement)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.stackTraceStr
|
||||
}
|
||||
}
|
||||
returnData.setData(content)
|
||||
}
|
||||
return returnData
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import fi.iki.elonen.NanoHTTPD
|
||||
import io.legado.app.api.ReturnData
|
||||
import io.legado.app.api.controller.BookController
|
||||
import io.legado.app.api.controller.BookSourceController
|
||||
import io.legado.app.api.controller.ReplaceRuleController
|
||||
import io.legado.app.api.controller.RssSourceController
|
||||
import io.legado.app.utils.FileUtils
|
||||
import io.legado.app.utils.externalFiles
|
||||
@@ -50,6 +51,9 @@ class HttpServer(port: Int) : NanoHTTPD(port) {
|
||||
"/saveRssSource" -> RssSourceController.saveSource(postData)
|
||||
"/saveRssSources" -> RssSourceController.saveSources(postData)
|
||||
"/deleteRssSources" -> RssSourceController.deleteSources(postData)
|
||||
"/saveReplaceRule" -> ReplaceRuleController.saveRule(postData)
|
||||
"/deleteReplaceRule" -> ReplaceRuleController.delete(postData)
|
||||
"/testReplaceRule" -> ReplaceRuleController.testRule(postData)
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
@@ -68,6 +72,7 @@ class HttpServer(port: Int) : NanoHTTPD(port) {
|
||||
"/getReadConfig" -> BookController.getWebReadConfig()
|
||||
"/getRssSource" -> RssSourceController.getSource(parameters)
|
||||
"/getRssSources" -> RssSourceController.sources
|
||||
"/getReplaceRules" -> ReplaceRuleController.allRules
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user