From 4717ac20372f080eb8b8b060528a4b8dcdbb1a35 Mon Sep 17 00:00:00 2001 From: Danny Berger Date: Tue, 18 Sep 2018 20:29:11 +0000 Subject: [PATCH] consolidate github request/authenticated request --- examples/cfbosh.go | 2 +- message/github/authenticated_release.go | 43 ------------------------- message/github/release.go | 43 +++++++++++++------------ 3 files changed, 23 insertions(+), 65 deletions(-) delete mode 100644 message/github/authenticated_release.go diff --git a/examples/cfbosh.go b/examples/cfbosh.go index 76e30fe..dacb9fb 100644 --- a/examples/cfbosh.go +++ b/examples/cfbosh.go @@ -59,7 +59,7 @@ func main() { message.Join( " ", boshio.Release{Alias: "bosh", Repository: "github.com/cloudfoundry/bosh"}, - github.AuthenticatedRelease{Token: os.Getenv("GITHUB_TOKEN"), Alias: "bosh-cli", Owner: "cloudfoundry", Name: "bosh-cli"}, + github.Release{Token: os.Getenv("GITHUB_TOKEN"), Alias: "bosh-cli", Owner: "cloudfoundry", Name: "bosh-cli"}, boshio.Stemcell{Alias: "ubuntu-xenial", Name: "bosh-aws-xen-hvm-ubuntu-xenial-go_agent"}, ), ), diff --git a/message/github/authenticated_release.go b/message/github/authenticated_release.go deleted file mode 100644 index 61d0b44..0000000 --- a/message/github/authenticated_release.go +++ /dev/null @@ -1,43 +0,0 @@ -package github - -import ( - "context" - "fmt" - - "github.com/dpb587/go-slack-topic-bot/message" - "github.com/pkg/errors" - "github.com/google/go-github/github" - "golang.org/x/oauth2" -) - -type AuthenticatedRelease struct { - Token string - Alias string - Owner string - Name string -} - -var _ message.Messager = &AuthenticatedRelease{} - -func (m AuthenticatedRelease) Message() (string, error) { - ctx := context.Background() - ts := oauth2.StaticTokenSource( - &oauth2.Token{AccessToken: m.Token}, - ) - tc := oauth2.NewClient(ctx, ts) - - client := github.NewClient(tc) - - // list all repositories for the authenticated user - - rels, _, err := client.Repositories.ListReleases(ctx, m.Owner, m.Name, nil) - if err != nil { - return "", errors.Wrap(err, "listing releases") - } - - for _, rel := range rels { - return fmt.Sprintf("%s/%s", m.Alias, *rel.Name), nil - } - - return "", nil -} diff --git a/message/github/release.go b/message/github/release.go index 9f0feca..cb615aa 100644 --- a/message/github/release.go +++ b/message/github/release.go @@ -1,16 +1,18 @@ package github import ( - "encoding/json" - "fmt" - "io/ioutil" "net/http" + "context" + "fmt" "github.com/dpb587/go-slack-topic-bot/message" "github.com/pkg/errors" + "github.com/google/go-github/github" + "golang.org/x/oauth2" ) type Release struct { + Token string Alias string Owner string Name string @@ -18,31 +20,30 @@ type Release struct { var _ message.Messager = &Release{} -type gitHubReleaseApiV2 []struct { - Name string `json:"name"` -} - func (m Release) Message() (string, error) { - res, err := http.DefaultClient.Get(fmt.Sprintf("https://api.github.com/repos/%s/%s/releases", m.Owner, m.Name)) - if err != nil { - return "", err - } + ctx := context.Background() - resBodyBytes, err := ioutil.ReadAll(res.Body) - if err != nil { - return "", errors.Wrap(err, "reading response") + var client = http.DefaultClient + + if m.Token != "" { + client = oauth2.NewClient( + ctx, + oauth2.StaticTokenSource(&oauth2.Token{AccessToken: m.Token}), + ) } - var data gitHubReleaseApiV2 + gh := github.NewClient(client) - err = json.Unmarshal(resBodyBytes, &data) + // list all repositories for the authenticated user + + rels, _, err := gh.Repositories.ListReleases(ctx, m.Owner, m.Name, nil) if err != nil { - return "", errors.Wrap(err, "unmarshalling") + return "", errors.Wrap(err, "listing releases") } - if len(data) == 0 { - return "", nil - } + for _, rel := range rels { + return fmt.Sprintf("%s/%s", m.Alias, *rel.Name), nil + } - return fmt.Sprintf("%s/%s", m.Alias, data[0].Name), nil + return "", nil }