4
0

integration.go 8.2 KB

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