From 1200a1bfc2f9d1dc8e39d86317e691a6c5b76289 Mon Sep 17 00:00:00 2001 From: Evan Burkey Date: Mon, 7 Jul 2025 09:58:31 -0700 Subject: [PATCH] updated to v2 api --- main.go | 28 ++++++++++++++++------------ manifest.go | 13 +++++++++---- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/main.go b/main.go index 4c3ae5f..ac292d2 100644 --- a/main.go +++ b/main.go @@ -16,7 +16,7 @@ import ( ) const ( - manifestUrl = "https://updater.project-epoch.net/api/manifest" + manifestUrl = "https://updater.project-epoch.net/api/v2/manifest" defaultWowPath = "/path/to/wow" defaultLaunchCmd = "not configured" ) @@ -125,18 +125,22 @@ func downloadUpdate(config *Config, force bool) (DownloadStats, error) { } defer outFile.Close() - resp, err := http.Get(file.URL) - if err != nil { - return stats, err - } - defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { - return stats, fmt.Errorf("failed to download update from %s, status code: %d", file.URL, resp.StatusCode) - } + for _, url := range []string{file.Urls.Cloudflare, file.Urls.Digitalocean, file.Urls.None} { + resp, err := http.Get(url) + if err != nil { + return stats, err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return stats, fmt.Errorf("failed to download update from %s, status code: %d", url, resp.StatusCode) + } - _, err = io.Copy(outFile, resp.Body) - if err != nil { - return stats, err + _, err = io.Copy(outFile, resp.Body) + if err != nil { + return stats, err + } + + break } stats.updated += 1 diff --git a/manifest.go b/manifest.go index 755872f..8882ea6 100644 --- a/manifest.go +++ b/manifest.go @@ -11,13 +11,18 @@ type File struct { Hash string `json:"Hash"` Size int `json:"Size"` Custom bool `json:"Custom"` - URL string `json:"URL"` - Origin string `json:"Origin"` + Urls struct { + Digitalocean string `json:"digitalocean"` + Cloudflare string `json:"cloudflare"` + None string `json:"none"` + } `json:"Urls"` } type Manifest struct { - Version string `json:"Version"` - Files []File `json:"Files"` + Version string `json:"Version"` + UID string `json:"Uid"` + Files []File `json:"Files"` + CheckedAt string `json:"checked_at"` } func getManifest() (*Manifest, error) {