miniflux/internal/ui/form/integration.go

282 lines
14 KiB
Go
Raw Normal View History

// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
2017-12-03 04:32:14 +01:00
package form // import "miniflux.app/v2/internal/ui/form"
2017-12-03 04:32:14 +01:00
import (
"net/http"
"strconv"
2017-12-03 04:32:14 +01:00
"miniflux.app/v2/internal/model"
2017-12-03 04:32:14 +01:00
)
// IntegrationForm represents user integration settings form.
type IntegrationForm struct {
PinboardEnabled bool
PinboardToken string
PinboardTags string
PinboardMarkAsUnread bool
InstapaperEnabled bool
InstapaperUsername string
InstapaperPassword string
FeverEnabled bool
FeverUsername string
FeverPassword string
GoogleReaderEnabled bool
GoogleReaderUsername string
GoogleReaderPassword string
WallabagEnabled bool
WallabagOnlyURL bool
WallabagURL string
WallabagClientID string
WallabagClientSecret string
WallabagUsername string
WallabagPassword string
NotionEnabled bool
NotionPageID string
NotionToken string
NunuxKeeperEnabled bool
NunuxKeeperURL string
NunuxKeeperAPIKey string
EspialEnabled bool
EspialURL string
EspialAPIKey string
EspialTags string
ReadwiseEnabled bool
ReadwiseAPIKey string
PocketEnabled bool
PocketAccessToken string
PocketConsumerKey string
TelegramBotEnabled bool
TelegramBotToken string
TelegramBotChatID string
TelegramBotTopicID *int64
TelegramBotDisableWebPagePreview bool
TelegramBotDisableNotification bool
TelegramBotDisableButtons bool
2024-01-23 18:12:31 +01:00
LinkAceEnabled bool
LinkAceURL string
LinkAceAPIKey string
LinkAceTags string
LinkAcePrivate bool
LinkAceCheckDisabled bool
LinkdingEnabled bool
LinkdingURL string
LinkdingAPIKey string
LinkdingTags string
LinkdingMarkAsUnread bool
2024-02-12 02:12:37 +01:00
LinkwardenEnabled bool
LinkwardenURL string
LinkwardenAPIKey string
MatrixBotEnabled bool
MatrixBotUser string
MatrixBotPassword string
MatrixBotURL string
MatrixBotChatID string
AppriseEnabled bool
AppriseURL string
AppriseServicesURL string
2024-02-22 04:57:34 +01:00
ReadeckEnabled bool
ReadeckURL string
ReadeckAPIKey string
ReadeckLabels string
ReadeckOnlyURL bool
ShioriEnabled bool
ShioriURL string
ShioriUsername string
ShioriPassword string
ShaarliEnabled bool
ShaarliURL string
ShaarliAPISecret string
WebhookEnabled bool
WebhookURL string
WebhookSecret string
2023-10-22 20:10:56 +02:00
RSSBridgeEnabled bool
RSSBridgeURL string
2023-12-05 05:05:04 +01:00
OmnivoreEnabled bool
OmnivoreAPIKey string
OmnivoreURL string
2017-12-03 04:32:14 +01:00
}
// Merge copy form values to the model.
func (i IntegrationForm) Merge(integration *model.Integration) {
integration.PinboardEnabled = i.PinboardEnabled
integration.PinboardToken = i.PinboardToken
integration.PinboardTags = i.PinboardTags
integration.PinboardMarkAsUnread = i.PinboardMarkAsUnread
2017-12-03 06:12:03 +01:00
integration.InstapaperEnabled = i.InstapaperEnabled
integration.InstapaperUsername = i.InstapaperUsername
integration.InstapaperPassword = i.InstapaperPassword
2017-12-04 02:44:27 +01:00
integration.FeverEnabled = i.FeverEnabled
integration.FeverUsername = i.FeverUsername
integration.GoogleReaderEnabled = i.GoogleReaderEnabled
integration.GoogleReaderUsername = i.GoogleReaderUsername
2017-12-19 05:52:46 +01:00
integration.WallabagEnabled = i.WallabagEnabled
integration.WallabagOnlyURL = i.WallabagOnlyURL
2017-12-19 05:52:46 +01:00
integration.WallabagURL = i.WallabagURL
integration.WallabagClientID = i.WallabagClientID
integration.WallabagClientSecret = i.WallabagClientSecret
integration.WallabagUsername = i.WallabagUsername
integration.WallabagPassword = i.WallabagPassword
2023-07-08 00:20:14 +02:00
integration.NotionEnabled = i.NotionEnabled
integration.NotionPageID = i.NotionPageID
integration.NotionToken = i.NotionToken
2018-02-25 20:49:08 +01:00
integration.NunuxKeeperEnabled = i.NunuxKeeperEnabled
integration.NunuxKeeperURL = i.NunuxKeeperURL
integration.NunuxKeeperAPIKey = i.NunuxKeeperAPIKey
2022-04-21 04:44:47 +02:00
integration.EspialEnabled = i.EspialEnabled
integration.EspialURL = i.EspialURL
integration.EspialAPIKey = i.EspialAPIKey
integration.EspialTags = i.EspialTags
2023-07-28 05:51:44 +02:00
integration.ReadwiseEnabled = i.ReadwiseEnabled
integration.ReadwiseAPIKey = i.ReadwiseAPIKey
2018-05-20 22:31:56 +02:00
integration.PocketEnabled = i.PocketEnabled
integration.PocketAccessToken = i.PocketAccessToken
integration.PocketConsumerKey = i.PocketConsumerKey
2021-09-08 05:04:22 +02:00
integration.TelegramBotEnabled = i.TelegramBotEnabled
integration.TelegramBotToken = i.TelegramBotToken
integration.TelegramBotChatID = i.TelegramBotChatID
integration.TelegramBotTopicID = i.TelegramBotTopicID
integration.TelegramBotDisableWebPagePreview = i.TelegramBotDisableWebPagePreview
integration.TelegramBotDisableNotification = i.TelegramBotDisableNotification
integration.TelegramBotDisableButtons = i.TelegramBotDisableButtons
2024-01-23 18:12:31 +01:00
integration.LinkAceEnabled = i.LinkAceEnabled
integration.LinkAceURL = i.LinkAceURL
integration.LinkAceAPIKey = i.LinkAceAPIKey
integration.LinkAceTags = i.LinkAceTags
integration.LinkAcePrivate = i.LinkAcePrivate
integration.LinkAceCheckDisabled = i.LinkAceCheckDisabled
2022-05-23 17:53:06 +02:00
integration.LinkdingEnabled = i.LinkdingEnabled
integration.LinkdingURL = i.LinkdingURL
integration.LinkdingAPIKey = i.LinkdingAPIKey
integration.LinkdingTags = i.LinkdingTags
integration.LinkdingMarkAsUnread = i.LinkdingMarkAsUnread
2024-02-12 02:12:37 +01:00
integration.LinkwardenEnabled = i.LinkwardenEnabled
integration.LinkwardenURL = i.LinkwardenURL
integration.LinkwardenAPIKey = i.LinkwardenAPIKey
2022-10-14 17:18:44 +02:00
integration.MatrixBotEnabled = i.MatrixBotEnabled
integration.MatrixBotUser = i.MatrixBotUser
integration.MatrixBotPassword = i.MatrixBotPassword
integration.MatrixBotURL = i.MatrixBotURL
integration.MatrixBotChatID = i.MatrixBotChatID
2023-08-01 05:55:17 +02:00
integration.AppriseEnabled = i.AppriseEnabled
integration.AppriseServicesURL = i.AppriseServicesURL
integration.AppriseURL = i.AppriseURL
2024-02-22 04:57:34 +01:00
integration.ReadeckEnabled = i.ReadeckEnabled
integration.ReadeckURL = i.ReadeckURL
integration.ReadeckAPIKey = i.ReadeckAPIKey
integration.ReadeckLabels = i.ReadeckLabels
integration.ReadeckOnlyURL = i.ReadeckOnlyURL
2023-08-13 21:48:29 +02:00
integration.ShioriEnabled = i.ShioriEnabled
integration.ShioriURL = i.ShioriURL
integration.ShioriUsername = i.ShioriUsername
integration.ShioriPassword = i.ShioriPassword
2023-08-13 23:30:57 +02:00
integration.ShaarliEnabled = i.ShaarliEnabled
integration.ShaarliURL = i.ShaarliURL
integration.ShaarliAPISecret = i.ShaarliAPISecret
2023-09-09 07:45:17 +02:00
integration.WebhookEnabled = i.WebhookEnabled
integration.WebhookURL = i.WebhookURL
2023-10-22 20:10:56 +02:00
integration.RSSBridgeEnabled = i.RSSBridgeEnabled
integration.RSSBridgeURL = i.RSSBridgeURL
2023-12-05 05:05:04 +01:00
integration.OmnivoreEnabled = i.OmnivoreEnabled
integration.OmnivoreAPIKey = i.OmnivoreAPIKey
integration.OmnivoreURL = i.OmnivoreURL
2017-12-03 04:32:14 +01:00
}
// NewIntegrationForm returns a new IntegrationForm.
2017-12-03 04:32:14 +01:00
func NewIntegrationForm(r *http.Request) *IntegrationForm {
return &IntegrationForm{
PinboardEnabled: r.FormValue("pinboard_enabled") == "1",
PinboardToken: r.FormValue("pinboard_token"),
PinboardTags: r.FormValue("pinboard_tags"),
PinboardMarkAsUnread: r.FormValue("pinboard_mark_as_unread") == "1",
InstapaperEnabled: r.FormValue("instapaper_enabled") == "1",
InstapaperUsername: r.FormValue("instapaper_username"),
InstapaperPassword: r.FormValue("instapaper_password"),
FeverEnabled: r.FormValue("fever_enabled") == "1",
FeverUsername: r.FormValue("fever_username"),
FeverPassword: r.FormValue("fever_password"),
GoogleReaderEnabled: r.FormValue("googlereader_enabled") == "1",
GoogleReaderUsername: r.FormValue("googlereader_username"),
GoogleReaderPassword: r.FormValue("googlereader_password"),
WallabagEnabled: r.FormValue("wallabag_enabled") == "1",
WallabagOnlyURL: r.FormValue("wallabag_only_url") == "1",
WallabagURL: r.FormValue("wallabag_url"),
WallabagClientID: r.FormValue("wallabag_client_id"),
WallabagClientSecret: r.FormValue("wallabag_client_secret"),
WallabagUsername: r.FormValue("wallabag_username"),
WallabagPassword: r.FormValue("wallabag_password"),
NotionEnabled: r.FormValue("notion_enabled") == "1",
NotionPageID: r.FormValue("notion_page_id"),
NotionToken: r.FormValue("notion_token"),
NunuxKeeperEnabled: r.FormValue("nunux_keeper_enabled") == "1",
NunuxKeeperURL: r.FormValue("nunux_keeper_url"),
NunuxKeeperAPIKey: r.FormValue("nunux_keeper_api_key"),
EspialEnabled: r.FormValue("espial_enabled") == "1",
EspialURL: r.FormValue("espial_url"),
EspialAPIKey: r.FormValue("espial_api_key"),
EspialTags: r.FormValue("espial_tags"),
ReadwiseEnabled: r.FormValue("readwise_enabled") == "1",
ReadwiseAPIKey: r.FormValue("readwise_api_key"),
PocketEnabled: r.FormValue("pocket_enabled") == "1",
PocketAccessToken: r.FormValue("pocket_access_token"),
PocketConsumerKey: r.FormValue("pocket_consumer_key"),
TelegramBotEnabled: r.FormValue("telegram_bot_enabled") == "1",
TelegramBotToken: r.FormValue("telegram_bot_token"),
TelegramBotChatID: r.FormValue("telegram_bot_chat_id"),
TelegramBotTopicID: optionalInt64Field(r.FormValue("telegram_bot_topic_id")),
TelegramBotDisableWebPagePreview: r.FormValue("telegram_bot_disable_web_page_preview") == "1",
TelegramBotDisableNotification: r.FormValue("telegram_bot_disable_notification") == "1",
TelegramBotDisableButtons: r.FormValue("telegram_bot_disable_buttons") == "1",
2024-01-23 18:12:31 +01:00
LinkAceEnabled: r.FormValue("linkace_enabled") == "1",
LinkAceURL: r.FormValue("linkace_url"),
LinkAceAPIKey: r.FormValue("linkace_api_key"),
LinkAceTags: r.FormValue("linkace_tags"),
LinkAcePrivate: r.FormValue("linkace_is_private") == "1",
LinkAceCheckDisabled: r.FormValue("linkace_check_disabled") == "1",
LinkdingEnabled: r.FormValue("linkding_enabled") == "1",
LinkdingURL: r.FormValue("linkding_url"),
LinkdingAPIKey: r.FormValue("linkding_api_key"),
LinkdingTags: r.FormValue("linkding_tags"),
LinkdingMarkAsUnread: r.FormValue("linkding_mark_as_unread") == "1",
2024-02-12 02:12:37 +01:00
LinkwardenEnabled: r.FormValue("linkwarden_enabled") == "1",
LinkwardenURL: r.FormValue("linkwarden_url"),
LinkwardenAPIKey: r.FormValue("linkwarden_api_key"),
MatrixBotEnabled: r.FormValue("matrix_bot_enabled") == "1",
MatrixBotUser: r.FormValue("matrix_bot_user"),
MatrixBotPassword: r.FormValue("matrix_bot_password"),
MatrixBotURL: r.FormValue("matrix_bot_url"),
MatrixBotChatID: r.FormValue("matrix_bot_chat_id"),
AppriseEnabled: r.FormValue("apprise_enabled") == "1",
AppriseURL: r.FormValue("apprise_url"),
AppriseServicesURL: r.FormValue("apprise_services_url"),
2024-02-22 04:57:34 +01:00
ReadeckEnabled: r.FormValue("readeck_enabled") == "1",
ReadeckURL: r.FormValue("readeck_url"),
ReadeckAPIKey: r.FormValue("readeck_api_key"),
ReadeckLabels: r.FormValue("readeck_labels"),
ReadeckOnlyURL: r.FormValue("readeck_only_url") == "1",
ShioriEnabled: r.FormValue("shiori_enabled") == "1",
ShioriURL: r.FormValue("shiori_url"),
ShioriUsername: r.FormValue("shiori_username"),
ShioriPassword: r.FormValue("shiori_password"),
ShaarliEnabled: r.FormValue("shaarli_enabled") == "1",
ShaarliURL: r.FormValue("shaarli_url"),
ShaarliAPISecret: r.FormValue("shaarli_api_secret"),
WebhookEnabled: r.FormValue("webhook_enabled") == "1",
WebhookURL: r.FormValue("webhook_url"),
2023-10-22 20:10:56 +02:00
RSSBridgeEnabled: r.FormValue("rssbridge_enabled") == "1",
RSSBridgeURL: r.FormValue("rssbridge_url"),
2023-12-05 05:05:04 +01:00
OmnivoreEnabled: r.FormValue("omnivore_enabled") == "1",
OmnivoreAPIKey: r.FormValue("omnivore_api_key"),
OmnivoreURL: r.FormValue("omnivore_url"),
2017-12-03 04:32:14 +01:00
}
}
func optionalInt64Field(formValue string) *int64 {
if formValue == "" {
return nil
}
value, _ := strconv.ParseInt(formValue, 10, 64)
return &value
}