1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-09-15 18:57:04 +00:00

Add generic webhook integration

This commit is contained in:
Frédéric Guillot 2023-09-08 22:45:17 -07:00
parent 32d33104a4
commit 48f6885f44
39 changed files with 527 additions and 324 deletions

View file

@ -69,6 +69,9 @@ type IntegrationForm struct {
ShaarliEnabled bool
ShaarliURL string
ShaarliAPISecret string
WebhookEnabled bool
WebhookURL string
WebhookSecret string
}
// Merge copy form values to the model.
@ -129,6 +132,8 @@ func (i IntegrationForm) Merge(integration *model.Integration) {
integration.ShaarliEnabled = i.ShaarliEnabled
integration.ShaarliURL = i.ShaarliURL
integration.ShaarliAPISecret = i.ShaarliAPISecret
integration.WebhookEnabled = i.WebhookEnabled
integration.WebhookURL = i.WebhookURL
}
// NewIntegrationForm returns a new IntegrationForm.
@ -192,5 +197,7 @@ func NewIntegrationForm(r *http.Request) *IntegrationForm {
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"),
}
}

View file

@ -84,6 +84,9 @@ func (h *handler) showIntegrationPage(w http.ResponseWriter, r *http.Request) {
ShaarliEnabled: integration.ShaarliEnabled,
ShaarliURL: integration.ShaarliURL,
ShaarliAPISecret: integration.ShaarliAPISecret,
WebhookEnabled: integration.WebhookEnabled,
WebhookURL: integration.WebhookURL,
WebhookSecret: integration.WebhookSecret,
}
sess := session.New(h.store, request.SessionID(r))

View file

@ -67,6 +67,18 @@ func (h *handler) updateIntegration(w http.ResponseWriter, r *http.Request) {
integration.GoogleReaderPassword = ""
}
if integrationForm.WebhookEnabled {
if integrationForm.WebhookURL == "" {
integration.WebhookEnabled = false
integration.WebhookSecret = ""
} else if integration.WebhookSecret == "" {
integration.WebhookSecret = crypto.GenerateRandomStringHex(32)
}
} else {
integration.WebhookURL = ""
integration.WebhookSecret = ""
}
err = h.store.UpdateIntegration(integration)
if err != nil {
html.ServerError(w, r, err)