1
0

dev_build.go 1.4 KB

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