Add feed information into webhook event
This commit is contained in:
parent
cb228e73ad
commit
ca6af9684a
3 changed files with 32 additions and 5 deletions
|
@ -181,10 +181,10 @@ func PushEntries(feed *model.Feed, entries model.Entries, userIntegrations *mode
|
||||||
}
|
}
|
||||||
|
|
||||||
if userIntegrations.WebhookEnabled {
|
if userIntegrations.WebhookEnabled {
|
||||||
logger.Debug("[Integration] Sending %d entries for User #%d to Webhook URL: %s", len(entries), userIntegrations.UserID, userIntegrations.WebhookURL)
|
logger.Debug("[Integration] Sending %d entries for user #%d to Webhook URL: %s", len(entries), userIntegrations.UserID, userIntegrations.WebhookURL)
|
||||||
|
|
||||||
webhookClient := webhook.NewClient(userIntegrations.WebhookURL, userIntegrations.WebhookSecret)
|
webhookClient := webhook.NewClient(userIntegrations.WebhookURL, userIntegrations.WebhookSecret)
|
||||||
if err := webhookClient.SendWebhook(entries); err != nil {
|
if err := webhookClient.SendWebhook(feed, entries); err != nil {
|
||||||
logger.Error("[Integration] sending entries to webhook failed: %v", err)
|
logger.Error("[Integration] sending entries to webhook failed: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ func NewClient(webhookURL, webhookSecret string) *Client {
|
||||||
return &Client{webhookURL, webhookSecret}
|
return &Client{webhookURL, webhookSecret}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) SendWebhook(entries model.Entries) error {
|
func (c *Client) SendWebhook(feed *model.Feed, entries model.Entries) error {
|
||||||
if c.webhookURL == "" {
|
if c.webhookURL == "" {
|
||||||
return fmt.Errorf(`webhook: missing webhook URL`)
|
return fmt.Errorf(`webhook: missing webhook URL`)
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,20 @@ func (c *Client) SendWebhook(entries model.Entries) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
requestBody, err := json.Marshal(entries)
|
webhookEvent := &WebhookEvent{
|
||||||
|
// Send only a subset of the fields to avoid leaking sensitive data.
|
||||||
|
Feed: &WebhookFeed{
|
||||||
|
ID: feed.ID,
|
||||||
|
UserID: feed.UserID,
|
||||||
|
FeedURL: feed.FeedURL,
|
||||||
|
SiteURL: feed.SiteURL,
|
||||||
|
Title: feed.Title,
|
||||||
|
CheckedAt: feed.CheckedAt,
|
||||||
|
},
|
||||||
|
Entries: entries,
|
||||||
|
}
|
||||||
|
|
||||||
|
requestBody, err := json.Marshal(webhookEvent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("webhook: unable to encode request body: %v", err)
|
return fmt.Errorf("webhook: unable to encode request body: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -62,3 +75,17 @@ func (c *Client) SendWebhook(entries model.Entries) error {
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type WebhookFeed struct {
|
||||||
|
ID int64 `json:"id"`
|
||||||
|
UserID int64 `json:"user_id"`
|
||||||
|
FeedURL string `json:"feed_url"`
|
||||||
|
SiteURL string `json:"site_url"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
CheckedAt time.Time `json:"checked_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type WebhookEvent struct {
|
||||||
|
Feed *WebhookFeed `json:"feed"`
|
||||||
|
Entries model.Entries `json:"entries"`
|
||||||
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ type Feed struct {
|
||||||
FetchViaProxy bool `json:"fetch_via_proxy"`
|
FetchViaProxy bool `json:"fetch_via_proxy"`
|
||||||
Category *Category `json:"category,omitempty"`
|
Category *Category `json:"category,omitempty"`
|
||||||
Entries Entries `json:"entries,omitempty"`
|
Entries Entries `json:"entries,omitempty"`
|
||||||
IconURL string `json:"icon_url"`
|
IconURL string `json:"-"`
|
||||||
Icon *FeedIcon `json:"icon"`
|
Icon *FeedIcon `json:"icon"`
|
||||||
HideGlobally bool `json:"hide_globally"`
|
HideGlobally bool `json:"hide_globally"`
|
||||||
UnreadCount int `json:"-"`
|
UnreadCount int `json:"-"`
|
||||||
|
|
Loading…
Reference in a new issue