dev_build.go 1.3 KB

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