From c46b6e456a30ea877386b495b53543cd7a4efa0d Mon Sep 17 00:00:00 2001 From: Saswata Mukherjee Date: Tue, 1 Jun 2021 15:22:35 +0530 Subject: [PATCH] Add github token support Signed-off-by: Saswata Mukherjee --- .github/workflows/go.yaml | 1 + pkg/mdformatter/linktransformer/validator.go | 35 ++++++++++++++++---- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/.github/workflows/go.yaml b/.github/workflows/go.yaml index 915c522..7954572 100644 --- a/.github/workflows/go.yaml +++ b/.github/workflows/go.yaml @@ -55,4 +55,5 @@ jobs: - name: Run unit tests. env: GOBIN: /tmp/.bin + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: make test \ No newline at end of file diff --git a/pkg/mdformatter/linktransformer/validator.go b/pkg/mdformatter/linktransformer/validator.go index 0b27955..d726532 100644 --- a/pkg/mdformatter/linktransformer/validator.go +++ b/pkg/mdformatter/linktransformer/validator.go @@ -8,6 +8,7 @@ import ( "fmt" "math" "net/http" + "os" "regexp" "strconv" "strings" @@ -86,8 +87,30 @@ func getGitHubRegex(repoRe string) (*regexp.Regexp, int, error) { var pullNum []GitHubResponse var issueNum []GitHubResponse max := 0 + // All GitHub API reqs need to have User-Agent: https://docs.github.com/en/rest/overview/resources-in-the-rest-api#user-agent-required. + client := &http.Client{} + repoToken := os.Getenv("GITHUB_TOKEN") + // Check latest pull request number. - respPull, err := http.Get(fmt.Sprintf(gitHubAPIURL, reponame, "pulls")) + reqPull, err := http.NewRequest("GET", fmt.Sprintf(gitHubAPIURL, reponame, "pulls"), nil) + if err != nil { + return nil, math.MaxInt64, err + } + reqPull.Header.Set("User-Agent", "mdox") + + // Check latest issue number and return whichever is greater. + reqIssue, err := http.NewRequest("GET", fmt.Sprintf(gitHubAPIURL, reponame, "issues"), nil) + if err != nil { + return nil, math.MaxInt64, err + } + reqIssue.Header.Set("User-Agent", "mdox") + + if repoToken != "" { + reqPull.Header.Set("Authorization", "Bearer "+repoToken) + reqIssue.Header.Set("Authorization", "Bearer "+repoToken) + } + + respPull, err := client.Do(reqPull) if err != nil { return nil, math.MaxInt64, err } @@ -98,12 +121,8 @@ func getGitHubRegex(repoRe string) (*regexp.Regexp, int, error) { if err := json.NewDecoder(respPull.Body).Decode(&pullNum); err != nil { return nil, math.MaxInt64, err } - if len(pullNum) > 0 { - max = pullNum[0].Number - } - // Check latest issue number and return whichever is greater. - respIssue, err := http.Get(fmt.Sprintf(gitHubAPIURL, reponame, "issues")) + respIssue, err := client.Do(reqIssue) if err != nil { return nil, math.MaxInt64, err } @@ -114,6 +133,10 @@ func getGitHubRegex(repoRe string) (*regexp.Regexp, int, error) { if err := json.NewDecoder(respIssue.Body).Decode(&issueNum); err != nil { return nil, math.MaxInt64, err } + + if len(pullNum) > 0 { + max = pullNum[0].Number + } if len(issueNum) > 0 && issueNum[0].Number > max { max = issueNum[0].Number }