优化
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.data.entities.ReplaceRule
|
||||||
import io.legado.app.utils.GSON
|
import io.legado.app.utils.GSON
|
||||||
import io.legado.app.utils.fromJsonObject
|
import io.legado.app.utils.fromJsonObject
|
||||||
|
import io.legado.app.utils.replace
|
||||||
|
import io.legado.app.utils.stackTraceStr
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
|
|
||||||
object ReplaceRuleController {
|
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 {
|
fun saveRule(postData: String?): ReturnData {
|
||||||
@@ -26,11 +35,64 @@ object ReplaceRuleController {
|
|||||||
return returnData
|
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 {
|
fun testRule(postData: String?): ReturnData {
|
||||||
val returnData = ReturnData()
|
val returnData = ReturnData()
|
||||||
postData ?: return returnData.setErrorMsg("数据不能为空")
|
postData ?: return returnData.setErrorMsg("数据不能为空")
|
||||||
val map = GSON.fromJsonObject<Map<String, *>>(postData).getOrNull()
|
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
|
return returnData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import fi.iki.elonen.NanoHTTPD
|
|||||||
import io.legado.app.api.ReturnData
|
import io.legado.app.api.ReturnData
|
||||||
import io.legado.app.api.controller.BookController
|
import io.legado.app.api.controller.BookController
|
||||||
import io.legado.app.api.controller.BookSourceController
|
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.api.controller.RssSourceController
|
||||||
import io.legado.app.utils.FileUtils
|
import io.legado.app.utils.FileUtils
|
||||||
import io.legado.app.utils.externalFiles
|
import io.legado.app.utils.externalFiles
|
||||||
@@ -50,6 +51,9 @@ class HttpServer(port: Int) : NanoHTTPD(port) {
|
|||||||
"/saveRssSource" -> RssSourceController.saveSource(postData)
|
"/saveRssSource" -> RssSourceController.saveSource(postData)
|
||||||
"/saveRssSources" -> RssSourceController.saveSources(postData)
|
"/saveRssSources" -> RssSourceController.saveSources(postData)
|
||||||
"/deleteRssSources" -> RssSourceController.deleteSources(postData)
|
"/deleteRssSources" -> RssSourceController.deleteSources(postData)
|
||||||
|
"/saveReplaceRule" -> ReplaceRuleController.saveRule(postData)
|
||||||
|
"/deleteReplaceRule" -> ReplaceRuleController.delete(postData)
|
||||||
|
"/testReplaceRule" -> ReplaceRuleController.testRule(postData)
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -68,6 +72,7 @@ class HttpServer(port: Int) : NanoHTTPD(port) {
|
|||||||
"/getReadConfig" -> BookController.getWebReadConfig()
|
"/getReadConfig" -> BookController.getWebReadConfig()
|
||||||
"/getRssSource" -> RssSourceController.getSource(parameters)
|
"/getRssSource" -> RssSourceController.getSource(parameters)
|
||||||
"/getRssSources" -> RssSourceController.sources
|
"/getRssSources" -> RssSourceController.sources
|
||||||
|
"/getReplaceRules" -> ReplaceRuleController.allRules
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user