integration.go 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package form // import "miniflux.app/v2/internal/ui/form"
  4. import (
  5. "net/http"
  6. "miniflux.app/v2/internal/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. AppriseEnabled bool
  59. AppriseURL string
  60. AppriseServicesURL string
  61. ShioriEnabled bool
  62. ShioriURL string
  63. ShioriUsername string
  64. ShioriPassword string
  65. ShaarliEnabled bool
  66. ShaarliURL string
  67. ShaarliAPISecret string
  68. WebhookEnabled bool
  69. WebhookURL string
  70. WebhookSecret string
  71. }
  72. // Merge copy form values to the model.
  73. func (i IntegrationForm) Merge(integration *model.Integration) {
  74. integration.PinboardEnabled = i.PinboardEnabled
  75. integration.PinboardToken = i.PinboardToken
  76. integration.PinboardTags = i.PinboardTags
  77. integration.PinboardMarkAsUnread = i.PinboardMarkAsUnread
  78. integration.InstapaperEnabled = i.InstapaperEnabled
  79. integration.InstapaperUsername = i.InstapaperUsername
  80. integration.InstapaperPassword = i.InstapaperPassword
  81. integration.FeverEnabled = i.FeverEnabled
  82. integration.FeverUsername = i.FeverUsername
  83. integration.GoogleReaderEnabled = i.GoogleReaderEnabled
  84. integration.GoogleReaderUsername = i.GoogleReaderUsername
  85. integration.WallabagEnabled = i.WallabagEnabled
  86. integration.WallabagOnlyURL = i.WallabagOnlyURL
  87. integration.WallabagURL = i.WallabagURL
  88. integration.WallabagClientID = i.WallabagClientID
  89. integration.WallabagClientSecret = i.WallabagClientSecret
  90. integration.WallabagUsername = i.WallabagUsername
  91. integration.WallabagPassword = i.WallabagPassword
  92. integration.NotionEnabled = i.NotionEnabled
  93. integration.NotionPageID = i.NotionPageID
  94. integration.NotionToken = i.NotionToken
  95. integration.NunuxKeeperEnabled = i.NunuxKeeperEnabled
  96. integration.NunuxKeeperURL = i.NunuxKeeperURL
  97. integration.NunuxKeeperAPIKey = i.NunuxKeeperAPIKey
  98. integration.EspialEnabled = i.EspialEnabled
  99. integration.EspialURL = i.EspialURL
  100. integration.EspialAPIKey = i.EspialAPIKey
  101. integration.EspialTags = i.EspialTags
  102. integration.ReadwiseEnabled = i.ReadwiseEnabled
  103. integration.ReadwiseAPIKey = i.ReadwiseAPIKey
  104. integration.PocketEnabled = i.PocketEnabled
  105. integration.PocketAccessToken = i.PocketAccessToken
  106. integration.PocketConsumerKey = i.PocketConsumerKey
  107. integration.TelegramBotEnabled = i.TelegramBotEnabled
  108. integration.TelegramBotToken = i.TelegramBotToken
  109. integration.TelegramBotChatID = i.TelegramBotChatID
  110. integration.LinkdingEnabled = i.LinkdingEnabled
  111. integration.LinkdingURL = i.LinkdingURL
  112. integration.LinkdingAPIKey = i.LinkdingAPIKey
  113. integration.LinkdingTags = i.LinkdingTags
  114. integration.LinkdingMarkAsUnread = i.LinkdingMarkAsUnread
  115. integration.MatrixBotEnabled = i.MatrixBotEnabled
  116. integration.MatrixBotUser = i.MatrixBotUser
  117. integration.MatrixBotPassword = i.MatrixBotPassword
  118. integration.MatrixBotURL = i.MatrixBotURL
  119. integration.MatrixBotChatID = i.MatrixBotChatID
  120. integration.AppriseEnabled = i.AppriseEnabled
  121. integration.AppriseServicesURL = i.AppriseServicesURL
  122. integration.AppriseURL = i.AppriseURL
  123. integration.ShioriEnabled = i.ShioriEnabled
  124. integration.ShioriURL = i.ShioriURL
  125. integration.ShioriUsername = i.ShioriUsername
  126. integration.ShioriPassword = i.ShioriPassword
  127. integration.ShaarliEnabled = i.ShaarliEnabled
  128. integration.ShaarliURL = i.ShaarliURL
  129. integration.ShaarliAPISecret = i.ShaarliAPISecret
  130. integration.WebhookEnabled = i.WebhookEnabled
  131. integration.WebhookURL = i.WebhookURL
  132. }
  133. // NewIntegrationForm returns a new IntegrationForm.
  134. func NewIntegrationForm(r *http.Request) *IntegrationForm {
  135. return &IntegrationForm{
  136. PinboardEnabled: r.FormValue("pinboard_enabled") == "1",
  137. PinboardToken: r.FormValue("pinboard_token"),
  138. PinboardTags: r.FormValue("pinboard_tags"),
  139. PinboardMarkAsUnread: r.FormValue("pinboard_mark_as_unread") == "1",
  140. InstapaperEnabled: r.FormValue("instapaper_enabled") == "1",
  141. InstapaperUsername: r.FormValue("instapaper_username"),
  142. InstapaperPassword: r.FormValue("instapaper_password"),
  143. FeverEnabled: r.FormValue("fever_enabled") == "1",
  144. FeverUsername: r.FormValue("fever_username"),
  145. FeverPassword: r.FormValue("fever_password"),
  146. GoogleReaderEnabled: r.FormValue("googlereader_enabled") == "1",
  147. GoogleReaderUsername: r.FormValue("googlereader_username"),
  148. GoogleReaderPassword: r.FormValue("googlereader_password"),
  149. WallabagEnabled: r.FormValue("wallabag_enabled") == "1",
  150. WallabagOnlyURL: r.FormValue("wallabag_only_url") == "1",
  151. WallabagURL: r.FormValue("wallabag_url"),
  152. WallabagClientID: r.FormValue("wallabag_client_id"),
  153. WallabagClientSecret: r.FormValue("wallabag_client_secret"),
  154. WallabagUsername: r.FormValue("wallabag_username"),
  155. WallabagPassword: r.FormValue("wallabag_password"),
  156. NotionEnabled: r.FormValue("notion_enabled") == "1",
  157. NotionPageID: r.FormValue("notion_page_id"),
  158. NotionToken: r.FormValue("notion_token"),
  159. NunuxKeeperEnabled: r.FormValue("nunux_keeper_enabled") == "1",
  160. NunuxKeeperURL: r.FormValue("nunux_keeper_url"),
  161. NunuxKeeperAPIKey: r.FormValue("nunux_keeper_api_key"),
  162. EspialEnabled: r.FormValue("espial_enabled") == "1",
  163. EspialURL: r.FormValue("espial_url"),
  164. EspialAPIKey: r.FormValue("espial_api_key"),
  165. EspialTags: r.FormValue("espial_tags"),
  166. ReadwiseEnabled: r.FormValue("readwise_enabled") == "1",
  167. ReadwiseAPIKey: r.FormValue("readwise_api_key"),
  168. PocketEnabled: r.FormValue("pocket_enabled") == "1",
  169. PocketAccessToken: r.FormValue("pocket_access_token"),
  170. PocketConsumerKey: r.FormValue("pocket_consumer_key"),
  171. TelegramBotEnabled: r.FormValue("telegram_bot_enabled") == "1",
  172. TelegramBotToken: r.FormValue("telegram_bot_token"),
  173. TelegramBotChatID: r.FormValue("telegram_bot_chat_id"),
  174. LinkdingEnabled: r.FormValue("linkding_enabled") == "1",
  175. LinkdingURL: r.FormValue("linkding_url"),
  176. LinkdingAPIKey: r.FormValue("linkding_api_key"),
  177. LinkdingTags: r.FormValue("linkding_tags"),
  178. LinkdingMarkAsUnread: r.FormValue("linkding_mark_as_unread") == "1",
  179. MatrixBotEnabled: r.FormValue("matrix_bot_enabled") == "1",
  180. MatrixBotUser: r.FormValue("matrix_bot_user"),
  181. MatrixBotPassword: r.FormValue("matrix_bot_password"),
  182. MatrixBotURL: r.FormValue("matrix_bot_url"),
  183. MatrixBotChatID: r.FormValue("matrix_bot_chat_id"),
  184. AppriseEnabled: r.FormValue("apprise_enabled") == "1",
  185. AppriseURL: r.FormValue("apprise_url"),
  186. AppriseServicesURL: r.FormValue("apprise_services_url"),
  187. ShioriEnabled: r.FormValue("shiori_enabled") == "1",
  188. ShioriURL: r.FormValue("shiori_url"),
  189. ShioriUsername: r.FormValue("shiori_username"),
  190. ShioriPassword: r.FormValue("shiori_password"),
  191. ShaarliEnabled: r.FormValue("shaarli_enabled") == "1",
  192. ShaarliURL: r.FormValue("shaarli_url"),
  193. ShaarliAPISecret: r.FormValue("shaarli_api_secret"),
  194. WebhookEnabled: r.FormValue("webhook_enabled") == "1",
  195. WebhookURL: r.FormValue("webhook_url"),
  196. }
  197. }