package io.legato.kazusa.api.controller import android.text.TextUtils import io.legato.kazusa.api.ReturnData import io.legato.kazusa.data.appDb import io.legato.kazusa.data.entities.RssSource import io.legato.kazusa.help.source.SourceHelp import io.legato.kazusa.utils.GSON import io.legato.kazusa.utils.fromJsonArray import io.legato.kazusa.utils.fromJsonObject object RssSourceController { val sources: ReturnData get() { val source = appDb.rssSourceDao.all val returnData = ReturnData() return if (source.isEmpty()) { returnData.setErrorMsg("源列表为空") } else returnData.setData(source) } fun saveSource(postData: String?): ReturnData { val returnData = ReturnData() postData ?: return returnData.setErrorMsg("数据不能为空") GSON.fromJsonObject(postData).onFailure { returnData.setErrorMsg("转换源失败${it.localizedMessage}") }.onSuccess { source -> if (TextUtils.isEmpty(source.sourceName) || TextUtils.isEmpty(source.sourceUrl)) { returnData.setErrorMsg("源名称和URL不能为空") } else { appDb.rssSourceDao.insert(source) returnData.setData("") } } return returnData } fun saveSources(postData: String?): ReturnData { postData ?: return ReturnData().setErrorMsg("数据不能为空") val okSources = arrayListOf() val source = GSON.fromJsonArray(postData).getOrNull() if (source.isNullOrEmpty()) { return ReturnData().setErrorMsg("转换源失败") } for (rssSource in source) { if (rssSource.sourceName.isBlank() || rssSource.sourceUrl.isBlank()) { continue } appDb.rssSourceDao.insert(rssSource) okSources.add(rssSource) } return ReturnData().setData(okSources) } fun getSource(parameters: Map>): ReturnData { val url = parameters["url"]?.firstOrNull() val returnData = ReturnData() if (url.isNullOrEmpty()) { return returnData.setErrorMsg("参数url不能为空,请指定书源地址") } val source = appDb.rssSourceDao.getByKey(url) ?: return returnData.setErrorMsg("未找到源,请检查源地址") return returnData.setData(source) } fun deleteSources(postData: String?): ReturnData { postData ?: return ReturnData().setErrorMsg("没有传递数据") GSON.fromJsonArray(postData).onFailure { return ReturnData().setErrorMsg("格式不对") }.onSuccess { SourceHelp.deleteRssSources(it) } return ReturnData().setData("已执行"/*okSources*/) } }