RssSourceController.kt 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package io.legato.kazusa.api.controller
  2. import android.text.TextUtils
  3. import io.legato.kazusa.api.ReturnData
  4. import io.legato.kazusa.data.appDb
  5. import io.legato.kazusa.data.entities.RssSource
  6. import io.legato.kazusa.help.source.SourceHelp
  7. import io.legato.kazusa.utils.GSON
  8. import io.legato.kazusa.utils.fromJsonArray
  9. import io.legato.kazusa.utils.fromJsonObject
  10. object RssSourceController {
  11. val sources: ReturnData
  12. get() {
  13. val source = appDb.rssSourceDao.all
  14. val returnData = ReturnData()
  15. return if (source.isEmpty()) {
  16. returnData.setErrorMsg("源列表为空")
  17. } else returnData.setData(source)
  18. }
  19. fun saveSource(postData: String?): ReturnData {
  20. val returnData = ReturnData()
  21. postData ?: return returnData.setErrorMsg("数据不能为空")
  22. GSON.fromJsonObject<RssSource>(postData).onFailure {
  23. returnData.setErrorMsg("转换源失败${it.localizedMessage}")
  24. }.onSuccess { source ->
  25. if (TextUtils.isEmpty(source.sourceName) || TextUtils.isEmpty(source.sourceUrl)) {
  26. returnData.setErrorMsg("源名称和URL不能为空")
  27. } else {
  28. appDb.rssSourceDao.insert(source)
  29. returnData.setData("")
  30. }
  31. }
  32. return returnData
  33. }
  34. fun saveSources(postData: String?): ReturnData {
  35. postData ?: return ReturnData().setErrorMsg("数据不能为空")
  36. val okSources = arrayListOf<RssSource>()
  37. val source = GSON.fromJsonArray<RssSource>(postData).getOrNull()
  38. if (source.isNullOrEmpty()) {
  39. return ReturnData().setErrorMsg("转换源失败")
  40. }
  41. for (rssSource in source) {
  42. if (rssSource.sourceName.isBlank() || rssSource.sourceUrl.isBlank()) {
  43. continue
  44. }
  45. appDb.rssSourceDao.insert(rssSource)
  46. okSources.add(rssSource)
  47. }
  48. return ReturnData().setData(okSources)
  49. }
  50. fun getSource(parameters: Map<String, List<String>>): ReturnData {
  51. val url = parameters["url"]?.firstOrNull()
  52. val returnData = ReturnData()
  53. if (url.isNullOrEmpty()) {
  54. return returnData.setErrorMsg("参数url不能为空,请指定书源地址")
  55. }
  56. val source = appDb.rssSourceDao.getByKey(url)
  57. ?: return returnData.setErrorMsg("未找到源,请检查源地址")
  58. return returnData.setData(source)
  59. }
  60. fun deleteSources(postData: String?): ReturnData {
  61. postData ?: return ReturnData().setErrorMsg("没有传递数据")
  62. GSON.fromJsonArray<RssSource>(postData).onFailure {
  63. return ReturnData().setErrorMsg("格式不对")
  64. }.onSuccess {
  65. SourceHelp.deleteRssSources(it)
  66. }
  67. return ReturnData().setData("已执行"/*okSources*/)
  68. }
  69. }