From 57dfe8a6af1d5d3b5b6cc06ffb3ec2a9d816f8bc Mon Sep 17 00:00:00 2001 From: Leo Dev Date: Tue, 21 May 2024 17:05:43 +0200 Subject: [PATCH] fixed github api limit --- src/fetcher.go | 9 +++++---- src/gh.go | 12 ------------ src/info.go | 5 +++-- src/install.go | 11 ++++------- 4 files changed, 12 insertions(+), 25 deletions(-) diff --git a/src/fetcher.go b/src/fetcher.go index 827f86a..89cf3e5 100644 --- a/src/fetcher.go +++ b/src/fetcher.go @@ -23,6 +23,7 @@ type Package struct { type PackageIndex struct { Name string `json:"name"` Repo string `json:"repo"` + Latest string `json:"latest"` Message string `json:"message"` } @@ -48,17 +49,17 @@ func sendRequest(method, url string, jsonBody []byte) Request { return Request{Body: resBody, StatusCode: res.StatusCode} } -func getRepoURL(packageName string) (string, error) { +func getPackage(packageName string) (PackageIndex, error) { var pkgidx PackageIndex jsonBody := []byte(fmt.Sprintf(`{"name": "%s"}`, packageName)) req := sendRequest(http.MethodGet, "http://localhost:3000", jsonBody) err := json.Unmarshal(req.Body, &pkgidx) if err != nil { fmt.Println("Json Error: ", err) - return "", err + return pkgidx, err } if req.StatusCode != 200 { - return "", fmt.Errorf(pkgidx.Message) + return pkgidx, fmt.Errorf(pkgidx.Message) } - return pkgidx.Repo, nil + return pkgidx, nil } diff --git a/src/gh.go b/src/gh.go index 7505aa6..248ae8d 100644 --- a/src/gh.go +++ b/src/gh.go @@ -2,7 +2,6 @@ package main import ( "archive/zip" - "encoding/json" "fmt" "io" "io/ioutil" @@ -119,17 +118,6 @@ func Unzip(src, dest string) error { return nil } -func getLatestVersion(repoU string) (string, error) { - jsonBody := []byte("") - res := sendRequest(http.MethodGet, fmt.Sprintf("https://api.github.com/repos%s/releases/latest", repoU), jsonBody) - var release Release - err := json.Unmarshal([]byte(string(res.Body)), &release) - if err != nil || res.StatusCode != 200 { - return "", err - } - return release.TagName, nil -} - func downloadPackage(repoU, tag string) error { resp, err := http.Get(fmt.Sprintf("https://github.com/%s/archive/refs/tags/%s.zip", strings.Trim(repoU, "/"), tag)) if err != nil { diff --git a/src/info.go b/src/info.go index dcabf9a..9a5e7f6 100644 --- a/src/info.go +++ b/src/info.go @@ -5,7 +5,7 @@ import "fmt" func showPackageInfo(packageName string) { progress := ProgressBar{total: 4, length: 20} progress.change(3, "", "Fetching") - repoURL, err := getRepoURL(packageName) + pkgidx, err := getPackage(packageName) if err != nil { fmt.Printf("\nError getting repo URL: %v\n", err) return @@ -25,7 +25,8 @@ func showPackageInfo(packageName string) { // } fmt.Printf("Package: %s\n", packageName) - fmt.Printf("Repo: %s\n", repoURL) + fmt.Printf("Repo: %s\n", pkgidx.Repo) + fmt.Printf("Version: %s\n", pkgidx.Latest) // for version, info := range pkgIndex.Versions { // fmt.Printf("Version: %s\n", version) // fmt.Printf(" Author: %s\n", info.Author) diff --git a/src/install.go b/src/install.go index 671f3d8..d41bee7 100644 --- a/src/install.go +++ b/src/install.go @@ -22,21 +22,18 @@ type PackageVersion struct { func installPackage(packageName, packageVersion string) { progress := ProgressBar{total: 10, length: 20, enabled: true} progress.change(1, "", "Fetching") - repoURL, err := getRepoURL(packageName) + pkgidx, err := getPackage(packageName) if err != nil { fmt.Printf("Error getting repo URL: %s\n", err) return } - repoU, err := url.Parse(repoURL) + repoU, err := url.Parse(pkgidx.Repo) if err != nil { fmt.Printf("Error parsing repo URL: %s\n", err) } if packageVersion == "" { - packageVersion, err = getLatestVersion(repoU.Path) - if err != nil { - fmt.Printf("Error extracting version: %s\n", err) - } - progress.change(3, "", fmt.Sprintf("Found version %s", packageVersion)) + packageVersion = pkgidx.Latest + progress.change(3, "", fmt.Sprintf("Using version %s", packageVersion)) } progress.change(6, "", "Downloading") downloadPackage(repoU.Path, packageVersion)