matrixbot.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package matrixbot // import "miniflux.app/v2/internal/integration/matrixbot"
  4. import (
  5. "fmt"
  6. "strings"
  7. "miniflux.app/v2/internal/model"
  8. )
  9. // PushEntries pushes entries to matrix chat using integration settings provided
  10. func PushEntries(feed *model.Feed, entries model.Entries, matrixBaseURL, matrixUsername, matrixPassword, matrixRoomID string) error {
  11. client := NewClient(matrixBaseURL)
  12. discovery, err := client.DiscoverEndpoints()
  13. if err != nil {
  14. return err
  15. }
  16. loginResponse, err := client.Login(discovery.HomeServerInformation.BaseURL, matrixUsername, matrixPassword)
  17. if err != nil {
  18. return err
  19. }
  20. var textMessages []string
  21. var formattedTextMessages []string
  22. for _, entry := range entries {
  23. textMessages = append(textMessages, fmt.Sprintf(`[%s] %s - %s`, feed.Title, entry.Title, entry.URL))
  24. formattedTextMessages = append(formattedTextMessages, fmt.Sprintf(`<li><strong>%s</strong>: <a href=%q>%s</a></li>`, feed.Title, entry.URL, entry.Title))
  25. }
  26. _, err = client.SendFormattedTextMessage(
  27. discovery.HomeServerInformation.BaseURL,
  28. loginResponse.AccessToken,
  29. matrixRoomID,
  30. strings.Join(textMessages, "\n"),
  31. "<ul>"+strings.Join(formattedTextMessages, "\n")+"</ul>",
  32. )
  33. return err
  34. }