| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- 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<RssSource>(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<RssSource>()
- val source = GSON.fromJsonArray<RssSource>(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<String, List<String>>): 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<RssSource>(postData).onFailure {
- return ReturnData().setErrorMsg("格式不对")
- }.onSuccess {
- SourceHelp.deleteRssSources(it)
- }
- return ReturnData().setData("已执行"/*okSources*/)
- }
- }
|