integration.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package form // import "miniflux.app/ui/form"
  4. import (
  5. "net/http"
  6. "miniflux.app/model"
  7. )
  8. // IntegrationForm represents user integration settings form.
  9. type IntegrationForm struct {
  10. PinboardEnabled bool
  11. PinboardToken string
  12. PinboardTags string
  13. PinboardMarkAsUnread bool
  14. InstapaperEnabled bool
  15. InstapaperUsername string
  16. InstapaperPassword string
  17. FeverEnabled bool
  18. FeverUsername string
  19. FeverPassword string
  20. GoogleReaderEnabled bool
  21. GoogleReaderUsername string
  22. GoogleReaderPassword string
  23. WallabagEnabled bool
  24. WallabagOnlyURL bool
  25. WallabagURL string
  26. WallabagClientID string
  27. WallabagClientSecret string
  28. WallabagUsername string
  29. WallabagPassword string
  30. NotionEnabled bool
  31. NotionPageID string
  32. NotionToken string
  33. NunuxKeeperEnabled bool
  34. NunuxKeeperURL string
  35. NunuxKeeperAPIKey string
  36. EspialEnabled bool
  37. EspialURL string
  38. EspialAPIKey string
  39. EspialTags string
  40. ReadwiseEnabled bool
  41. ReadwiseAPIKey string
  42. PocketEnabled bool
  43. PocketAccessToken string
  44. PocketConsumerKey string
  45. TelegramBotEnabled bool
  46. TelegramBotToken string
  47. TelegramBotChatID string
  48. LinkdingEnabled bool
  49. LinkdingURL string
  50. LinkdingAPIKey string
  51. LinkdingTags string
  52. LinkdingMarkAsUnread bool
  53. MatrixBotEnabled bool
  54. MatrixBotUser string
  55. MatrixBotPassword string
  56. MatrixBotURL string
  57. MatrixBotChatID string
  58. }
  59. // Merge copy form values to the model.
  60. func (i IntegrationForm) Merge(integration *model.Integration) {
  61. integration.PinboardEnabled = i.PinboardEnabled
  62. integration.PinboardToken = i.PinboardToken
  63. integration.PinboardTags = i.PinboardTags
  64. integration.PinboardMarkAsUnread = i.PinboardMarkAsUnread
  65. integration.InstapaperEnabled = i.InstapaperEnabled
  66. integration.InstapaperUsername = i.InstapaperUsername
  67. integration.InstapaperPassword = i.InstapaperPassword
  68. integration.FeverEnabled = i.FeverEnabled
  69. integration.FeverUsername = i.FeverUsername
  70. integration.GoogleReaderEnabled = i.GoogleReaderEnabled
  71. integration.GoogleReaderUsername = i.GoogleReaderUsername
  72. integration.WallabagEnabled = i.WallabagEnabled
  73. integration.WallabagOnlyURL = i.WallabagOnlyURL
  74. integration.WallabagURL = i.WallabagURL
  75. integration.WallabagClientID = i.WallabagClientID
  76. integration.WallabagClientSecret = i.WallabagClientSecret
  77. integration.WallabagUsername = i.WallabagUsername
  78. integration.WallabagPassword = i.WallabagPassword
  79. integration.NotionEnabled = i.NotionEnabled
  80. integration.NotionPageID = i.NotionPageID
  81. integration.NotionToken = i.NotionToken
  82. integration.NunuxKeeperEnabled = i.NunuxKeeperEnabled
  83. integration.NunuxKeeperURL = i.NunuxKeeperURL
  84. integration.NunuxKeeperAPIKey = i.NunuxKeeperAPIKey
  85. integration.EspialEnabled = i.EspialEnabled
  86. integration.EspialURL = i.EspialURL
  87. integration.EspialAPIKey = i.EspialAPIKey
  88. integration.EspialTags = i.EspialTags
  89. integration.ReadwiseEnabled = i.ReadwiseEnabled
  90. integration.ReadwiseAPIKey = i.ReadwiseAPIKey
  91. integration.PocketEnabled = i.PocketEnabled
  92. integration.PocketAccessToken = i.PocketAccessToken
  93. integration.PocketConsumerKey = i.PocketConsumerKey
  94. integration.TelegramBotEnabled = i.TelegramBotEnabled
  95. integration.TelegramBotToken = i.TelegramBotToken
  96. integration.TelegramBotChatID = i.TelegramBotChatID
  97. integration.LinkdingEnabled = i.LinkdingEnabled
  98. integration.LinkdingURL = i.LinkdingURL
  99. integration.LinkdingAPIKey = i.LinkdingAPIKey
  100. integration.LinkdingTags = i.LinkdingTags
  101. integration.LinkdingMarkAsUnread = i.LinkdingMarkAsUnread
  102. integration.MatrixBotEnabled = i.MatrixBotEnabled
  103. integration.MatrixBotUser = i.MatrixBotUser
  104. integration.MatrixBotPassword = i.MatrixBotPassword
  105. integration.MatrixBotURL = i.MatrixBotURL
  106. integration.MatrixBotChatID = i.MatrixBotChatID
  107. }
  108. // NewIntegrationForm returns a new IntegrationForm.
  109. func NewIntegrationForm(r *http.Request) *IntegrationForm {
  110. return &IntegrationForm{
  111. PinboardEnabled: r.FormValue("pinboard_enabled") == "1",
  112. PinboardToken: r.FormValue("pinboard_token"),
  113. PinboardTags: r.FormValue("pinboard_tags"),
  114. PinboardMarkAsUnread: r.FormValue("pinboard_mark_as_unread") == "1",
  115. InstapaperEnabled: r.FormValue("instapaper_enabled") == "1",
  116. InstapaperUsername: r.FormValue("instapaper_username"),
  117. InstapaperPassword: r.FormValue("instapaper_password"),
  118. FeverEnabled: r.FormValue("fever_enabled") == "1",
  119. FeverUsername: r.FormValue("fever_username"),
  120. FeverPassword: r.FormValue("fever_password"),
  121. GoogleReaderEnabled: r.FormValue("googlereader_enabled") == "1",
  122. GoogleReaderUsername: r.FormValue("googlereader_username"),
  123. GoogleReaderPassword: r.FormValue("googlereader_password"),
  124. WallabagEnabled: r.FormValue("wallabag_enabled") == "1",
  125. WallabagOnlyURL: r.FormValue("wallabag_only_url") == "1",
  126. WallabagURL: r.FormValue("wallabag_url"),
  127. WallabagClientID: r.FormValue("wallabag_client_id"),
  128. WallabagClientSecret: r.FormValue("wallabag_client_secret"),
  129. WallabagUsername: r.FormValue("wallabag_username"),
  130. WallabagPassword: r.FormValue("wallabag_password"),
  131. NotionEnabled: r.FormValue("notion_enabled") == "1",
  132. NotionPageID: r.FormValue("notion_page_id"),
  133. NotionToken: r.FormValue("notion_token"),
  134. NunuxKeeperEnabled: r.FormValue("nunux_keeper_enabled") == "1",
  135. NunuxKeeperURL: r.FormValue("nunux_keeper_url"),
  136. NunuxKeeperAPIKey: r.FormValue("nunux_keeper_api_key"),
  137. EspialEnabled: r.FormValue("espial_enabled") == "1",
  138. EspialURL: r.FormValue("espial_url"),
  139. EspialAPIKey: r.FormValue("espial_api_key"),
  140. EspialTags: r.FormValue("espial_tags"),
  141. ReadwiseEnabled: r.FormValue("readwise_enabled") == "1",
  142. ReadwiseAPIKey: r.FormValue("readwise_api_key"),
  143. PocketEnabled: r.FormValue("pocket_enabled") == "1",
  144. PocketAccessToken: r.FormValue("pocket_access_token"),
  145. PocketConsumerKey: r.FormValue("pocket_consumer_key"),
  146. TelegramBotEnabled: r.FormValue("telegram_bot_enabled") == "1",
  147. TelegramBotToken: r.FormValue("telegram_bot_token"),
  148. TelegramBotChatID: r.FormValue("telegram_bot_chat_id"),
  149. LinkdingEnabled: r.FormValue("linkding_enabled") == "1",
  150. LinkdingURL: r.FormValue("linkding_url"),
  151. LinkdingAPIKey: r.FormValue("linkding_api_key"),
  152. LinkdingTags: r.FormValue("linkding_tags"),
  153. LinkdingMarkAsUnread: r.FormValue("linkding_mark_as_unread") == "1",
  154. MatrixBotEnabled: r.FormValue("matrix_bot_enabled") == "1",
  155. MatrixBotUser: r.FormValue("matrix_bot_user"),
  156. MatrixBotPassword: r.FormValue("matrix_bot_password"),
  157. MatrixBotURL: r.FormValue("matrix_bot_url"),
  158. MatrixBotChatID: r.FormValue("matrix_bot_chat_id"),
  159. }
  160. }