dev_build.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package version
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io"
  6. "net/http"
  7. "time"
  8. "github.com/pkg/errors"
  9. )
  10. type TCommit struct {
  11. SHA string `json:"sha"`
  12. Commit struct {
  13. Message string `json:"message"`
  14. Committer struct {
  15. Date time.Time `json:"date"`
  16. } `json:"committer"`
  17. } `json:"commit"`
  18. }
  19. func getDevBuild() (data TRelease, err error) {
  20. resp, err := http.Get(GetGithubDevCommitAPIUrl())
  21. if err != nil {
  22. return
  23. }
  24. body, err := io.ReadAll(resp.Body)
  25. if err != nil {
  26. return
  27. }
  28. defer resp.Body.Close()
  29. commit := TCommit{}
  30. err = json.Unmarshal(body, &commit)
  31. if err != nil {
  32. return
  33. }
  34. if len(commit.SHA) < 7 {
  35. err = errors.New("invalid commit SHA")
  36. return
  37. }
  38. shortSHA := commit.SHA[:7]
  39. resp, err = http.Get(fmt.Sprintf("%sdev-builds", CloudflareWorkerAPI))
  40. if err != nil {
  41. return
  42. }
  43. body, err = io.ReadAll(resp.Body)
  44. if err != nil {
  45. return
  46. }
  47. defer resp.Body.Close()
  48. assets := []TReleaseAsset{}
  49. err = json.Unmarshal(body, &assets)
  50. if err != nil {
  51. return
  52. }
  53. data = TRelease{
  54. TagName: "sha-" + shortSHA,
  55. Name: "sha-" + shortSHA,
  56. Body: commit.Commit.Message,
  57. Type: ReleaseTypeDev,
  58. PublishedAt: commit.Commit.Committer.Date,
  59. Assets: assets,
  60. }
  61. return
  62. }