codeberg.go 876 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package feed
  2. import (
  3. "fmt"
  4. "net/http"
  5. )
  6. type codebergReleaseResponseJson struct {
  7. TagName string `json:"tag_name"`
  8. PublishedAt string `json:"published_at"`
  9. HtmlUrl string `json:"html_url"`
  10. }
  11. func fetchLatestCodebergRelease(request *ReleaseRequest) (*AppRelease, error) {
  12. httpRequest, err := http.NewRequest(
  13. "GET",
  14. fmt.Sprintf(
  15. "https://codeberg.org/api/v1/repos/%s/releases/latest",
  16. request.Repository,
  17. ),
  18. nil,
  19. )
  20. if err != nil {
  21. return nil, err
  22. }
  23. response, err := decodeJsonFromRequest[codebergReleaseResponseJson](defaultClient, httpRequest)
  24. if err != nil {
  25. return nil, err
  26. }
  27. return &AppRelease{
  28. Source: ReleaseSourceCodeberg,
  29. Name: request.Repository,
  30. Version: normalizeVersionFormat(response.TagName),
  31. NotesUrl: response.HtmlUrl,
  32. TimeReleased: parseRFC3339Time(response.PublishedAt),
  33. }, nil
  34. }