miniflux/internal/integration/matrixbot/matrixbot.go

44 lines
1.3 KiB
Go
Raw Normal View History

// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
2022-10-14 17:18:44 +02:00
package matrixbot // import "miniflux.app/v2/internal/integration/matrixbot"
2022-10-14 17:18:44 +02:00
import (
"fmt"
"strings"
2022-10-14 17:18:44 +02:00
"miniflux.app/v2/internal/model"
2022-10-14 17:18:44 +02:00
)
// PushEntry pushes entries to matrix chat using integration settings provided
func PushEntries(feed *model.Feed, entries model.Entries, matrixBaseURL, matrixUsername, matrixPassword, matrixRoomID string) error {
client := NewClient(matrixBaseURL)
discovery, err := client.DiscoverEndpoints()
2022-10-14 17:18:44 +02:00
if err != nil {
return err
2022-10-14 17:18:44 +02:00
}
loginResponse, err := client.Login(discovery.HomeServerInformation.BaseURL, matrixUsername, matrixPassword)
2022-10-14 17:18:44 +02:00
if err != nil {
return err
2022-10-14 17:18:44 +02:00
}
var textMessages []string
var formattedTextMessages []string
2022-10-14 17:18:44 +02:00
for _, entry := range entries {
textMessages = append(textMessages, fmt.Sprintf(`[%s] %s - %s`, feed.Title, entry.Title, entry.URL))
formattedTextMessages = append(formattedTextMessages, fmt.Sprintf(`<li><strong>%s</strong>: <a href="%s">%s</a></li>`, feed.Title, entry.URL, entry.Title))
2022-10-14 17:18:44 +02:00
}
_, err = client.SendFormattedTextMessage(
discovery.HomeServerInformation.BaseURL,
loginResponse.AccessToken,
matrixRoomID,
strings.Join(textMessages, "\n"),
"<ul>"+strings.Join(formattedTextMessages, "\n")+"</ul>",
)
2022-10-14 17:18:44 +02:00
return err
2022-10-14 17:18:44 +02:00
}