BookSourceController.kt 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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.BookSource
  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 BookSourceController {
  11. val sources: ReturnData
  12. get() {
  13. val bookSources = appDb.bookSourceDao.all
  14. val returnData = ReturnData()
  15. return if (bookSources.isEmpty()) {
  16. returnData.setErrorMsg("设备源列表为空")
  17. } else returnData.setData(bookSources)
  18. }
  19. fun saveSource(postData: String?): ReturnData {
  20. val returnData = ReturnData()
  21. postData ?: return returnData.setErrorMsg("数据不能为空")
  22. val bookSource = GSON.fromJsonObject<BookSource>(postData).getOrNull()
  23. if (bookSource != null) {
  24. if (TextUtils.isEmpty(bookSource.bookSourceName) || TextUtils.isEmpty(bookSource.bookSourceUrl)) {
  25. returnData.setErrorMsg("源名称和URL不能为空")
  26. } else {
  27. appDb.bookSourceDao.insert(bookSource)
  28. returnData.setData("")
  29. }
  30. } else {
  31. returnData.setErrorMsg("转换源失败")
  32. }
  33. return returnData
  34. }
  35. fun saveSources(postData: String?): ReturnData {
  36. postData ?: return ReturnData().setErrorMsg("数据为空")
  37. val okSources = arrayListOf<BookSource>()
  38. val bookSources = GSON.fromJsonArray<BookSource>(postData).getOrNull()
  39. if (bookSources.isNullOrEmpty()) {
  40. return ReturnData().setErrorMsg("转换源失败")
  41. }
  42. bookSources.forEach { bookSource ->
  43. if (bookSource.bookSourceName.isNotBlank()
  44. && bookSource.bookSourceUrl.isNotBlank()
  45. ) {
  46. appDb.bookSourceDao.insert(bookSource)
  47. okSources.add(bookSource)
  48. }
  49. }
  50. return ReturnData().setData(okSources)
  51. }
  52. fun getSource(parameters: Map<String, List<String>>): ReturnData {
  53. val url = parameters["url"]?.firstOrNull()
  54. val returnData = ReturnData()
  55. if (url.isNullOrEmpty()) {
  56. return returnData.setErrorMsg("参数url不能为空,请指定源地址")
  57. }
  58. val bookSource = appDb.bookSourceDao.getBookSource(url)
  59. ?: return returnData.setErrorMsg("未找到源,请检查书源地址")
  60. return returnData.setData(bookSource)
  61. }
  62. fun deleteSources(postData: String?): ReturnData {
  63. kotlin.runCatching {
  64. GSON.fromJsonArray<BookSource>(postData).getOrThrow().let {
  65. SourceHelp.deleteBookSources(it)
  66. }
  67. }.onFailure {
  68. return ReturnData().setErrorMsg(it.localizedMessage ?: "数据格式错误")
  69. }
  70. return ReturnData().setData("已执行"/*okSources*/)
  71. }
  72. }