From 16a4bc050410d9f6a75fd82fd10f10cffa77215d Mon Sep 17 00:00:00 2001 From: Sam Coe Date: Mon, 25 Jul 2022 14:43:10 +0200 Subject: [PATCH] Example of how to download a release asset --- example_gh_test.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/example_gh_test.go b/example_gh_test.go index f7f4c08..b1f4ee7 100644 --- a/example_gh_test.go +++ b/example_gh_test.go @@ -2,6 +2,7 @@ package gh import ( "fmt" + "io" "log" "os" "time" @@ -56,6 +57,42 @@ func ExampleRESTClient_advanced() { fmt.Println(response) } +// Get release asset from cli/cli repository using REST API. +func ExampleRESTClient_request() { + opts := api.ClientOptions{ + Headers: map[string]string{"Accept": "application/octet-stream"}, + } + client, err := RESTClient(&opts) + if err != nil { + log.Fatal(err) + } + + // URL to cli/cli release v2.14.2 checksums.txt + assetURL := "repos/cli/cli/releases/assets/71589494" + resp, err := client.Request("GET", assetURL, nil) + if err != nil { + log.Fatal(err) + } + defer resp.Body.Close() + + if resp.StatusCode > 299 { + log.Fatal("server error") + } + + f, err := os.CreateTemp("", "*_checksums.txt") + if err != nil { + log.Fatal(err) + } + defer f.Close() + + _, err = io.Copy(f, resp.Body) + if err != nil { + log.Fatal(err) + } + + fmt.Printf("Asset downloaded to %s\n", f.Name()) +} + // Query tags from cli/cli repository using GQL API. func ExampleGQLClient_simple() { client, err := GQLClient(nil)