Upgrade github.com/google/go-github v32.1.0 -> v37.0.0 (#16661)
* Upgrade github.com/google/go-github vv32.1.0 -> v37.0.0 * refactor: use GetX() func to reduce code
This commit is contained in:
		
							parent
							
								
									d9ef43a712
								
							
						
					
					
						commit
						89245ee309
					
				
							
								
								
									
										4
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										4
									
								
								go.mod
								
								
								
								
							|  | @ -52,7 +52,7 @@ require ( | |||
| 	github.com/gogs/go-gogs-client v0.0.0-20210131175652-1d7215cd8d85 | ||||
| 	github.com/golang-jwt/jwt v3.2.2+incompatible | ||||
| 	github.com/golang/snappy v0.0.4 // indirect | ||||
| 	github.com/google/go-github/v32 v32.1.0 | ||||
| 	github.com/google/go-github/v37 v37.0.0 | ||||
| 	github.com/google/go-querystring v1.1.0 // indirect | ||||
| 	github.com/google/uuid v1.2.0 | ||||
| 	github.com/gorilla/context v1.1.1 | ||||
|  | @ -124,7 +124,7 @@ require ( | |||
| 	go.uber.org/atomic v1.8.0 // indirect | ||||
| 	go.uber.org/multierr v1.7.0 // indirect | ||||
| 	go.uber.org/zap v1.18.1 // indirect | ||||
| 	golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e | ||||
| 	golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 | ||||
| 	golang.org/x/net v0.0.0-20210716203947-853a461950ff | ||||
| 	golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914 | ||||
| 	golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c | ||||
|  |  | |||
							
								
								
									
										7
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										7
									
								
								go.sum
								
								
								
								
							|  | @ -529,8 +529,8 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ | |||
| github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||
| github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= | ||||
| github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||
| github.com/google/go-github/v32 v32.1.0 h1:GWkQOdXqviCPx7Q7Fj+KyPoGm4SwHRh8rheoPhd27II= | ||||
| github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= | ||||
| github.com/google/go-github/v37 v37.0.0 h1:rCspN8/6kB1BAJWZfuafvHhyfIo5fkAulaP/3bOQ/tM= | ||||
| github.com/google/go-github/v37 v37.0.0/go.mod h1:LM7in3NmXDrX58GbEHy7FtNLbI2JijX93RnMKvWG3m4= | ||||
| github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= | ||||
| github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= | ||||
| github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= | ||||
|  | @ -1145,8 +1145,9 @@ golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWP | |||
| golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= | ||||
| golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= | ||||
| golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= | ||||
| golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e h1:gsTQYXdTw2Gq7RBsWvlQ91b+aEQ6bXFUngBGuR8sPpI= | ||||
| golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | ||||
| golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 h1:/UOmuWzQfxxo9UtlXMwuQU8CMgg1eZXqTRwkSQJWKOI= | ||||
| golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | ||||
| golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||
| golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||
| golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ package migrations | |||
| import ( | ||||
| 	"errors" | ||||
| 
 | ||||
| 	"github.com/google/go-github/v32/github" | ||||
| 	"github.com/google/go-github/v37/github" | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ import ( | |||
| 	"code.gitea.io/gitea/modules/structs" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| 
 | ||||
| 	"github.com/google/go-github/v32/github" | ||||
| 	"github.com/google/go-github/v37/github" | ||||
| 	"golang.org/x/oauth2" | ||||
| ) | ||||
| 
 | ||||
|  | @ -154,20 +154,15 @@ func (g *GithubDownloaderV3) GetRepoInfo() (*base.Repository, error) { | |||
| 	} | ||||
| 	g.rate = &resp.Rate | ||||
| 
 | ||||
| 	defaultBranch := "" | ||||
| 	if gr.DefaultBranch != nil { | ||||
| 		defaultBranch = *gr.DefaultBranch | ||||
| 	} | ||||
| 
 | ||||
| 	// convert github repo to stand Repo
 | ||||
| 	return &base.Repository{ | ||||
| 		Owner:         g.repoOwner, | ||||
| 		Name:          gr.GetName(), | ||||
| 		IsPrivate:     *gr.Private, | ||||
| 		IsPrivate:     gr.GetPrivate(), | ||||
| 		Description:   gr.GetDescription(), | ||||
| 		OriginalURL:   gr.GetHTMLURL(), | ||||
| 		CloneURL:      gr.GetCloneURL(), | ||||
| 		DefaultBranch: defaultBranch, | ||||
| 		DefaultBranch: gr.GetDefaultBranch(), | ||||
| 	}, nil | ||||
| } | ||||
| 
 | ||||
|  | @ -201,20 +196,16 @@ func (g *GithubDownloaderV3) GetMilestones() ([]*base.Milestone, error) { | |||
| 		g.rate = &resp.Rate | ||||
| 
 | ||||
| 		for _, m := range ms { | ||||
| 			var desc string | ||||
| 			if m.Description != nil { | ||||
| 				desc = *m.Description | ||||
| 			} | ||||
| 			var state = "open" | ||||
| 			if m.State != nil { | ||||
| 				state = *m.State | ||||
| 			} | ||||
| 			milestones = append(milestones, &base.Milestone{ | ||||
| 				Title:       *m.Title, | ||||
| 				Description: desc, | ||||
| 				Title:       m.GetTitle(), | ||||
| 				Description: m.GetDescription(), | ||||
| 				Deadline:    m.DueOn, | ||||
| 				State:       state, | ||||
| 				Created:     *m.CreatedAt, | ||||
| 				Created:     m.GetCreatedAt(), | ||||
| 				Updated:     m.UpdatedAt, | ||||
| 				Closed:      m.ClosedAt, | ||||
| 			}) | ||||
|  | @ -227,14 +218,10 @@ func (g *GithubDownloaderV3) GetMilestones() ([]*base.Milestone, error) { | |||
| } | ||||
| 
 | ||||
| func convertGithubLabel(label *github.Label) *base.Label { | ||||
| 	var desc string | ||||
| 	if label.Description != nil { | ||||
| 		desc = *label.Description | ||||
| 	} | ||||
| 	return &base.Label{ | ||||
| 		Name:        *label.Name, | ||||
| 		Color:       *label.Color, | ||||
| 		Description: desc, | ||||
| 		Name:        label.GetName(), | ||||
| 		Color:       label.GetColor(), | ||||
| 		Description: label.GetDescription(), | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -266,24 +253,16 @@ func (g *GithubDownloaderV3) GetLabels() ([]*base.Label, error) { | |||
| 
 | ||||
| func (g *GithubDownloaderV3) convertGithubRelease(rel *github.RepositoryRelease) *base.Release { | ||||
| 	r := &base.Release{ | ||||
| 		TagName:         *rel.TagName, | ||||
| 		TargetCommitish: *rel.TargetCommitish, | ||||
| 		Draft:           *rel.Draft, | ||||
| 		Prerelease:      *rel.Prerelease, | ||||
| 		Created:         rel.CreatedAt.Time, | ||||
| 		PublisherID:     *rel.Author.ID, | ||||
| 		PublisherName:   *rel.Author.Login, | ||||
| 	} | ||||
| 
 | ||||
| 	if rel.Body != nil { | ||||
| 		r.Body = *rel.Body | ||||
| 	} | ||||
| 	if rel.Name != nil { | ||||
| 		r.Name = *rel.Name | ||||
| 	} | ||||
| 
 | ||||
| 	if rel.Author.Email != nil { | ||||
| 		r.PublisherEmail = *rel.Author.Email | ||||
| 		Name:            rel.GetName(), | ||||
| 		TagName:         rel.GetTagName(), | ||||
| 		TargetCommitish: rel.GetTargetCommitish(), | ||||
| 		Draft:           rel.GetDraft(), | ||||
| 		Prerelease:      rel.GetPrerelease(), | ||||
| 		Created:         rel.GetCreatedAt().Time, | ||||
| 		PublisherID:     rel.GetAuthor().GetID(), | ||||
| 		PublisherName:   rel.GetAuthor().GetLogin(), | ||||
| 		PublisherEmail:  rel.GetAuthor().GetEmail(), | ||||
| 		Body:            rel.GetBody(), | ||||
| 	} | ||||
| 
 | ||||
| 	if rel.PublishedAt != nil { | ||||
|  | @ -293,8 +272,8 @@ func (g *GithubDownloaderV3) convertGithubRelease(rel *github.RepositoryRelease) | |||
| 	for _, asset := range rel.Assets { | ||||
| 		var assetID = *asset.ID // Don't optimize this, for closure we need a local variable
 | ||||
| 		r.Assets = append(r.Assets, &base.ReleaseAsset{ | ||||
| 			ID:            *asset.ID, | ||||
| 			Name:          *asset.Name, | ||||
| 			ID:            asset.GetID(), | ||||
| 			Name:          asset.GetName(), | ||||
| 			ContentType:   asset.ContentType, | ||||
| 			Size:          asset.Size, | ||||
| 			DownloadCount: asset.DownloadCount, | ||||
|  | @ -388,24 +367,12 @@ func (g *GithubDownloaderV3) GetIssues(page, perPage int) ([]*base.Issue, bool, | |||
| 		if issue.IsPullRequest() { | ||||
| 			continue | ||||
| 		} | ||||
| 		var body string | ||||
| 		if issue.Body != nil { | ||||
| 			body = *issue.Body | ||||
| 		} | ||||
| 		var milestone string | ||||
| 		if issue.Milestone != nil { | ||||
| 			milestone = *issue.Milestone.Title | ||||
| 		} | ||||
| 
 | ||||
| 		var labels = make([]*base.Label, 0, len(issue.Labels)) | ||||
| 		for _, l := range issue.Labels { | ||||
| 			labels = append(labels, convertGithubLabel(l)) | ||||
| 		} | ||||
| 
 | ||||
| 		var email string | ||||
| 		if issue.User.Email != nil { | ||||
| 			email = *issue.User.Email | ||||
| 		} | ||||
| 
 | ||||
| 		// get reactions
 | ||||
| 		var reactions []*base.Reaction | ||||
| 		for i := 1; ; i++ { | ||||
|  | @ -430,21 +397,27 @@ func (g *GithubDownloaderV3) GetIssues(page, perPage int) ([]*base.Issue, bool, | |||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		var assignees []string | ||||
| 		for i := range issue.Assignees { | ||||
| 			assignees = append(assignees, issue.Assignees[i].GetLogin()) | ||||
| 		} | ||||
| 
 | ||||
| 		allIssues = append(allIssues, &base.Issue{ | ||||
| 			Title:       *issue.Title, | ||||
| 			Number:      int64(*issue.Number), | ||||
| 			PosterID:    *issue.User.ID, | ||||
| 			PosterName:  *issue.User.Login, | ||||
| 			PosterEmail: email, | ||||
| 			Content:     body, | ||||
| 			Milestone:   milestone, | ||||
| 			State:       *issue.State, | ||||
| 			Created:     *issue.CreatedAt, | ||||
| 			Updated:     *issue.UpdatedAt, | ||||
| 			PosterID:    issue.GetUser().GetID(), | ||||
| 			PosterName:  issue.GetUser().GetLogin(), | ||||
| 			PosterEmail: issue.GetUser().GetEmail(), | ||||
| 			Content:     issue.GetBody(), | ||||
| 			Milestone:   issue.GetMilestone().GetTitle(), | ||||
| 			State:       issue.GetState(), | ||||
| 			Created:     issue.GetCreatedAt(), | ||||
| 			Updated:     issue.GetUpdatedAt(), | ||||
| 			Labels:      labels, | ||||
| 			Reactions:   reactions, | ||||
| 			Closed:      issue.ClosedAt, | ||||
| 			IsLocked:    *issue.Locked, | ||||
| 			IsLocked:    issue.GetLocked(), | ||||
| 			Assignees:   assignees, | ||||
| 		}) | ||||
| 	} | ||||
| 
 | ||||
|  | @ -487,11 +460,6 @@ func (g *GithubDownloaderV3) getComments(issueNumber int64) ([]*base.Comment, er | |||
| 		} | ||||
| 		g.rate = &resp.Rate | ||||
| 		for _, comment := range comments { | ||||
| 			var email string | ||||
| 			if comment.User.Email != nil { | ||||
| 				email = *comment.User.Email | ||||
| 			} | ||||
| 
 | ||||
| 			// get reactions
 | ||||
| 			var reactions []*base.Reaction | ||||
| 			for i := 1; ; i++ { | ||||
|  | @ -515,14 +483,15 @@ func (g *GithubDownloaderV3) getComments(issueNumber int64) ([]*base.Comment, er | |||
| 					}) | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			allComments = append(allComments, &base.Comment{ | ||||
| 				IssueIndex:  issueNumber, | ||||
| 				PosterID:    *comment.User.ID, | ||||
| 				PosterName:  *comment.User.Login, | ||||
| 				PosterEmail: email, | ||||
| 				Content:     *comment.Body, | ||||
| 				Created:     *comment.CreatedAt, | ||||
| 				Updated:     *comment.UpdatedAt, | ||||
| 				PosterID:    comment.GetUser().GetID(), | ||||
| 				PosterName:  comment.GetUser().GetLogin(), | ||||
| 				PosterEmail: comment.GetUser().GetEmail(), | ||||
| 				Content:     comment.GetBody(), | ||||
| 				Created:     comment.GetCreatedAt(), | ||||
| 				Updated:     comment.GetUpdatedAt(), | ||||
| 				Reactions:   reactions, | ||||
| 			}) | ||||
| 		} | ||||
|  | @ -558,11 +527,6 @@ func (g *GithubDownloaderV3) GetAllComments(page, perPage int) ([]*base.Comment, | |||
| 	log.Trace("Request get comments %d/%d, but in fact get %d", perPage, page, len(comments)) | ||||
| 	g.rate = &resp.Rate | ||||
| 	for _, comment := range comments { | ||||
| 		var email string | ||||
| 		if comment.User.Email != nil { | ||||
| 			email = *comment.User.Email | ||||
| 		} | ||||
| 
 | ||||
| 		// get reactions
 | ||||
| 		var reactions []*base.Reaction | ||||
| 		for i := 1; ; i++ { | ||||
|  | @ -590,12 +554,12 @@ func (g *GithubDownloaderV3) GetAllComments(page, perPage int) ([]*base.Comment, | |||
| 		issueIndex, _ := strconv.ParseInt((*comment.IssueURL)[idx+1:], 10, 64) | ||||
| 		allComments = append(allComments, &base.Comment{ | ||||
| 			IssueIndex:  issueIndex, | ||||
| 			PosterID:    *comment.User.ID, | ||||
| 			PosterName:  *comment.User.Login, | ||||
| 			PosterEmail: email, | ||||
| 			Content:     *comment.Body, | ||||
| 			Created:     *comment.CreatedAt, | ||||
| 			Updated:     *comment.UpdatedAt, | ||||
| 			PosterID:    comment.GetUser().GetID(), | ||||
| 			PosterName:  comment.GetUser().GetLogin(), | ||||
| 			PosterEmail: comment.GetUser().GetEmail(), | ||||
| 			Content:     comment.GetBody(), | ||||
| 			Created:     comment.GetCreatedAt(), | ||||
| 			Updated:     comment.GetUpdatedAt(), | ||||
| 			Reactions:   reactions, | ||||
| 		}) | ||||
| 	} | ||||
|  | @ -626,59 +590,11 @@ func (g *GithubDownloaderV3) GetPullRequests(page, perPage int) ([]*base.PullReq | |||
| 	log.Trace("Request get pull requests %d/%d, but in fact get %d", perPage, page, len(prs)) | ||||
| 	g.rate = &resp.Rate | ||||
| 	for _, pr := range prs { | ||||
| 		var body string | ||||
| 		if pr.Body != nil { | ||||
| 			body = *pr.Body | ||||
| 		} | ||||
| 		var milestone string | ||||
| 		if pr.Milestone != nil { | ||||
| 			milestone = *pr.Milestone.Title | ||||
| 		} | ||||
| 		var labels = make([]*base.Label, 0, len(pr.Labels)) | ||||
| 		for _, l := range pr.Labels { | ||||
| 			labels = append(labels, convertGithubLabel(l)) | ||||
| 		} | ||||
| 
 | ||||
| 		var email string | ||||
| 		if pr.User.Email != nil { | ||||
| 			email = *pr.User.Email | ||||
| 		} | ||||
| 		var merged bool | ||||
| 		// pr.Merged is not valid, so use MergedAt to test if it's merged
 | ||||
| 		if pr.MergedAt != nil { | ||||
| 			merged = true | ||||
| 		} | ||||
| 
 | ||||
| 		var ( | ||||
| 			headRepoName string | ||||
| 			cloneURL     string | ||||
| 			headRef      string | ||||
| 			headSHA      string | ||||
| 		) | ||||
| 		if pr.Head.Repo != nil { | ||||
| 			if pr.Head.Repo.Name != nil { | ||||
| 				headRepoName = *pr.Head.Repo.Name | ||||
| 			} | ||||
| 			if pr.Head.Repo.CloneURL != nil { | ||||
| 				cloneURL = *pr.Head.Repo.CloneURL | ||||
| 			} | ||||
| 		} | ||||
| 		if pr.Head.Ref != nil { | ||||
| 			headRef = *pr.Head.Ref | ||||
| 		} | ||||
| 		if pr.Head.SHA != nil { | ||||
| 			headSHA = *pr.Head.SHA | ||||
| 		} | ||||
| 		var mergeCommitSHA string | ||||
| 		if pr.MergeCommitSHA != nil { | ||||
| 			mergeCommitSHA = *pr.MergeCommitSHA | ||||
| 		} | ||||
| 
 | ||||
| 		var headUserName string | ||||
| 		if pr.Head.User != nil && pr.Head.User.Login != nil { | ||||
| 			headUserName = *pr.Head.User.Login | ||||
| 		} | ||||
| 
 | ||||
| 		// get reactions
 | ||||
| 		var reactions []*base.Reaction | ||||
| 		for i := 1; ; i++ { | ||||
|  | @ -704,36 +620,36 @@ func (g *GithubDownloaderV3) GetPullRequests(page, perPage int) ([]*base.PullReq | |||
| 		} | ||||
| 
 | ||||
| 		allPRs = append(allPRs, &base.PullRequest{ | ||||
| 			Title:          *pr.Title, | ||||
| 			Number:         int64(*pr.Number), | ||||
| 			PosterName:     *pr.User.Login, | ||||
| 			PosterID:       *pr.User.ID, | ||||
| 			PosterEmail:    email, | ||||
| 			Content:        body, | ||||
| 			Milestone:      milestone, | ||||
| 			State:          *pr.State, | ||||
| 			Created:        *pr.CreatedAt, | ||||
| 			Updated:        *pr.UpdatedAt, | ||||
| 			Title:          pr.GetTitle(), | ||||
| 			Number:         int64(pr.GetNumber()), | ||||
| 			PosterID:       pr.GetUser().GetID(), | ||||
| 			PosterName:     pr.GetUser().GetLogin(), | ||||
| 			PosterEmail:    pr.GetUser().GetEmail(), | ||||
| 			Content:        pr.GetBody(), | ||||
| 			Milestone:      pr.GetMilestone().GetTitle(), | ||||
| 			State:          pr.GetState(), | ||||
| 			Created:        pr.GetCreatedAt(), | ||||
| 			Updated:        pr.GetUpdatedAt(), | ||||
| 			Closed:         pr.ClosedAt, | ||||
| 			Labels:         labels, | ||||
| 			Merged:         merged, | ||||
| 			MergeCommitSHA: mergeCommitSHA, | ||||
| 			Merged:         pr.MergedAt != nil, | ||||
| 			MergeCommitSHA: pr.GetMergeCommitSHA(), | ||||
| 			MergedTime:     pr.MergedAt, | ||||
| 			IsLocked:       pr.ActiveLockReason != nil, | ||||
| 			Head: base.PullRequestBranch{ | ||||
| 				Ref:       headRef, | ||||
| 				SHA:       headSHA, | ||||
| 				RepoName:  headRepoName, | ||||
| 				OwnerName: headUserName, | ||||
| 				CloneURL:  cloneURL, | ||||
| 				Ref:       pr.GetHead().GetRef(), | ||||
| 				SHA:       pr.GetHead().GetSHA(), | ||||
| 				OwnerName: pr.GetHead().GetUser().GetLogin(), | ||||
| 				RepoName:  pr.GetHead().GetRepo().GetName(), | ||||
| 				CloneURL:  pr.GetHead().GetRepo().GetCloneURL(), | ||||
| 			}, | ||||
| 			Base: base.PullRequestBranch{ | ||||
| 				Ref:       *pr.Base.Ref, | ||||
| 				SHA:       *pr.Base.SHA, | ||||
| 				RepoName:  *pr.Base.Repo.Name, | ||||
| 				OwnerName: *pr.Base.User.Login, | ||||
| 				Ref:       pr.GetBase().GetRef(), | ||||
| 				SHA:       pr.GetBase().GetSHA(), | ||||
| 				RepoName:  pr.GetBase().GetRepo().GetName(), | ||||
| 				OwnerName: pr.GetBase().GetUser().GetLogin(), | ||||
| 			}, | ||||
| 			PatchURL:  *pr.PatchURL, | ||||
| 			PatchURL:  pr.GetPatchURL(), | ||||
| 			Reactions: reactions, | ||||
| 		}) | ||||
| 	} | ||||
|  |  | |||
|  | @ -1,138 +0,0 @@ | |||
| // Copyright 2020 The go-github AUTHORS. All rights reserved.
 | ||||
| //
 | ||||
| // Use of this source code is governed by a BSD-style
 | ||||
| // license that can be found in the LICENSE file.
 | ||||
| 
 | ||||
| package github | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| // Workflow represents a repository action workflow.
 | ||||
| type Workflow struct { | ||||
| 	ID        *int64     `json:"id,omitempty"` | ||||
| 	NodeID    *string    `json:"node_id,omitempty"` | ||||
| 	Name      *string    `json:"name,omitempty"` | ||||
| 	Path      *string    `json:"path,omitempty"` | ||||
| 	State     *string    `json:"state,omitempty"` | ||||
| 	CreatedAt *Timestamp `json:"created_at,omitempty"` | ||||
| 	UpdatedAt *Timestamp `json:"updated_at,omitempty"` | ||||
| 	URL       *string    `json:"url,omitempty"` | ||||
| 	HTMLURL   *string    `json:"html_url,omitempty"` | ||||
| 	BadgeURL  *string    `json:"badge_url,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // Workflows represents a slice of repository action workflows.
 | ||||
| type Workflows struct { | ||||
| 	TotalCount *int        `json:"total_count,omitempty"` | ||||
| 	Workflows  []*Workflow `json:"workflows,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // WorkflowUsage represents a usage of a specific workflow.
 | ||||
| type WorkflowUsage struct { | ||||
| 	Billable *WorkflowEnvironment `json:"billable,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // WorkflowEnvironment represents different runner environments available for a workflow.
 | ||||
| type WorkflowEnvironment struct { | ||||
| 	Ubuntu  *WorkflowBill `json:"UBUNTU,omitempty"` | ||||
| 	MacOS   *WorkflowBill `json:"MACOS,omitempty"` | ||||
| 	Windows *WorkflowBill `json:"WINDOWS,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // WorkflowBill specifies billable time for a specific environment in a workflow.
 | ||||
| type WorkflowBill struct { | ||||
| 	TotalMS *int64 `json:"total_ms,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ListWorkflows lists all workflows in a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflows/#list-repository-workflows
 | ||||
| func (s *ActionsService) ListWorkflows(ctx context.Context, owner, repo string, opts *ListOptions) (*Workflows, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/actions/workflows", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	workflows := new(Workflows) | ||||
| 	resp, err := s.client.Do(ctx, req, &workflows) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return workflows, resp, nil | ||||
| } | ||||
| 
 | ||||
| // GetWorkflowByID gets a specific workflow by ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflows/#get-a-workflow
 | ||||
| func (s *ActionsService) GetWorkflowByID(ctx context.Context, owner, repo string, workflowID int64) (*Workflow, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v", owner, repo, workflowID) | ||||
| 
 | ||||
| 	return s.getWorkflow(ctx, u) | ||||
| } | ||||
| 
 | ||||
| // GetWorkflowByFileName gets a specific workflow by file name.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflows/#get-a-workflow
 | ||||
| func (s *ActionsService) GetWorkflowByFileName(ctx context.Context, owner, repo, workflowFileName string) (*Workflow, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v", owner, repo, workflowFileName) | ||||
| 
 | ||||
| 	return s.getWorkflow(ctx, u) | ||||
| } | ||||
| 
 | ||||
| func (s *ActionsService) getWorkflow(ctx context.Context, url string) (*Workflow, *Response, error) { | ||||
| 	req, err := s.client.NewRequest("GET", url, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	workflow := new(Workflow) | ||||
| 	resp, err := s.client.Do(ctx, req, workflow) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return workflow, resp, nil | ||||
| } | ||||
| 
 | ||||
| // GetWorkflowUsageByID gets a specific workflow usage by ID in the unit of billable milliseconds.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflows/#get-workflow-usage
 | ||||
| func (s *ActionsService) GetWorkflowUsageByID(ctx context.Context, owner, repo string, workflowID int64) (*WorkflowUsage, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v/timing", owner, repo, workflowID) | ||||
| 
 | ||||
| 	return s.getWorkflowUsage(ctx, u) | ||||
| } | ||||
| 
 | ||||
| // GetWorkflowUsageByFileName gets a specific workflow usage by file name in the unit of billable milliseconds.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflows/#get-workflow-usage
 | ||||
| func (s *ActionsService) GetWorkflowUsageByFileName(ctx context.Context, owner, repo, workflowFileName string) (*WorkflowUsage, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v/timing", owner, repo, workflowFileName) | ||||
| 
 | ||||
| 	return s.getWorkflowUsage(ctx, u) | ||||
| } | ||||
| 
 | ||||
| func (s *ActionsService) getWorkflowUsage(ctx context.Context, url string) (*WorkflowUsage, *Response, error) { | ||||
| 	req, err := s.client.NewRequest("GET", url, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	workflowUsage := new(WorkflowUsage) | ||||
| 	resp, err := s.client.Do(ctx, req, workflowUsage) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return workflowUsage, resp, nil | ||||
| } | ||||
|  | @ -13,6 +13,7 @@ | |||
| 413x <dedifferentiator@gmail.com> | ||||
| Abhinav Gupta <mail@abhinavg.net> | ||||
| adrienzieba <adrien.zieba@appdirect.com> | ||||
| afdesk <work@afdesk.com> | ||||
| Ahmed Hagy <a.akram93@gmail.com> | ||||
| Aidan Steele <aidan.steele@glassechidna.com.au> | ||||
| Ainsley Chong <ainsley.chong@gmail.com> | ||||
|  | @ -23,7 +24,9 @@ Alec Thomas <alec@swapoff.org> | |||
| Aleks Clark <aleks.clark@gmail.com> | ||||
| Alex Bramley <a.bramley@gmail.com> | ||||
| Alex Orr <Alexorr.CSE@gmail.com> | ||||
| Alex Unger <zyxancf@gmail.com> | ||||
| Alexander Harkness <me@bearbin.net> | ||||
| Ali Farooq <ali.farooq0@pm.me> | ||||
| Allen Sun <shlallen1990@gmail.com> | ||||
| Amey Sakhadeo <me@ameyms.com> | ||||
| Anders Janmyr <anders@janmyr.com> | ||||
|  | @ -37,22 +40,28 @@ anjanashenoy <anjanashenoy1@gmail.com> | |||
| Anshuman Bhartiya <anshuman.bhartiya@gmail.com> | ||||
| Antoine <antoine.tu@mail.mcgill.ca> | ||||
| Antoine Pelisse <apelisse@gmail.com> | ||||
| Anton Nguyen <afnguyen85@gmail.com> | ||||
| Anubha Kushwaha <anubha_bt2k14@dtu.ac.in> | ||||
| appilon <apilon@hashicorp.com> | ||||
| aprp <doelaudi@gmail.com> | ||||
| Aravind <aravindkp@outlook.in> | ||||
| Arda Kuyumcu <kuyumcuarda@gmail.com> | ||||
| Arıl Bozoluk <arilbozoluk@hotmail.com> | ||||
| Asier Marruedo <asiermarruedo@gmail.com> | ||||
| Austin Burdine <acburdine@gmail.com> | ||||
| Austin Dizzy <dizzy@wow.com> | ||||
| Ben Batha <bhbatha@gmail.com> | ||||
| Benjamen Keroack <benjamen@dollarshaveclub.com> | ||||
| Beshr Kayali <beshrkayali@gmail.com> | ||||
| Beyang Liu <beyang.liu@gmail.com> | ||||
| Billy Keyes <bluekeyes@gmail.com> | ||||
| Billy Lynch <wlynch92@gmail.com> | ||||
| Björn Häuser <b.haeuser@rebuy.de> | ||||
| boljen <bol.christophe@gmail.com> | ||||
| Brad Harris <bmharris@gmail.com> | ||||
| Brad Moylan <moylan.brad@gmail.com> | ||||
| Bradley Falzon <brad@teambrad.net> | ||||
| Bradley McAllister <brad.mcallister@hotmail.com> | ||||
| Brandon Cook <phylake@gmail.com> | ||||
| Brian Egizi <brian@mojotech.com> | ||||
| Bryan Boreham <bryan@weave.works> | ||||
|  | @ -74,6 +83,7 @@ Colin Misare <github.com/cmisare> | |||
| Craig Peterson <cpeterson@stackoverflow.com> | ||||
| Cristian Maglie <c.maglie@bug.st> | ||||
| Daehyeok Mun <daehyeok@gmail.com> | ||||
| Daniel Lanner <lanner.dan@gmail.com> | ||||
| Daniel Leavitt <daniel.leavitt@gmail.com> | ||||
| Daniel Nilsson <daniel.nilsson1989@gmail.com> | ||||
| Daoq <masseto2002@gmail.com> | ||||
|  | @ -81,6 +91,7 @@ Dave Du Cros <davidducros@gmail.com> | |||
| Dave Henderson <dhenderson@gmail.com> | ||||
| Dave Protasowski <dprotaso@gmail.com> | ||||
| David Deng <daviddengcn@gmail.com> | ||||
| David J. M. Karlsen <david@davidkarlsen.com> | ||||
| David Jannotta <djannotta@gmail.com> | ||||
| David Ji <github.com/davidji99> | ||||
| David Lopez Reyes <davidlopezre@gmail.com> | ||||
|  | @ -93,12 +104,14 @@ dmnlk <seikima2demon@gmail.com> | |||
| Don Petersen <don@donpetersen.net> | ||||
| Doug Turner <doug.turner@gmail.com> | ||||
| Drew Fradette <drew.fradette@gmail.com> | ||||
| Dustin Deus <deusdustin@gmail.com> | ||||
| Eivind <eivindkn@gmail.com> | ||||
| Eli Uriegas <seemethere101@gmail.com> | ||||
| Elliott Beach <elliott2.71828@gmail.com> | ||||
| Emerson Wood <emersonwood94@gmail.com> | ||||
| eperm <staffordworrell@gmail.com> | ||||
| Erick Fejta <erick@fejta.com> | ||||
| Erik Nobel <hendrik.nobel@transferwise.com> | ||||
| erwinvaneyk <erwinvaneyk@gmail.com> | ||||
| Evan Elias <evanjelias@gmail.com> | ||||
| Fabrice <fabrice.vaillant@student.ecp.fr> | ||||
|  | @ -129,13 +142,18 @@ huydx <doxuanhuy@gmail.com> | |||
| i2bskn <i2bskn@gmail.com> | ||||
| Ioannis Georgoulas <igeorgoulas21@gmail.com> | ||||
| Isao Jonas <isao.jonas@gmail.com> | ||||
| ishan upadhyay <ishanupadhyay412@gmail.com> | ||||
| isqua <isqua@isqua.ru> | ||||
| Jacob Valdemar <jan@lunar.app> | ||||
| Jake Krammer <jake.krammer1@gmail.com> | ||||
| Jameel Haffejee <RC1140@republiccommandos.co.za> | ||||
| James Cockbain <james.cockbain@ibm.com> | ||||
| Jan Kosecki <jan.kosecki91@gmail.com> | ||||
| Javier Campanini <jcampanini@palantir.com> | ||||
| Jef LeCompte <jeffreylec@gmail.com> | ||||
| Jens Rantil <jens.rantil@gmail.com> | ||||
| Jeremy Morris <jeremylevanmorris@gmail.com> | ||||
| Jesse Haka <haka.jesse@gmail.com> | ||||
| Jesse Newland <jesse@jnewland.com> | ||||
| Jihoon Chung <j.c@navercorp.com> | ||||
| Jimmi Dyson <jimmidyson@gmail.com> | ||||
|  | @ -143,11 +161,13 @@ Joan Saum <joan.saum@epitech.eu> | |||
| Joe Tsai <joetsai@digital-static.net> | ||||
| John Barton <jrbarton@gmail.com> | ||||
| John Engelman <john.r.engelman@gmail.com> | ||||
| John Liu <john.liu@mongodb.com> | ||||
| Jordan Brockopp <jdbro94@gmail.com> | ||||
| Jordan Sussman <jordansail22@gmail.com> | ||||
| Joshua Bezaleel Abednego <joshua.bezaleel@gmail.com> | ||||
| JP Phillips <jonphill9@gmail.com> | ||||
| jpbelanger-mtl <jp.belanger@gmail.com> | ||||
| Juan <juan.rios.28@gmail.com> | ||||
| Juan Basso <jrbasso@gmail.com> | ||||
| Julien Garcia Gonzalez <garciagonzalez.julien@gmail.com> | ||||
| Julien Rostand <jrostand@users.noreply.github.com> | ||||
|  | @ -164,6 +184,7 @@ Konrad Malawski <konrad.malawski@project13.pl> | |||
| Kookheon Kwon <kucuny@gmail.com> | ||||
| Krzysztof Kowalczyk <kkowalczyk@gmail.com> | ||||
| Kshitij Saraogi <KshitijSaraogi@gmail.com> | ||||
| Kumar Saurabh <itsksaurabh@gmail.com> | ||||
| kyokomi <kyoko1220adword@gmail.com> | ||||
| Laurent Verdoïa <verdoialaurent@gmail.com> | ||||
| Liam Galvin <liam@liam-galvin.co.uk> | ||||
|  | @ -175,7 +196,9 @@ Luke Roberts <email@luke-roberts.co.uk> | |||
| Luke Young <luke@hydrantlabs.org> | ||||
| lynn [they] <lynncyrin@gmail.com> | ||||
| Maksim Zhylinski <uzzable@gmail.com> | ||||
| Marcelo Carlos <marcelo@permutive.com> | ||||
| Mark Tareshawty <tarebyte@github.com> | ||||
| Martin Holman <me@martinholman.co.nz> | ||||
| Martin-Louis Bright <mlbright@gmail.com> | ||||
| Martins Sipenko <martins.sipenko@gmail.com> | ||||
| Marwan Sulaiman <marwan.sameer@gmail.com> | ||||
|  | @ -185,22 +208,28 @@ Matt <alpmatthew@gmail.com> | |||
| Matt Brender <mjbrender@gmail.com> | ||||
| Matt Gaunt <matt@gauntface.co.uk> | ||||
| Matt Landis <landis.matt@gmail.com> | ||||
| Matt Moore <mattmoor@vmware.com> | ||||
| Maxime Bury <maxime.bury@gmail.com> | ||||
| Michael Spiegel <michael.m.spiegel@gmail.com> | ||||
| Michael Tiller <michael.tiller@gmail.com> | ||||
| Michał Glapa <michal.glapa@gmail.com> | ||||
| Michelangelo Morrillo <michelangelo@morrillo.it> | ||||
| Mukundan Senthil <mukundan314@gmail.com> | ||||
| Nadav Kaner <nadavkaner1@gmail.com> | ||||
| Nathan VanBenschoten <nvanbenschoten@gmail.com> | ||||
| Navaneeth Suresh <navaneeths1998@gmail.com> | ||||
| Neil O'Toole <neilotoole@apache.org> | ||||
| Nick Miyake <nmiyake@palantir.com> | ||||
| Nick Platt <hello@nickplatt.co.uk> | ||||
| Nick Spragg <nick.spragg@bbc.co.uk> | ||||
| Nikhita Raghunath <nikitaraghunath@gmail.com> | ||||
| Nilesh Singh <nilesh.singh24@outlook.com> | ||||
| Noah Zoschke <noah+sso2@convox.com> | ||||
| ns-cweber <cweber@narrativescience.com> | ||||
| Ole Orhagen <ole.orhagen@northern.tech> | ||||
| Oleg Kovalov <iamolegkovalov@gmail.com> | ||||
| Ondřej Kupka <ondra.cap@gmail.com> | ||||
| Pablo Pérez Schröder <pablo.perezschroder@wetransfer.com> | ||||
| Palash Nigam <npalash25@gmail.com> | ||||
| Panagiotis Moustafellos <pmoust@gmail.com> | ||||
| Parham Alvani <parham.alvani@gmail.com> | ||||
|  | @ -213,6 +242,7 @@ Pete Wagner <thepwagner@github.com> | |||
| Petr Shevtsov <petr.shevtsov@gmail.com> | ||||
| Pierre Carrier <pierre@meteor.com> | ||||
| Piotr Zurek <p.zurek@gmail.com> | ||||
| Piyush Chugh <piyushchugh1993@gmail.com> | ||||
| Pratik Mallya <pratik.mallya@gmail.com> | ||||
| Qais Patankar <qaisjp@gmail.com> | ||||
| Quang Le Hong <iamquang95@gmail.com> | ||||
|  | @ -228,12 +258,15 @@ Ravi Shekhar Jethani <rsjethani@gmail.com> | |||
| RaviTeja Pothana <ravi-teja@live.com> | ||||
| rc1140 <jameel@republiccommandos.co.za> | ||||
| Red Hat, Inc. | ||||
| Reetuparna Mukherjee <reetuparna.1988@gmail.com> | ||||
| Reinier Timmer <reinier.timmer@ah.nl> | ||||
| Renjith R <renjithr201097@gmail.com> | ||||
| Ricco Førgaard <ricco@fiskeben.dk> | ||||
| Rob Figueiredo <robfig@yext.com> | ||||
| Rohit Upadhyay <urohit011@gmail.com> | ||||
| Ronak Jain <ronakjain@outlook.in> | ||||
| Ruben Vereecken <rubenvereecken@gmail.com> | ||||
| Russell Boley <raboley@gmail.com> | ||||
| Ryan Leung <rleungx@gmail.com> | ||||
| Ryan Lower <rpjlower@gmail.com> | ||||
| Ryo Nakao <nakabonne@gmail.com> | ||||
|  | @ -251,6 +284,7 @@ Sebastian Mandrean <sebastian.mandrean@gmail.com> | |||
| Sebastian Mæland Pedersen <sem.pedersen@stud.uis.no> | ||||
| Sergey Romanov <xxsmotur@gmail.com> | ||||
| Sergio Garcia <sergio.garcia@gmail.com> | ||||
| Seth Vargo <seth@sethvargo.com> | ||||
| Sevki <s@sevki.org> | ||||
| Shagun Khemka <shagun.khemka60@gmail.com> | ||||
| shakeelrao <shakeelrao79@gmail.com> | ||||
|  | @ -258,17 +292,23 @@ Shawn Catanzarite <me@shawncatz.com> | |||
| Shawn Smith <shawnpsmith@gmail.com> | ||||
| Shibasis Patel <patelshibasis@gmail.com> | ||||
| Shrikrishna Singh <krishnasingh.ss30@gmail.com> | ||||
| Simon Davis <sdavis@hashicorp.com> | ||||
| sona-tar <sona.zip@gmail.com> | ||||
| SoundCloud, Ltd. | ||||
| Sridhar Mocherla <srmocher@microsoft.com> | ||||
| SriVignessh Pss <sriknowledge@gmail.com> | ||||
| Stefan Sedich <stefan.sedich@gmail.com> | ||||
| Steve Teuber <github@steveteuber.com> | ||||
| Stian Eikeland <stian@eikeland.se> | ||||
| Suhaib Mujahid <suhaibmujahid@gmail.com> | ||||
| Szymon Kodrebski <simonkey007@gmail.com> | ||||
| Søren Hansen <soren@dinero.dk> | ||||
| Takayuki Watanabe <takanabe.w@gmail.com> | ||||
| Taketoshi Fujiwara <fujiwara@leapmind.io> | ||||
| Taketoshi Fujiwara <taketoshi.fujiwara@gmail.com> | ||||
| Tasya Aditya Rukmana <tadityar@gmail.com> | ||||
| Theo Henson <theodorehenson@protonmail.com> | ||||
| Thomas Aidan Curran <thomas@ory.sh> | ||||
| Thomas Bruyelle <thomas.bruyelle@gmail.com> | ||||
| Timothée Peignier <timothee.peignier@tryphon.org> | ||||
| tkhandel <tarunkhandelwal.iitr@gmail.com> | ||||
|  | @ -8,5 +8,5 @@ package github | |||
| // ActionsService handles communication with the actions related
 | ||||
| // methods of the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/
 | ||||
| type ActionsService service | ||||
|  | @ -16,7 +16,7 @@ import ( | |||
| // data between jobs in a workflow and provide storage for data
 | ||||
| // once a workflow is complete.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/artifacts/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/artifacts/
 | ||||
| type Artifact struct { | ||||
| 	ID                 *int64     `json:"id,omitempty"` | ||||
| 	NodeID             *string    `json:"node_id,omitempty"` | ||||
|  | @ -30,7 +30,7 @@ type Artifact struct { | |||
| 
 | ||||
| // ArtifactList represents a list of GitHub artifacts.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/artifacts/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/artifacts/
 | ||||
| type ArtifactList struct { | ||||
| 	TotalCount *int64      `json:"total_count,omitempty"` | ||||
| 	Artifacts  []*Artifact `json:"artifacts,omitempty"` | ||||
|  | @ -38,7 +38,7 @@ type ArtifactList struct { | |||
| 
 | ||||
| // ListArtifacts lists all artifacts that belong to a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/artifacts/#list-artifacts-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-artifacts-for-a-repository
 | ||||
| func (s *ActionsService) ListArtifacts(ctx context.Context, owner, repo string, opts *ListOptions) (*ArtifactList, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/artifacts", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -62,7 +62,7 @@ func (s *ActionsService) ListArtifacts(ctx context.Context, owner, repo string, | |||
| 
 | ||||
| // ListWorkflowRunArtifacts lists all artifacts that belong to a workflow run.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/artifacts/#list-workflow-run-artifacts
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-workflow-run-artifacts
 | ||||
| func (s *ActionsService) ListWorkflowRunArtifacts(ctx context.Context, owner, repo string, runID int64, opts *ListOptions) (*ArtifactList, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/artifacts", owner, repo, runID) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -86,7 +86,7 @@ func (s *ActionsService) ListWorkflowRunArtifacts(ctx context.Context, owner, re | |||
| 
 | ||||
| // GetArtifact gets a specific artifact for a workflow run.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/artifacts/#get-an-artifact
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-an-artifact
 | ||||
| func (s *ActionsService) GetArtifact(ctx context.Context, owner, repo string, artifactID int64) (*Artifact, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/artifacts/%v", owner, repo, artifactID) | ||||
| 
 | ||||
|  | @ -106,7 +106,7 @@ func (s *ActionsService) GetArtifact(ctx context.Context, owner, repo string, ar | |||
| 
 | ||||
| // DownloadArtifact gets a redirect URL to download an archive for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/artifacts/#download-an-artifact
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/artifacts/#download-an-artifact
 | ||||
| func (s *ActionsService) DownloadArtifact(ctx context.Context, owner, repo string, artifactID int64, followRedirects bool) (*url.URL, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/artifacts/%v/zip", owner, repo, artifactID) | ||||
| 
 | ||||
|  | @ -151,7 +151,7 @@ func (s *ActionsService) getDownloadArtifactFromURL(ctx context.Context, u strin | |||
| 
 | ||||
| // DeleteArtifact deletes a workflow run artifact.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/artifacts/#delete-an-artifact
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#delete-an-artifact
 | ||||
| func (s *ActionsService) DeleteArtifact(ctx context.Context, owner, repo string, artifactID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/artifacts/%v", owner, repo, artifactID) | ||||
| 
 | ||||
							
								
								
									
										286
									
								
								vendor/github.com/google/go-github/v37/github/actions_runner_groups.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							
							
						
						
									
										286
									
								
								vendor/github.com/google/go-github/v37/github/actions_runner_groups.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							|  | @ -0,0 +1,286 @@ | |||
| // Copyright 2021 The go-github AUTHORS. All rights reserved.
 | ||||
| //
 | ||||
| // Use of this source code is governed by a BSD-style
 | ||||
| // license that can be found in the LICENSE file.
 | ||||
| 
 | ||||
| package github | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| // RunnerGroup represents a self-hosted runner group configured in an organization.
 | ||||
| type RunnerGroup struct { | ||||
| 	ID                       *int64  `json:"id,omitempty"` | ||||
| 	Name                     *string `json:"name,omitempty"` | ||||
| 	Visibility               *string `json:"visibility,omitempty"` | ||||
| 	Default                  *bool   `json:"default,omitempty"` | ||||
| 	SelectedRepositoriesURL  *string `json:"selected_repositories_url,omitempty"` | ||||
| 	RunnersURL               *string `json:"runners_url,omitempty"` | ||||
| 	Inherited                *bool   `json:"inherited,omitempty"` | ||||
| 	AllowsPublicRepositories *bool   `json:"allows_public_repositories,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // RunnerGroups represents a collection of self-hosted runner groups configured for an organization.
 | ||||
| type RunnerGroups struct { | ||||
| 	TotalCount   int            `json:"total_count"` | ||||
| 	RunnerGroups []*RunnerGroup `json:"runner_groups"` | ||||
| } | ||||
| 
 | ||||
| // CreateRunnerGroupRequest represents a request to create a Runner group for an organization.
 | ||||
| type CreateRunnerGroupRequest struct { | ||||
| 	Name       *string `json:"name,omitempty"` | ||||
| 	Visibility *string `json:"visibility,omitempty"` | ||||
| 	// List of repository IDs that can access the runner group.
 | ||||
| 	SelectedRepositoryIDs []int64 `json:"selected_repository_ids,omitempty"` | ||||
| 	// Runners represent a list of runner IDs to add to the runner group.
 | ||||
| 	Runners []int64 `json:"runners,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // UpdateRunnerGroupRequest represents a request to update a Runner group for an organization.
 | ||||
| type UpdateRunnerGroupRequest struct { | ||||
| 	Name       *string `json:"name,omitempty"` | ||||
| 	Visibility *string `json:"visibility,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // SetRepoAccessRunnerGroupRequest represents a request to replace the list of repositories
 | ||||
| // that can access a self-hosted runner group configured in an organization.
 | ||||
| type SetRepoAccessRunnerGroupRequest struct { | ||||
| 	// Updated list of repository IDs that should be given access to the runner group.
 | ||||
| 	SelectedRepositoryIDs []int64 `json:"selected_repository_ids"` | ||||
| } | ||||
| 
 | ||||
| // SetRunnerGroupRunnersRequest represents a request to replace the list of
 | ||||
| // self-hosted runners that are part of an organization runner group.
 | ||||
| type SetRunnerGroupRunnersRequest struct { | ||||
| 	// Updated list of runner IDs that should be given access to the runner group.
 | ||||
| 	Runners []int64 `json:"runners"` | ||||
| } | ||||
| 
 | ||||
| // ListOrganizationRunnerGroups lists all self-hosted runner groups configured in an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#list-self-hosted-runner-groups-for-an-organization
 | ||||
| func (s *ActionsService) ListOrganizationRunnerGroups(ctx context.Context, org string, opts *ListOptions) (*RunnerGroups, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runner-groups", org) | ||||
| 	u, err := addOptions(u, opts) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	groups := &RunnerGroups{} | ||||
| 	resp, err := s.client.Do(ctx, req, &groups) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return groups, resp, nil | ||||
| } | ||||
| 
 | ||||
| // GetOrganizationRunnerGroup gets a specific self-hosted runner group for an organization using its RunnerGroup ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#get-a-self-hosted-runner-group-for-an-organization
 | ||||
| func (s *ActionsService) GetOrganizationRunnerGroup(ctx context.Context, org string, groupID int64) (*RunnerGroup, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v", org, groupID) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	runnerGroup := new(RunnerGroup) | ||||
| 	resp, err := s.client.Do(ctx, req, runnerGroup) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return runnerGroup, resp, nil | ||||
| } | ||||
| 
 | ||||
| // DeleteOrganizationRunnerGroup deletes a self-hosted runner group from an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#delete-a-self-hosted-runner-group-from-an-organization
 | ||||
| func (s *ActionsService) DeleteOrganizationRunnerGroup(ctx context.Context, org string, groupID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v", org, groupID) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // CreateOrganizationRunnerGroup creates a new self-hosted runner group for an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#create-a-self-hosted-runner-group-for-an-organization
 | ||||
| func (s *ActionsService) CreateOrganizationRunnerGroup(ctx context.Context, org string, createReq CreateRunnerGroupRequest) (*RunnerGroup, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runner-groups", org) | ||||
| 	req, err := s.client.NewRequest("POST", u, createReq) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	runnerGroup := new(RunnerGroup) | ||||
| 	resp, err := s.client.Do(ctx, req, runnerGroup) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return runnerGroup, resp, nil | ||||
| } | ||||
| 
 | ||||
| // UpdateOrganizationRunnerGroup updates a self-hosted runner group for an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#update-a-self-hosted-runner-group-for-an-organization
 | ||||
| func (s *ActionsService) UpdateOrganizationRunnerGroup(ctx context.Context, org string, groupID int64, updateReq UpdateRunnerGroupRequest) (*RunnerGroup, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v", org, groupID) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, updateReq) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	runnerGroup := new(RunnerGroup) | ||||
| 	resp, err := s.client.Do(ctx, req, runnerGroup) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return runnerGroup, resp, nil | ||||
| } | ||||
| 
 | ||||
| // ListRepositoryAccessRunnerGroup lists the repositories with access to a self-hosted runner group configured in an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#list-repository-access-to-a-self-hosted-runner-group-in-an-organization
 | ||||
| func (s *ActionsService) ListRepositoryAccessRunnerGroup(ctx context.Context, org string, groupID int64) (*ListRepositories, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/repositories", org, groupID) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	repos := &ListRepositories{} | ||||
| 	resp, err := s.client.Do(ctx, req, &repos) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return repos, resp, nil | ||||
| } | ||||
| 
 | ||||
| // SetRepositoryAccessRunnerGroup replaces the list of repositories that have access to a self-hosted runner group configured in an organization
 | ||||
| // with a new List of repositories.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#set-repository-access-for-a-self-hosted-runner-group-in-an-organization
 | ||||
| func (s *ActionsService) SetRepositoryAccessRunnerGroup(ctx context.Context, org string, groupID int64, ids SetRepoAccessRunnerGroupRequest) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/repositories", org, groupID) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("PUT", u, ids) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // AddRepositoryAccessRunnerGroup adds a repository to the list of selected repositories that can access a self-hosted runner group.
 | ||||
| // The runner group must have visibility set to 'selected'.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#add-repository-access-to-a-self-hosted-runner-group-in-an-organization
 | ||||
| func (s *ActionsService) AddRepositoryAccessRunnerGroup(ctx context.Context, org string, groupID, repoID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/repositories/%v", org, groupID, repoID) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("PUT", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // RemoveRepositoryAccessRunnerGroup removes a repository from the list of selected repositories that can access a self-hosted runner group.
 | ||||
| // The runner group must have visibility set to 'selected'.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#remove-repository-access-to-a-self-hosted-runner-group-in-an-organization
 | ||||
| func (s *ActionsService) RemoveRepositoryAccessRunnerGroup(ctx context.Context, org string, groupID, repoID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/repositories/%v", org, groupID, repoID) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // ListRunnerGroupRunners lists self-hosted runners that are in a specific organization group.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#list-self-hosted-runners-in-a-group-for-an-organization
 | ||||
| func (s *ActionsService) ListRunnerGroupRunners(ctx context.Context, org string, groupID int64, opts *ListOptions) (*Runners, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/runners", org, groupID) | ||||
| 	u, err := addOptions(u, opts) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	runners := &Runners{} | ||||
| 	resp, err := s.client.Do(ctx, req, &runners) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return runners, resp, nil | ||||
| } | ||||
| 
 | ||||
| // SetRunnerGroupRunners replaces the list of self-hosted runners that are part of an organization runner group
 | ||||
| // with a new list of runners.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#set-self-hosted-runners-in-a-group-for-an-organization
 | ||||
| func (s *ActionsService) SetRunnerGroupRunners(ctx context.Context, org string, groupID int64, ids SetRunnerGroupRunnersRequest) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/runners", org, groupID) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("PUT", u, ids) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // AddRunnerGroupRunners adds a self-hosted runner to a runner group configured in an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#add-a-self-hosted-runner-to-a-group-for-an-organization
 | ||||
| func (s *ActionsService) AddRunnerGroupRunners(ctx context.Context, org string, groupID, runnerID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/runners/%v", org, groupID, runnerID) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("PUT", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // RemoveRunnerGroupRunners removes a self-hosted runner from a group configured in an organization.
 | ||||
| // The runner is then returned to the default group.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#remove-a-self-hosted-runner-from-a-group-for-an-organization
 | ||||
| func (s *ActionsService) RemoveRunnerGroupRunners(ctx context.Context, org string, groupID, runnerID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runner-groups/%v/runners/%v", org, groupID, runnerID) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
|  | @ -12,15 +12,23 @@ import ( | |||
| 
 | ||||
| // RunnerApplicationDownload represents a binary for the self-hosted runner application that can be downloaded.
 | ||||
| type RunnerApplicationDownload struct { | ||||
| 	OS           *string `json:"os,omitempty"` | ||||
| 	Architecture *string `json:"architecture,omitempty"` | ||||
| 	DownloadURL  *string `json:"download_url,omitempty"` | ||||
| 	Filename     *string `json:"filename,omitempty"` | ||||
| 	OS                *string `json:"os,omitempty"` | ||||
| 	Architecture      *string `json:"architecture,omitempty"` | ||||
| 	DownloadURL       *string `json:"download_url,omitempty"` | ||||
| 	Filename          *string `json:"filename,omitempty"` | ||||
| 	TempDownloadToken *string `json:"temp_download_token,omitempty"` | ||||
| 	SHA256Checksum    *string `json:"sha256_checksum,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ActionsEnabledOnOrgRepos represents all the repositories in an organization for which Actions is enabled.
 | ||||
| type ActionsEnabledOnOrgRepos struct { | ||||
| 	TotalCount   int           `json:"total_count"` | ||||
| 	Repositories []*Repository `json:"repositories"` | ||||
| } | ||||
| 
 | ||||
| // ListRunnerApplicationDownloads lists self-hosted runner application binaries that can be downloaded and run.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/self-hosted-runners/#list-runner-applications-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-runner-applications-for-a-repository
 | ||||
| func (s *ActionsService) ListRunnerApplicationDownloads(ctx context.Context, owner, repo string) ([]*RunnerApplicationDownload, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/runners/downloads", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -45,7 +53,7 @@ type RegistrationToken struct { | |||
| 
 | ||||
| // CreateRegistrationToken creates a token that can be used to add a self-hosted runner.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/self-hosted-runners/#create-a-registration-token-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#create-a-registration-token-for-a-repository
 | ||||
| func (s *ActionsService) CreateRegistrationToken(ctx context.Context, owner, repo string) (*RegistrationToken, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/runners/registration-token", owner, repo) | ||||
| 
 | ||||
|  | @ -65,10 +73,19 @@ func (s *ActionsService) CreateRegistrationToken(ctx context.Context, owner, rep | |||
| 
 | ||||
| // Runner represents a self-hosted runner registered with a repository.
 | ||||
| type Runner struct { | ||||
| 	ID     *int64  `json:"id,omitempty"` | ||||
| 	Name   *string `json:"name,omitempty"` | ||||
| 	OS     *string `json:"os,omitempty"` | ||||
| 	Status *string `json:"status,omitempty"` | ||||
| 	ID     *int64          `json:"id,omitempty"` | ||||
| 	Name   *string         `json:"name,omitempty"` | ||||
| 	OS     *string         `json:"os,omitempty"` | ||||
| 	Status *string         `json:"status,omitempty"` | ||||
| 	Busy   *bool           `json:"busy,omitempty"` | ||||
| 	Labels []*RunnerLabels `json:"labels,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // RunnerLabels represents a collection of labels attached to each runner.
 | ||||
| type RunnerLabels struct { | ||||
| 	ID   *int64  `json:"id,omitempty"` | ||||
| 	Name *string `json:"name,omitempty"` | ||||
| 	Type *string `json:"type,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // Runners represents a collection of self-hosted runners for a repository.
 | ||||
|  | @ -79,7 +96,7 @@ type Runners struct { | |||
| 
 | ||||
| // ListRunners lists all the self-hosted runners for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/self-hosted-runners/#list-self-hosted-runners-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-self-hosted-runners-for-a-repository
 | ||||
| func (s *ActionsService) ListRunners(ctx context.Context, owner, repo string, opts *ListOptions) (*Runners, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/runners", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -103,7 +120,7 @@ func (s *ActionsService) ListRunners(ctx context.Context, owner, repo string, op | |||
| 
 | ||||
| // GetRunner gets a specific self-hosted runner for a repository using its runner ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/self-hosted-runners/#get-a-self-hosted-runner-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-a-self-hosted-runner-for-a-repository
 | ||||
| func (s *ActionsService) GetRunner(ctx context.Context, owner, repo string, runnerID int64) (*Runner, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/runners/%v", owner, repo, runnerID) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -128,7 +145,7 @@ type RemoveToken struct { | |||
| 
 | ||||
| // CreateRemoveToken creates a token that can be used to remove a self-hosted runner from a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/self-hosted-runners/#create-a-remove-token-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#create-a-remove-token-for-a-repository
 | ||||
| func (s *ActionsService) CreateRemoveToken(ctx context.Context, owner, repo string) (*RemoveToken, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/runners/remove-token", owner, repo) | ||||
| 
 | ||||
|  | @ -148,7 +165,7 @@ func (s *ActionsService) CreateRemoveToken(ctx context.Context, owner, repo stri | |||
| 
 | ||||
| // RemoveRunner forces the removal of a self-hosted runner in a repository using the runner id.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/self-hosted-runners/#delete-a-self-hosted-runner-from-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#delete-a-self-hosted-runner-from-a-repository
 | ||||
| func (s *ActionsService) RemoveRunner(ctx context.Context, owner, repo string, runnerID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/runners/%v", owner, repo, runnerID) | ||||
| 
 | ||||
|  | @ -162,7 +179,7 @@ func (s *ActionsService) RemoveRunner(ctx context.Context, owner, repo string, r | |||
| 
 | ||||
| // ListOrganizationRunnerApplicationDownloads lists self-hosted runner application binaries that can be downloaded and run.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/self-hosted-runners/#list-runner-applications-for-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-runner-applications-for-an-organization
 | ||||
| func (s *ActionsService) ListOrganizationRunnerApplicationDownloads(ctx context.Context, owner string) ([]*RunnerApplicationDownload, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runners/downloads", owner) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -181,7 +198,7 @@ func (s *ActionsService) ListOrganizationRunnerApplicationDownloads(ctx context. | |||
| 
 | ||||
| // CreateOrganizationRegistrationToken creates a token that can be used to add a self-hosted runner to an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/self-hosted-runners/#create-a-registration-token-for-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#create-a-registration-token-for-an-organization
 | ||||
| func (s *ActionsService) CreateOrganizationRegistrationToken(ctx context.Context, owner string) (*RegistrationToken, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runners/registration-token", owner) | ||||
| 
 | ||||
|  | @ -201,7 +218,7 @@ func (s *ActionsService) CreateOrganizationRegistrationToken(ctx context.Context | |||
| 
 | ||||
| // ListOrganizationRunners lists all the self-hosted runners for an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/self-hosted-runners/#list-self-hosted-runners-for-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-self-hosted-runners-for-an-organization
 | ||||
| func (s *ActionsService) ListOrganizationRunners(ctx context.Context, owner string, opts *ListOptions) (*Runners, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runners", owner) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -223,9 +240,33 @@ func (s *ActionsService) ListOrganizationRunners(ctx context.Context, owner stri | |||
| 	return runners, resp, nil | ||||
| } | ||||
| 
 | ||||
| // ListEnabledReposInOrg lists the selected repositories that are enabled for GitHub Actions in an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-selected-repositories-enabled-for-github-actions-in-an-organization
 | ||||
| func (s *ActionsService) ListEnabledReposInOrg(ctx context.Context, owner string, opts *ListOptions) (*ActionsEnabledOnOrgRepos, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/permissions/repositories", owner) | ||||
| 	u, err := addOptions(u, opts) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	repos := &ActionsEnabledOnOrgRepos{} | ||||
| 	resp, err := s.client.Do(ctx, req, repos) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return repos, resp, nil | ||||
| } | ||||
| 
 | ||||
| // GetOrganizationRunner gets a specific self-hosted runner for an organization using its runner ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/self-hosted-runners/#get-a-self-hosted-runner-for-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-a-self-hosted-runner-for-an-organization
 | ||||
| func (s *ActionsService) GetOrganizationRunner(ctx context.Context, owner string, runnerID int64) (*Runner, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runners/%v", owner, runnerID) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -244,7 +285,7 @@ func (s *ActionsService) GetOrganizationRunner(ctx context.Context, owner string | |||
| 
 | ||||
| // CreateOrganizationRemoveToken creates a token that can be used to remove a self-hosted runner from an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/self-hosted-runners/#create-a-remove-token-for-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#create-a-remove-token-for-an-organization
 | ||||
| func (s *ActionsService) CreateOrganizationRemoveToken(ctx context.Context, owner string) (*RemoveToken, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runners/remove-token", owner) | ||||
| 
 | ||||
|  | @ -264,7 +305,7 @@ func (s *ActionsService) CreateOrganizationRemoveToken(ctx context.Context, owne | |||
| 
 | ||||
| // RemoveOrganizationRunner forces the removal of a self-hosted runner from an organization using the runner id.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/self-hosted-runners/#delete-a-self-hosted-runner-from-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#delete-a-self-hosted-runner-from-an-organization
 | ||||
| func (s *ActionsService) RemoveOrganizationRunner(ctx context.Context, owner string, runnerID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/runners/%v", owner, runnerID) | ||||
| 
 | ||||
|  | @ -7,7 +7,9 @@ package github | |||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
| 	"strconv" | ||||
| ) | ||||
| 
 | ||||
| // PublicKey represents the public key that should be used to encrypt secrets.
 | ||||
|  | @ -16,9 +18,38 @@ type PublicKey struct { | |||
| 	Key   *string `json:"key"` | ||||
| } | ||||
| 
 | ||||
| // UnmarshalJSON implements the json.Unmarshaler interface.
 | ||||
| // This ensures GitHub Enterprise versions which return a numeric key id
 | ||||
| // do not error out when unmarshaling.
 | ||||
| func (p *PublicKey) UnmarshalJSON(data []byte) error { | ||||
| 	var pk struct { | ||||
| 		KeyID interface{} `json:"key_id,string"` | ||||
| 		Key   *string     `json:"key"` | ||||
| 	} | ||||
| 
 | ||||
| 	if err := json.Unmarshal(data, &pk); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	p.Key = pk.Key | ||||
| 
 | ||||
| 	switch v := pk.KeyID.(type) { | ||||
| 	case nil: | ||||
| 		return nil | ||||
| 	case string: | ||||
| 		p.KeyID = &v | ||||
| 	case float64: | ||||
| 		p.KeyID = String(strconv.FormatFloat(v, 'f', -1, 64)) | ||||
| 	default: | ||||
| 		return fmt.Errorf("unable to unmarshal %T as a string", v) | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // GetRepoPublicKey gets a public key that should be used for secret encryption.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#get-a-repository-public-key
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-a-repository-public-key
 | ||||
| func (s *ActionsService) GetRepoPublicKey(ctx context.Context, owner, repo string) (*PublicKey, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/secrets/public-key", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -37,7 +68,7 @@ func (s *ActionsService) GetRepoPublicKey(ctx context.Context, owner, repo strin | |||
| 
 | ||||
| // GetOrgPublicKey gets a public key that should be used for secret encryption.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#get-an-organization-public-key
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-an-organization-public-key
 | ||||
| func (s *ActionsService) GetOrgPublicKey(ctx context.Context, org string) (*PublicKey, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/secrets/public-key", org) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -54,6 +85,25 @@ func (s *ActionsService) GetOrgPublicKey(ctx context.Context, org string) (*Publ | |||
| 	return pubKey, resp, nil | ||||
| } | ||||
| 
 | ||||
| // GetEnvPublicKey gets a public key that should be used for secret encryption.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#get-an-environment-public-key
 | ||||
| func (s *ActionsService) GetEnvPublicKey(ctx context.Context, repoID int, env string) (*PublicKey, *Response, error) { | ||||
| 	u := fmt.Sprintf("repositories/%v/environments/%v/secrets/public-key", repoID, env) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	pubKey := new(PublicKey) | ||||
| 	resp, err := s.client.Do(ctx, req, pubKey) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return pubKey, resp, nil | ||||
| } | ||||
| 
 | ||||
| // Secret represents a repository action secret.
 | ||||
| type Secret struct { | ||||
| 	Name                    string    `json:"name"` | ||||
|  | @ -72,7 +122,7 @@ type Secrets struct { | |||
| // ListRepoSecrets lists all secrets available in a repository
 | ||||
| // without revealing their encrypted values.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#list-repository-secrets
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-repository-secrets
 | ||||
| func (s *ActionsService) ListRepoSecrets(ctx context.Context, owner, repo string, opts *ListOptions) (*Secrets, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/secrets", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -96,7 +146,7 @@ func (s *ActionsService) ListRepoSecrets(ctx context.Context, owner, repo string | |||
| 
 | ||||
| // GetRepoSecret gets a single repository secret without revealing its encrypted value.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#get-a-repository-secret
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-a-repository-secret
 | ||||
| func (s *ActionsService) GetRepoSecret(ctx context.Context, owner, repo, name string) (*Secret, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/secrets/%v", owner, repo, name) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -131,7 +181,7 @@ type EncryptedSecret struct { | |||
| 
 | ||||
| // CreateOrUpdateRepoSecret creates or updates a repository secret with an encrypted value.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#create-or-update-a-repository-secret
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#create-or-update-a-repository-secret
 | ||||
| func (s *ActionsService) CreateOrUpdateRepoSecret(ctx context.Context, owner, repo string, eSecret *EncryptedSecret) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/secrets/%v", owner, repo, eSecret.Name) | ||||
| 
 | ||||
|  | @ -145,7 +195,7 @@ func (s *ActionsService) CreateOrUpdateRepoSecret(ctx context.Context, owner, re | |||
| 
 | ||||
| // DeleteRepoSecret deletes a secret in a repository using the secret name.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#delete-a-repository-secret
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#delete-a-repository-secret
 | ||||
| func (s *ActionsService) DeleteRepoSecret(ctx context.Context, owner, repo, name string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/secrets/%v", owner, repo, name) | ||||
| 
 | ||||
|  | @ -160,7 +210,7 @@ func (s *ActionsService) DeleteRepoSecret(ctx context.Context, owner, repo, name | |||
| // ListOrgSecrets lists all secrets available in an organization
 | ||||
| // without revealing their encrypted values.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#list-organization-secrets
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-organization-secrets
 | ||||
| func (s *ActionsService) ListOrgSecrets(ctx context.Context, org string, opts *ListOptions) (*Secrets, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/secrets", org) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -184,7 +234,7 @@ func (s *ActionsService) ListOrgSecrets(ctx context.Context, org string, opts *L | |||
| 
 | ||||
| // GetOrgSecret gets a single organization secret without revealing its encrypted value.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#get-an-organization-secret
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-an-organization-secret
 | ||||
| func (s *ActionsService) GetOrgSecret(ctx context.Context, org, name string) (*Secret, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/secrets/%v", org, name) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -203,7 +253,7 @@ func (s *ActionsService) GetOrgSecret(ctx context.Context, org, name string) (*S | |||
| 
 | ||||
| // CreateOrUpdateOrgSecret creates or updates an organization secret with an encrypted value.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#create-or-update-an-organization-secret
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#create-or-update-an-organization-secret
 | ||||
| func (s *ActionsService) CreateOrUpdateOrgSecret(ctx context.Context, org string, eSecret *EncryptedSecret) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/secrets/%v", org, eSecret.Name) | ||||
| 
 | ||||
|  | @ -223,9 +273,14 @@ type SelectedReposList struct { | |||
| 
 | ||||
| // ListSelectedReposForOrgSecret lists all repositories that have access to a secret.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#list-selected-repositories-for-an-organization-secret
 | ||||
| func (s *ActionsService) ListSelectedReposForOrgSecret(ctx context.Context, org, name string) (*SelectedReposList, *Response, error) { | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-selected-repositories-for-an-organization-secret
 | ||||
| func (s *ActionsService) ListSelectedReposForOrgSecret(ctx context.Context, org, name string, opts *ListOptions) (*SelectedReposList, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/secrets/%v/repositories", org, name) | ||||
| 	u, err := addOptions(u, opts) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
|  | @ -242,7 +297,7 @@ func (s *ActionsService) ListSelectedReposForOrgSecret(ctx context.Context, org, | |||
| 
 | ||||
| // SetSelectedReposForOrgSecret sets the repositories that have access to a secret.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#set-selected-repositories-for-an-organization-secret
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#set-selected-repositories-for-an-organization-secret
 | ||||
| func (s *ActionsService) SetSelectedReposForOrgSecret(ctx context.Context, org, name string, ids SelectedRepoIDs) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/secrets/%v/repositories", org, name) | ||||
| 
 | ||||
|  | @ -260,7 +315,7 @@ func (s *ActionsService) SetSelectedReposForOrgSecret(ctx context.Context, org, | |||
| 
 | ||||
| // AddSelectedRepoToOrgSecret adds a repository to an organization secret.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#add-selected-repository-to-an-organization-secret
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#add-selected-repository-to-an-organization-secret
 | ||||
| func (s *ActionsService) AddSelectedRepoToOrgSecret(ctx context.Context, org, name string, repo *Repository) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/secrets/%v/repositories/%v", org, name, *repo.ID) | ||||
| 	req, err := s.client.NewRequest("PUT", u, nil) | ||||
|  | @ -273,7 +328,7 @@ func (s *ActionsService) AddSelectedRepoToOrgSecret(ctx context.Context, org, na | |||
| 
 | ||||
| // RemoveSelectedRepoFromOrgSecret removes a repository from an organization secret.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#remove-selected-repository-from-an-organization-secret
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#remove-selected-repository-from-an-organization-secret
 | ||||
| func (s *ActionsService) RemoveSelectedRepoFromOrgSecret(ctx context.Context, org, name string, repo *Repository) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/secrets/%v/repositories/%v", org, name, *repo.ID) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -286,7 +341,7 @@ func (s *ActionsService) RemoveSelectedRepoFromOrgSecret(ctx context.Context, or | |||
| 
 | ||||
| // DeleteOrgSecret deletes a secret in an organization using the secret name.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/secrets/#delete-an-organization-secret
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#delete-an-organization-secret
 | ||||
| func (s *ActionsService) DeleteOrgSecret(ctx context.Context, org, name string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/secrets/%v", org, name) | ||||
| 
 | ||||
|  | @ -297,3 +352,74 @@ func (s *ActionsService) DeleteOrgSecret(ctx context.Context, org, name string) | |||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // ListEnvSecrets lists all secrets available in an environment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#list-environment-secrets
 | ||||
| func (s *ActionsService) ListEnvSecrets(ctx context.Context, repoID int, env string, opts *ListOptions) (*Secrets, *Response, error) { | ||||
| 	u := fmt.Sprintf("repositories/%v/environments/%v/secrets", repoID, env) | ||||
| 	u, err := addOptions(u, opts) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	secrets := new(Secrets) | ||||
| 	resp, err := s.client.Do(ctx, req, &secrets) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return secrets, resp, nil | ||||
| } | ||||
| 
 | ||||
| // GetEnvSecret gets a single environment secret without revealing its encrypted value.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#list-environment-secrets
 | ||||
| func (s *ActionsService) GetEnvSecret(ctx context.Context, repoID int, env, secretName string) (*Secret, *Response, error) { | ||||
| 	u := fmt.Sprintf("repositories/%v/environments/%v/secrets/%v", repoID, env, secretName) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	secret := new(Secret) | ||||
| 	resp, err := s.client.Do(ctx, req, secret) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return secret, resp, nil | ||||
| } | ||||
| 
 | ||||
| // CreateOrUpdateEnvSecret creates or updates a repository secret with an encrypted value.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#create-or-update-an-environment-secret
 | ||||
| func (s *ActionsService) CreateOrUpdateEnvSecret(ctx context.Context, repoID int, env string, eSecret *EncryptedSecret) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repositories/%v/environments/%v/secrets/%v", repoID, env, eSecret.Name) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("PUT", u, eSecret) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // DeleteEnvSecret deletes a secret in an environment using the secret name.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#delete-an-environment-secret
 | ||||
| func (s *ActionsService) DeleteEnvSecret(ctx context.Context, repoID int, env, secretName string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repositories/%v/environments/%v/secrets/%v", repoID, env, secretName) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
|  | @ -60,7 +60,7 @@ type ListWorkflowJobsOptions struct { | |||
| 
 | ||||
| // ListWorkflowJobs lists all jobs for a workflow run.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflow-jobs/#list-jobs-for-a-workflow-run
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-jobs-for-a-workflow-run
 | ||||
| func (s *ActionsService) ListWorkflowJobs(ctx context.Context, owner, repo string, runID int64, opts *ListWorkflowJobsOptions) (*Jobs, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/actions/runs/%v/jobs", owner, repo, runID) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -84,7 +84,7 @@ func (s *ActionsService) ListWorkflowJobs(ctx context.Context, owner, repo strin | |||
| 
 | ||||
| // GetWorkflowJobByID gets a specific job in a workflow run by ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflow-jobs/#get-a-job-for-a-workflow-run
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-a-job-for-a-workflow-run
 | ||||
| func (s *ActionsService) GetWorkflowJobByID(ctx context.Context, owner, repo string, jobID int64) (*WorkflowJob, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/jobs/%v", owner, repo, jobID) | ||||
| 
 | ||||
|  | @ -104,7 +104,7 @@ func (s *ActionsService) GetWorkflowJobByID(ctx context.Context, owner, repo str | |||
| 
 | ||||
| // GetWorkflowJobLogs gets a redirect URL to download a plain text file of logs for a workflow job.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflow-jobs/#download-job-logs-for-a-workflow-run
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#download-job-logs-for-a-workflow-run
 | ||||
| func (s *ActionsService) GetWorkflowJobLogs(ctx context.Context, owner, repo string, jobID int64, followRedirects bool) (*url.URL, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/jobs/%v/logs", owner, repo, jobID) | ||||
| 
 | ||||
|  | @ -15,6 +15,7 @@ import ( | |||
| // WorkflowRun represents a repository action workflow run.
 | ||||
| type WorkflowRun struct { | ||||
| 	ID             *int64         `json:"id,omitempty"` | ||||
| 	Name           *string        `json:"name,omitempty"` | ||||
| 	NodeID         *string        `json:"node_id,omitempty"` | ||||
| 	HeadBranch     *string        `json:"head_branch,omitempty"` | ||||
| 	HeadSHA        *string        `json:"head_sha,omitempty"` | ||||
|  | @ -96,7 +97,7 @@ func (s *ActionsService) listWorkflowRuns(ctx context.Context, endpoint string, | |||
| 
 | ||||
| // ListWorkflowRunsByID lists all workflow runs by workflow ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflow-runs/#list-workflow-runs
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-workflow-runs
 | ||||
| func (s *ActionsService) ListWorkflowRunsByID(ctx context.Context, owner, repo string, workflowID int64, opts *ListWorkflowRunsOptions) (*WorkflowRuns, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/actions/workflows/%v/runs", owner, repo, workflowID) | ||||
| 	return s.listWorkflowRuns(ctx, u, opts) | ||||
|  | @ -104,7 +105,7 @@ func (s *ActionsService) ListWorkflowRunsByID(ctx context.Context, owner, repo s | |||
| 
 | ||||
| // ListWorkflowRunsByFileName lists all workflow runs by workflow file name.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflow-runs/#list-workflow-runs
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-workflow-runs
 | ||||
| func (s *ActionsService) ListWorkflowRunsByFileName(ctx context.Context, owner, repo, workflowFileName string, opts *ListWorkflowRunsOptions) (*WorkflowRuns, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/actions/workflows/%v/runs", owner, repo, workflowFileName) | ||||
| 	return s.listWorkflowRuns(ctx, u, opts) | ||||
|  | @ -112,7 +113,7 @@ func (s *ActionsService) ListWorkflowRunsByFileName(ctx context.Context, owner, | |||
| 
 | ||||
| // ListRepositoryWorkflowRuns lists all workflow runs for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflow-runs/#list-workflow-runs-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-workflow-runs-for-a-repository
 | ||||
| func (s *ActionsService) ListRepositoryWorkflowRuns(ctx context.Context, owner, repo string, opts *ListWorkflowRunsOptions) (*WorkflowRuns, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/actions/runs", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -136,7 +137,7 @@ func (s *ActionsService) ListRepositoryWorkflowRuns(ctx context.Context, owner, | |||
| 
 | ||||
| // GetWorkflowRunByID gets a specific workflow run by ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflow-runs/#get-a-workflow-run
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-a-workflow-run
 | ||||
| func (s *ActionsService) GetWorkflowRunByID(ctx context.Context, owner, repo string, runID int64) (*WorkflowRun, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/runs/%v", owner, repo, runID) | ||||
| 
 | ||||
|  | @ -154,9 +155,9 @@ func (s *ActionsService) GetWorkflowRunByID(ctx context.Context, owner, repo str | |||
| 	return run, resp, nil | ||||
| } | ||||
| 
 | ||||
| // RerunWorkflow re-runs a workflow by ID.
 | ||||
| // RerunWorkflowByID re-runs a workflow by ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflow-runs/#re-run-a-workflow
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#re-run-a-workflow
 | ||||
| func (s *ActionsService) RerunWorkflowByID(ctx context.Context, owner, repo string, runID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/rerun", owner, repo, runID) | ||||
| 
 | ||||
|  | @ -170,7 +171,7 @@ func (s *ActionsService) RerunWorkflowByID(ctx context.Context, owner, repo stri | |||
| 
 | ||||
| // CancelWorkflowRunByID cancels a workflow run by ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflow-runs/#cancel-a-workflow-run
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#cancel-a-workflow-run
 | ||||
| func (s *ActionsService) CancelWorkflowRunByID(ctx context.Context, owner, repo string, runID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/cancel", owner, repo, runID) | ||||
| 
 | ||||
|  | @ -184,7 +185,7 @@ func (s *ActionsService) CancelWorkflowRunByID(ctx context.Context, owner, repo | |||
| 
 | ||||
| // GetWorkflowRunLogs gets a redirect URL to download a plain text file of logs for a workflow run.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflow-runs/#download-workflow-run-logs
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#download-workflow-run-logs
 | ||||
| func (s *ActionsService) GetWorkflowRunLogs(ctx context.Context, owner, repo string, runID int64, followRedirects bool) (*url.URL, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/logs", owner, repo, runID) | ||||
| 
 | ||||
|  | @ -202,7 +203,7 @@ func (s *ActionsService) GetWorkflowRunLogs(ctx context.Context, owner, repo str | |||
| 
 | ||||
| // DeleteWorkflowRunLogs deletes all logs for a workflow run.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflow-runs/#delete-workflow-run-logs
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#delete-workflow-run-logs
 | ||||
| func (s *ActionsService) DeleteWorkflowRunLogs(ctx context.Context, owner, repo string, runID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/logs", owner, repo, runID) | ||||
| 
 | ||||
|  | @ -216,7 +217,7 @@ func (s *ActionsService) DeleteWorkflowRunLogs(ctx context.Context, owner, repo | |||
| 
 | ||||
| // GetWorkflowRunUsageByID gets a specific workflow usage run by run ID in the unit of billable milliseconds.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/actions/workflow-runs/#get-workflow-run-usage
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-workflow-run-usage
 | ||||
| func (s *ActionsService) GetWorkflowRunUsageByID(ctx context.Context, owner, repo string, runID int64) (*WorkflowRunUsage, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/timing", owner, repo, runID) | ||||
| 
 | ||||
							
								
								
									
										218
									
								
								vendor/github.com/google/go-github/v37/github/actions_workflows.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							
							
						
						
									
										218
									
								
								vendor/github.com/google/go-github/v37/github/actions_workflows.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							|  | @ -0,0 +1,218 @@ | |||
| // Copyright 2020 The go-github AUTHORS. All rights reserved.
 | ||||
| //
 | ||||
| // Use of this source code is governed by a BSD-style
 | ||||
| // license that can be found in the LICENSE file.
 | ||||
| 
 | ||||
| package github | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| // Workflow represents a repository action workflow.
 | ||||
| type Workflow struct { | ||||
| 	ID        *int64     `json:"id,omitempty"` | ||||
| 	NodeID    *string    `json:"node_id,omitempty"` | ||||
| 	Name      *string    `json:"name,omitempty"` | ||||
| 	Path      *string    `json:"path,omitempty"` | ||||
| 	State     *string    `json:"state,omitempty"` | ||||
| 	CreatedAt *Timestamp `json:"created_at,omitempty"` | ||||
| 	UpdatedAt *Timestamp `json:"updated_at,omitempty"` | ||||
| 	URL       *string    `json:"url,omitempty"` | ||||
| 	HTMLURL   *string    `json:"html_url,omitempty"` | ||||
| 	BadgeURL  *string    `json:"badge_url,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // Workflows represents a slice of repository action workflows.
 | ||||
| type Workflows struct { | ||||
| 	TotalCount *int        `json:"total_count,omitempty"` | ||||
| 	Workflows  []*Workflow `json:"workflows,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // WorkflowUsage represents a usage of a specific workflow.
 | ||||
| type WorkflowUsage struct { | ||||
| 	Billable *WorkflowEnvironment `json:"billable,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // WorkflowEnvironment represents different runner environments available for a workflow.
 | ||||
| type WorkflowEnvironment struct { | ||||
| 	Ubuntu  *WorkflowBill `json:"UBUNTU,omitempty"` | ||||
| 	MacOS   *WorkflowBill `json:"MACOS,omitempty"` | ||||
| 	Windows *WorkflowBill `json:"WINDOWS,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // WorkflowBill specifies billable time for a specific environment in a workflow.
 | ||||
| type WorkflowBill struct { | ||||
| 	TotalMS *int64 `json:"total_ms,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // CreateWorkflowDispatchEventRequest represents a request to create a workflow dispatch event.
 | ||||
| type CreateWorkflowDispatchEventRequest struct { | ||||
| 	// Ref represents the reference of the workflow run.
 | ||||
| 	// The reference can be a branch, tag, or a commit SHA.
 | ||||
| 	// Ref is required when creating a workflow dispatch event.
 | ||||
| 	Ref string `json:"ref"` | ||||
| 	// Inputs represents input keys and values configured in the workflow file.
 | ||||
| 	// The maximum number of properties is 10.
 | ||||
| 	// Default: Any default properties configured in the workflow file will be used when `inputs` are omitted.
 | ||||
| 	Inputs map[string]interface{} `json:"inputs,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ListWorkflows lists all workflows in a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-repository-workflows
 | ||||
| func (s *ActionsService) ListWorkflows(ctx context.Context, owner, repo string, opts *ListOptions) (*Workflows, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/actions/workflows", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	workflows := new(Workflows) | ||||
| 	resp, err := s.client.Do(ctx, req, &workflows) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return workflows, resp, nil | ||||
| } | ||||
| 
 | ||||
| // GetWorkflowByID gets a specific workflow by ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-a-workflow
 | ||||
| func (s *ActionsService) GetWorkflowByID(ctx context.Context, owner, repo string, workflowID int64) (*Workflow, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v", owner, repo, workflowID) | ||||
| 
 | ||||
| 	return s.getWorkflow(ctx, u) | ||||
| } | ||||
| 
 | ||||
| // GetWorkflowByFileName gets a specific workflow by file name.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-a-workflow
 | ||||
| func (s *ActionsService) GetWorkflowByFileName(ctx context.Context, owner, repo, workflowFileName string) (*Workflow, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v", owner, repo, workflowFileName) | ||||
| 
 | ||||
| 	return s.getWorkflow(ctx, u) | ||||
| } | ||||
| 
 | ||||
| func (s *ActionsService) getWorkflow(ctx context.Context, url string) (*Workflow, *Response, error) { | ||||
| 	req, err := s.client.NewRequest("GET", url, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	workflow := new(Workflow) | ||||
| 	resp, err := s.client.Do(ctx, req, workflow) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return workflow, resp, nil | ||||
| } | ||||
| 
 | ||||
| // GetWorkflowUsageByID gets a specific workflow usage by ID in the unit of billable milliseconds.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-workflow-usage
 | ||||
| func (s *ActionsService) GetWorkflowUsageByID(ctx context.Context, owner, repo string, workflowID int64) (*WorkflowUsage, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v/timing", owner, repo, workflowID) | ||||
| 
 | ||||
| 	return s.getWorkflowUsage(ctx, u) | ||||
| } | ||||
| 
 | ||||
| // GetWorkflowUsageByFileName gets a specific workflow usage by file name in the unit of billable milliseconds.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-workflow-usage
 | ||||
| func (s *ActionsService) GetWorkflowUsageByFileName(ctx context.Context, owner, repo, workflowFileName string) (*WorkflowUsage, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v/timing", owner, repo, workflowFileName) | ||||
| 
 | ||||
| 	return s.getWorkflowUsage(ctx, u) | ||||
| } | ||||
| 
 | ||||
| func (s *ActionsService) getWorkflowUsage(ctx context.Context, url string) (*WorkflowUsage, *Response, error) { | ||||
| 	req, err := s.client.NewRequest("GET", url, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	workflowUsage := new(WorkflowUsage) | ||||
| 	resp, err := s.client.Do(ctx, req, workflowUsage) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return workflowUsage, resp, nil | ||||
| } | ||||
| 
 | ||||
| // CreateWorkflowDispatchEventByID manually triggers a GitHub Actions workflow run.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#create-a-workflow-dispatch-event
 | ||||
| func (s *ActionsService) CreateWorkflowDispatchEventByID(ctx context.Context, owner, repo string, workflowID int64, event CreateWorkflowDispatchEventRequest) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v/dispatches", owner, repo, workflowID) | ||||
| 
 | ||||
| 	return s.createWorkflowDispatchEvent(ctx, u, &event) | ||||
| } | ||||
| 
 | ||||
| // CreateWorkflowDispatchEventByFileName manually triggers a GitHub Actions workflow run.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#create-a-workflow-dispatch-event
 | ||||
| func (s *ActionsService) CreateWorkflowDispatchEventByFileName(ctx context.Context, owner, repo, workflowFileName string, event CreateWorkflowDispatchEventRequest) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v/dispatches", owner, repo, workflowFileName) | ||||
| 
 | ||||
| 	return s.createWorkflowDispatchEvent(ctx, u, &event) | ||||
| } | ||||
| 
 | ||||
| func (s *ActionsService) createWorkflowDispatchEvent(ctx context.Context, url string, event *CreateWorkflowDispatchEventRequest) (*Response, error) { | ||||
| 	req, err := s.client.NewRequest("POST", url, event) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // EnableWorkflowByID enables a workflow and sets the state of the workflow to "active".
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#enable-a-workflow
 | ||||
| func (s *ActionsService) EnableWorkflowByID(ctx context.Context, owner, repo string, workflowID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v/enable", owner, repo, workflowID) | ||||
| 	return s.doNewPutRequest(ctx, u) | ||||
| } | ||||
| 
 | ||||
| // EnableWorkflowByFileName enables a workflow and sets the state of the workflow to "active".
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#enable-a-workflow
 | ||||
| func (s *ActionsService) EnableWorkflowByFileName(ctx context.Context, owner, repo, workflowFileName string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v/enable", owner, repo, workflowFileName) | ||||
| 	return s.doNewPutRequest(ctx, u) | ||||
| } | ||||
| 
 | ||||
| // DisableWorkflowByID disables a workflow and sets the state of the workflow to "disabled_manually".
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#disable-a-workflow
 | ||||
| func (s *ActionsService) DisableWorkflowByID(ctx context.Context, owner, repo string, workflowID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v/disable", owner, repo, workflowID) | ||||
| 	return s.doNewPutRequest(ctx, u) | ||||
| } | ||||
| 
 | ||||
| // DisableWorkflowByFileName disables a workflow and sets the state of the workflow to "disabled_manually".
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#disable-a-workflow
 | ||||
| func (s *ActionsService) DisableWorkflowByFileName(ctx context.Context, owner, repo, workflowFileName string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/actions/workflows/%v/disable", owner, repo, workflowFileName) | ||||
| 	return s.doNewPutRequest(ctx, u) | ||||
| } | ||||
| 
 | ||||
| func (s *ActionsService) doNewPutRequest(ctx context.Context, url string) (*Response, error) { | ||||
| 	req, err := s.client.NewRequest("PUT", url, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
|  | @ -10,7 +10,7 @@ import "context" | |||
| // ActivityService handles communication with the activity related
 | ||||
| // methods of the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/
 | ||||
| type ActivityService service | ||||
| 
 | ||||
| // FeedLink represents a link to a related resource.
 | ||||
|  | @ -21,22 +21,25 @@ type FeedLink struct { | |||
| 
 | ||||
| // Feeds represents timeline resources in Atom format.
 | ||||
| type Feeds struct { | ||||
| 	TimelineURL                 *string  `json:"timeline_url,omitempty"` | ||||
| 	UserURL                     *string  `json:"user_url,omitempty"` | ||||
| 	CurrentUserPublicURL        *string  `json:"current_user_public_url,omitempty"` | ||||
| 	CurrentUserURL              *string  `json:"current_user_url,omitempty"` | ||||
| 	CurrentUserActorURL         *string  `json:"current_user_actor_url,omitempty"` | ||||
| 	CurrentUserOrganizationURL  *string  `json:"current_user_organization_url,omitempty"` | ||||
| 	CurrentUserOrganizationURLs []string `json:"current_user_organization_urls,omitempty"` | ||||
| 	Links                       *struct { | ||||
| 		Timeline                 *FeedLink   `json:"timeline,omitempty"` | ||||
| 		User                     *FeedLink   `json:"user,omitempty"` | ||||
| 		CurrentUserPublic        *FeedLink   `json:"current_user_public,omitempty"` | ||||
| 		CurrentUser              *FeedLink   `json:"current_user,omitempty"` | ||||
| 		CurrentUserActor         *FeedLink   `json:"current_user_actor,omitempty"` | ||||
| 		CurrentUserOrganization  *FeedLink   `json:"current_user_organization,omitempty"` | ||||
| 		CurrentUserOrganizations []*FeedLink `json:"current_user_organizations,omitempty"` | ||||
| 	} `json:"_links,omitempty"` | ||||
| 	TimelineURL                 *string    `json:"timeline_url,omitempty"` | ||||
| 	UserURL                     *string    `json:"user_url,omitempty"` | ||||
| 	CurrentUserPublicURL        *string    `json:"current_user_public_url,omitempty"` | ||||
| 	CurrentUserURL              *string    `json:"current_user_url,omitempty"` | ||||
| 	CurrentUserActorURL         *string    `json:"current_user_actor_url,omitempty"` | ||||
| 	CurrentUserOrganizationURL  *string    `json:"current_user_organization_url,omitempty"` | ||||
| 	CurrentUserOrganizationURLs []string   `json:"current_user_organization_urls,omitempty"` | ||||
| 	Links                       *FeedLinks `json:"_links,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // FeedLinks represents the links in a Feed.
 | ||||
| type FeedLinks struct { | ||||
| 	Timeline                 *FeedLink   `json:"timeline,omitempty"` | ||||
| 	User                     *FeedLink   `json:"user,omitempty"` | ||||
| 	CurrentUserPublic        *FeedLink   `json:"current_user_public,omitempty"` | ||||
| 	CurrentUser              *FeedLink   `json:"current_user,omitempty"` | ||||
| 	CurrentUserActor         *FeedLink   `json:"current_user_actor,omitempty"` | ||||
| 	CurrentUserOrganization  *FeedLink   `json:"current_user_organization,omitempty"` | ||||
| 	CurrentUserOrganizations []*FeedLink `json:"current_user_organizations,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ListFeeds lists all the feeds available to the authenticated user.
 | ||||
|  | @ -12,7 +12,7 @@ import ( | |||
| 
 | ||||
| // ListEvents drinks from the firehose of all public events across GitHub.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/#list-public-events
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-public-events
 | ||||
| func (s *ActivityService) ListEvents(ctx context.Context, opts *ListOptions) ([]*Event, *Response, error) { | ||||
| 	u, err := addOptions("events", opts) | ||||
| 	if err != nil { | ||||
|  | @ -35,7 +35,7 @@ func (s *ActivityService) ListEvents(ctx context.Context, opts *ListOptions) ([] | |||
| 
 | ||||
| // ListRepositoryEvents lists events for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/#list-repository-events
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-repository-events
 | ||||
| func (s *ActivityService) ListRepositoryEvents(ctx context.Context, owner, repo string, opts *ListOptions) ([]*Event, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/events", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -59,7 +59,7 @@ func (s *ActivityService) ListRepositoryEvents(ctx context.Context, owner, repo | |||
| 
 | ||||
| // ListIssueEventsForRepository lists issue events for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/events/#list-issue-events-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-issue-events-for-a-repository
 | ||||
| func (s *ActivityService) ListIssueEventsForRepository(ctx context.Context, owner, repo string, opts *ListOptions) ([]*IssueEvent, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/events", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -83,7 +83,7 @@ func (s *ActivityService) ListIssueEventsForRepository(ctx context.Context, owne | |||
| 
 | ||||
| // ListEventsForRepoNetwork lists public events for a network of repositories.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/#list-public-events-for-a-network-of-repositories
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-public-events-for-a-network-of-repositories
 | ||||
| func (s *ActivityService) ListEventsForRepoNetwork(ctx context.Context, owner, repo string, opts *ListOptions) ([]*Event, *Response, error) { | ||||
| 	u := fmt.Sprintf("networks/%v/%v/events", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -107,7 +107,7 @@ func (s *ActivityService) ListEventsForRepoNetwork(ctx context.Context, owner, r | |||
| 
 | ||||
| // ListEventsForOrganization lists public events for an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/#list-public-organization-events
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-public-organization-events
 | ||||
| func (s *ActivityService) ListEventsForOrganization(ctx context.Context, org string, opts *ListOptions) ([]*Event, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/events", org) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -132,8 +132,8 @@ func (s *ActivityService) ListEventsForOrganization(ctx context.Context, org str | |||
| // ListEventsPerformedByUser lists the events performed by a user. If publicOnly is
 | ||||
| // true, only public events will be returned.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/#list-events-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/#list-public-events-for-a-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-events-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-public-events-for-a-user
 | ||||
| func (s *ActivityService) ListEventsPerformedByUser(ctx context.Context, user string, publicOnly bool, opts *ListOptions) ([]*Event, *Response, error) { | ||||
| 	var u string | ||||
| 	if publicOnly { | ||||
|  | @ -163,8 +163,8 @@ func (s *ActivityService) ListEventsPerformedByUser(ctx context.Context, user st | |||
| // ListEventsReceivedByUser lists the events received by a user. If publicOnly is
 | ||||
| // true, only public events will be returned.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/#list-events-received-by-the-authenticated-user
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/#list-public-events-received-by-a-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-events-received-by-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-public-events-received-by-a-user
 | ||||
| func (s *ActivityService) ListEventsReceivedByUser(ctx context.Context, user string, publicOnly bool, opts *ListOptions) ([]*Event, *Response, error) { | ||||
| 	var u string | ||||
| 	if publicOnly { | ||||
|  | @ -194,7 +194,7 @@ func (s *ActivityService) ListEventsReceivedByUser(ctx context.Context, user str | |||
| // ListUserEventsForOrganization provides the user’s organization dashboard. You
 | ||||
| // must be authenticated as the user to view this.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/#list-organization-events-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-organization-events-for-the-authenticated-user
 | ||||
| func (s *ActivityService) ListUserEventsForOrganization(ctx context.Context, org, user string, opts *ListOptions) ([]*Event, *Response, error) { | ||||
| 	u := fmt.Sprintf("users/%v/events/orgs/%v", user, org) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -19,7 +19,7 @@ type Notification struct { | |||
| 
 | ||||
| 	// Reason identifies the event that triggered the notification.
 | ||||
| 	//
 | ||||
| 	// GitHub API docs: https://developer.github.com/v3/activity/notifications/#notification-reasons
 | ||||
| 	// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity#notification-reasons
 | ||||
| 	Reason *string `json:"reason,omitempty"` | ||||
| 
 | ||||
| 	Unread     *bool      `json:"unread,omitempty"` | ||||
|  | @ -49,7 +49,7 @@ type NotificationListOptions struct { | |||
| 
 | ||||
| // ListNotifications lists all notifications for the authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/notifications/#list-notifications-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-notifications-for-the-authenticated-user
 | ||||
| func (s *ActivityService) ListNotifications(ctx context.Context, opts *NotificationListOptions) ([]*Notification, *Response, error) { | ||||
| 	u := fmt.Sprintf("notifications") | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -74,7 +74,7 @@ func (s *ActivityService) ListNotifications(ctx context.Context, opts *Notificat | |||
| // ListRepositoryNotifications lists all notifications in a given repository
 | ||||
| // for the authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/notifications/#list-repository-notifications-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-repository-notifications-for-the-authenticated-user
 | ||||
| func (s *ActivityService) ListRepositoryNotifications(ctx context.Context, owner, repo string, opts *NotificationListOptions) ([]*Notification, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/notifications", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -102,7 +102,7 @@ type markReadOptions struct { | |||
| 
 | ||||
| // MarkNotificationsRead marks all notifications up to lastRead as read.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/notifications/#mark-as-read
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity#mark-as-read
 | ||||
| func (s *ActivityService) MarkNotificationsRead(ctx context.Context, lastRead time.Time) (*Response, error) { | ||||
| 	opts := &markReadOptions{ | ||||
| 		LastReadAt: lastRead, | ||||
|  | @ -118,7 +118,7 @@ func (s *ActivityService) MarkNotificationsRead(ctx context.Context, lastRead ti | |||
| // MarkRepositoryNotificationsRead marks all notifications up to lastRead in
 | ||||
| // the specified repository as read.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/notifications/#mark-repository-notifications-as-read
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#mark-repository-notifications-as-read
 | ||||
| func (s *ActivityService) MarkRepositoryNotificationsRead(ctx context.Context, owner, repo string, lastRead time.Time) (*Response, error) { | ||||
| 	opts := &markReadOptions{ | ||||
| 		LastReadAt: lastRead, | ||||
|  | @ -134,7 +134,7 @@ func (s *ActivityService) MarkRepositoryNotificationsRead(ctx context.Context, o | |||
| 
 | ||||
| // GetThread gets the specified notification thread.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/notifications/#get-a-thread
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#get-a-thread
 | ||||
| func (s *ActivityService) GetThread(ctx context.Context, id string) (*Notification, *Response, error) { | ||||
| 	u := fmt.Sprintf("notifications/threads/%v", id) | ||||
| 
 | ||||
|  | @ -154,7 +154,7 @@ func (s *ActivityService) GetThread(ctx context.Context, id string) (*Notificati | |||
| 
 | ||||
| // MarkThreadRead marks the specified thread as read.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/notifications/#mark-a-thread-as-read
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#mark-a-thread-as-read
 | ||||
| func (s *ActivityService) MarkThreadRead(ctx context.Context, id string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("notifications/threads/%v", id) | ||||
| 
 | ||||
|  | @ -169,7 +169,7 @@ func (s *ActivityService) MarkThreadRead(ctx context.Context, id string) (*Respo | |||
| // GetThreadSubscription checks to see if the authenticated user is subscribed
 | ||||
| // to a thread.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/notifications/#get-a-thread-subscription-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#get-a-thread-subscription-for-the-authenticated-user
 | ||||
| func (s *ActivityService) GetThreadSubscription(ctx context.Context, id string) (*Subscription, *Response, error) { | ||||
| 	u := fmt.Sprintf("notifications/threads/%v/subscription", id) | ||||
| 
 | ||||
|  | @ -190,7 +190,7 @@ func (s *ActivityService) GetThreadSubscription(ctx context.Context, id string) | |||
| // SetThreadSubscription sets the subscription for the specified thread for the
 | ||||
| // authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/notifications/#set-a-thread-subscription
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#set-a-thread-subscription
 | ||||
| func (s *ActivityService) SetThreadSubscription(ctx context.Context, id string, subscription *Subscription) (*Subscription, *Response, error) { | ||||
| 	u := fmt.Sprintf("notifications/threads/%v/subscription", id) | ||||
| 
 | ||||
|  | @ -211,7 +211,7 @@ func (s *ActivityService) SetThreadSubscription(ctx context.Context, id string, | |||
| // DeleteThreadSubscription deletes the subscription for the specified thread
 | ||||
| // for the authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/notifications/#delete-a-thread-subscription
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#delete-a-thread-subscription
 | ||||
| func (s *ActivityService) DeleteThreadSubscription(ctx context.Context, id string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("notifications/threads/%v/subscription", id) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -25,7 +25,7 @@ type Stargazer struct { | |||
| 
 | ||||
| // ListStargazers lists people who have starred the specified repo.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/starring/#list-stargazers
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-stargazers
 | ||||
| func (s *ActivityService) ListStargazers(ctx context.Context, owner, repo string, opts *ListOptions) ([]*Stargazer, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/stargazers", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -67,8 +67,8 @@ type ActivityListStarredOptions struct { | |||
| // ListStarred lists all the repos starred by a user. Passing the empty string
 | ||||
| // will list the starred repositories for the authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/starring/#list-repositories-starred-by-a-user
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/starring/#list-repositories-starred-by-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-repositories-starred-by-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-repositories-starred-by-a-user
 | ||||
| func (s *ActivityService) ListStarred(ctx context.Context, user string, opts *ActivityListStarredOptions) ([]*StarredRepository, *Response, error) { | ||||
| 	var u string | ||||
| 	if user != "" { | ||||
|  | @ -101,7 +101,7 @@ func (s *ActivityService) ListStarred(ctx context.Context, user string, opts *Ac | |||
| 
 | ||||
| // IsStarred checks if a repository is starred by authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/starring/#check-if-a-repository-is-starred-by-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#check-if-a-repository-is-starred-by-the-authenticated-user
 | ||||
| func (s *ActivityService) IsStarred(ctx context.Context, owner, repo string) (bool, *Response, error) { | ||||
| 	u := fmt.Sprintf("user/starred/%v/%v", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -115,7 +115,7 @@ func (s *ActivityService) IsStarred(ctx context.Context, owner, repo string) (bo | |||
| 
 | ||||
| // Star a repository as the authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/starring/#star-a-repository-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#star-a-repository-for-the-authenticated-user
 | ||||
| func (s *ActivityService) Star(ctx context.Context, owner, repo string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("user/starred/%v/%v", owner, repo) | ||||
| 	req, err := s.client.NewRequest("PUT", u, nil) | ||||
|  | @ -127,7 +127,7 @@ func (s *ActivityService) Star(ctx context.Context, owner, repo string) (*Respon | |||
| 
 | ||||
| // Unstar a repository as the authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/starring/#unstar-a-repository-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#unstar-a-repository-for-the-authenticated-user
 | ||||
| func (s *ActivityService) Unstar(ctx context.Context, owner, repo string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("user/starred/%v/%v", owner, repo) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -27,7 +27,7 @@ type Subscription struct { | |||
| 
 | ||||
| // ListWatchers lists watchers of a particular repo.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/watching/#list-watchers
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-watchers
 | ||||
| func (s *ActivityService) ListWatchers(ctx context.Context, owner, repo string, opts *ListOptions) ([]*User, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/subscribers", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -52,8 +52,8 @@ func (s *ActivityService) ListWatchers(ctx context.Context, owner, repo string, | |||
| // ListWatched lists the repositories the specified user is watching. Passing
 | ||||
| // the empty string will fetch watched repos for the authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/watching/#list-repositories-watched-by-a-user
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/watching/#list-repositories-watched-by-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-repositories-watched-by-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#list-repositories-watched-by-a-user
 | ||||
| func (s *ActivityService) ListWatched(ctx context.Context, user string, opts *ListOptions) ([]*Repository, *Response, error) { | ||||
| 	var u string | ||||
| 	if user != "" { | ||||
|  | @ -84,7 +84,7 @@ func (s *ActivityService) ListWatched(ctx context.Context, user string, opts *Li | |||
| // repository for the authenticated user. If the authenticated user is not
 | ||||
| // watching the repository, a nil Subscription is returned.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/watching/#get-a-repository-subscription
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#get-a-repository-subscription
 | ||||
| func (s *ActivityService) GetRepositorySubscription(ctx context.Context, owner, repo string) (*Subscription, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/subscription", owner, repo) | ||||
| 
 | ||||
|  | @ -111,7 +111,7 @@ func (s *ActivityService) GetRepositorySubscription(ctx context.Context, owner, | |||
| // To ignore notifications made within a repository, set subscription.Ignored to true.
 | ||||
| // To stop watching a repository, use DeleteRepositorySubscription.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/watching/#set-a-repository-subscription
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#set-a-repository-subscription
 | ||||
| func (s *ActivityService) SetRepositorySubscription(ctx context.Context, owner, repo string, subscription *Subscription) (*Subscription, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/subscription", owner, repo) | ||||
| 
 | ||||
|  | @ -135,7 +135,7 @@ func (s *ActivityService) SetRepositorySubscription(ctx context.Context, owner, | |||
| // This is used to stop watching a repository. To control whether or not to
 | ||||
| // receive notifications from a repository, use SetRepositorySubscription.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/watching/#delete-a-repository-subscription
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/activity/#delete-a-repository-subscription
 | ||||
| func (s *ActivityService) DeleteRepositorySubscription(ctx context.Context, owner, repo string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/subscription", owner, repo) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -14,7 +14,7 @@ import ( | |||
| // GitHub API. These API routes are normally only accessible for GitHub
 | ||||
| // Enterprise installations.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/enterprise/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/enterprise/
 | ||||
| type AdminService service | ||||
| 
 | ||||
| // TeamLDAPMapping represents the mapping between a GitHub team and an LDAP group.
 | ||||
|  | @ -82,7 +82,7 @@ func (m Enterprise) String() string { | |||
| 
 | ||||
| // UpdateUserLDAPMapping updates the mapping between a GitHub user and an LDAP user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/enterprise/ldap/#update-ldap-mapping-for-a-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/enterprise/ldap/#update-ldap-mapping-for-a-user
 | ||||
| func (s *AdminService) UpdateUserLDAPMapping(ctx context.Context, user string, mapping *UserLDAPMapping) (*UserLDAPMapping, *Response, error) { | ||||
| 	u := fmt.Sprintf("admin/ldap/users/%v/mapping", user) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, mapping) | ||||
|  | @ -101,7 +101,7 @@ func (s *AdminService) UpdateUserLDAPMapping(ctx context.Context, user string, m | |||
| 
 | ||||
| // UpdateTeamLDAPMapping updates the mapping between a GitHub team and an LDAP group.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/enterprise/ldap/#update-ldap-mapping-for-a-team
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/enterprise/ldap/#update-ldap-mapping-for-a-team
 | ||||
| func (s *AdminService) UpdateTeamLDAPMapping(ctx context.Context, team int64, mapping *TeamLDAPMapping) (*TeamLDAPMapping, *Response, error) { | ||||
| 	u := fmt.Sprintf("admin/ldap/teams/%v/mapping", team) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, mapping) | ||||
|  | @ -153,7 +153,7 @@ func (s RepoStats) String() string { | |||
| // Please note that this is only available to site administrators,
 | ||||
| // otherwise it will error with a 404 not found (instead of 401 or 403).
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/enterprise-admin/admin_stats/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/enterprise-admin/admin_stats/
 | ||||
| func (s *AdminService) GetAdminStats(ctx context.Context) (*AdminStats, *Response, error) { | ||||
| 	u := fmt.Sprintf("enterprise/stats/all") | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -14,7 +14,7 @@ import ( | |||
| // AppsService provides access to the installation related functions
 | ||||
| // in the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/
 | ||||
| type AppsService service | ||||
| 
 | ||||
| // App represents a GitHub App.
 | ||||
|  | @ -55,54 +55,68 @@ type InstallationTokenOptions struct { | |||
| // InstallationPermissions lists the repository and organization permissions for an installation.
 | ||||
| //
 | ||||
| // Permission names taken from:
 | ||||
| //   https://developer.github.com/v3/apps/permissions/
 | ||||
| //   https://developer.github.com/enterprise/v3/apps/permissions/
 | ||||
| //   https://docs.github.com/en/enterprise-server@3.0/rest/reference/apps#create-an-installation-access-token-for-an-app
 | ||||
| //   https://docs.github.com/en/rest/reference/apps#create-an-installation-access-token-for-an-app
 | ||||
| type InstallationPermissions struct { | ||||
| 	Administration              *string `json:"administration,omitempty"` | ||||
| 	Blocking                    *string `json:"blocking,omitempty"` | ||||
| 	Checks                      *string `json:"checks,omitempty"` | ||||
| 	Contents                    *string `json:"contents,omitempty"` | ||||
| 	ContentReferences           *string `json:"content_references,omitempty"` | ||||
| 	Deployments                 *string `json:"deployments,omitempty"` | ||||
| 	Emails                      *string `json:"emails,omitempty"` | ||||
| 	Followers                   *string `json:"followers,omitempty"` | ||||
| 	Issues                      *string `json:"issues,omitempty"` | ||||
| 	Metadata                    *string `json:"metadata,omitempty"` | ||||
| 	Members                     *string `json:"members,omitempty"` | ||||
| 	OrganizationAdministration  *string `json:"organization_administration,omitempty"` | ||||
| 	OrganizationHooks           *string `json:"organization_hooks,omitempty"` | ||||
| 	OrganizationPlan            *string `json:"organization_plan,omitempty"` | ||||
| 	OrganizationPreReceiveHooks *string `json:"organization_pre_receive_hooks,omitempty"` | ||||
| 	OrganizationProjects        *string `json:"organization_projects,omitempty"` | ||||
| 	OrganizationUserBlocking    *string `json:"organization_user_blocking,omitempty"` | ||||
| 	Packages                    *string `json:"packages,omitempty"` | ||||
| 	Pages                       *string `json:"pages,omitempty"` | ||||
| 	PullRequests                *string `json:"pull_requests,omitempty"` | ||||
| 	RepositoryHooks             *string `json:"repository_hooks,omitempty"` | ||||
| 	RepositoryProjects          *string `json:"repository_projects,omitempty"` | ||||
| 	RepositoryPreReceiveHooks   *string `json:"repository_pre_receive_hooks,omitempty"` | ||||
| 	SingleFile                  *string `json:"single_file,omitempty"` | ||||
| 	Statuses                    *string `json:"statuses,omitempty"` | ||||
| 	TeamDiscussions             *string `json:"team_discussions,omitempty"` | ||||
| 	VulnerabilityAlerts         *string `json:"vulnerability_alerts,omitempty"` | ||||
| 	Actions                       *string `json:"actions,omitempty"` | ||||
| 	Administration                *string `json:"administration,omitempty"` | ||||
| 	Blocking                      *string `json:"blocking,omitempty"` | ||||
| 	Checks                        *string `json:"checks,omitempty"` | ||||
| 	Contents                      *string `json:"contents,omitempty"` | ||||
| 	ContentReferences             *string `json:"content_references,omitempty"` | ||||
| 	Deployments                   *string `json:"deployments,omitempty"` | ||||
| 	Emails                        *string `json:"emails,omitempty"` | ||||
| 	Environments                  *string `json:"environments,omitempty"` | ||||
| 	Followers                     *string `json:"followers,omitempty"` | ||||
| 	Issues                        *string `json:"issues,omitempty"` | ||||
| 	Metadata                      *string `json:"metadata,omitempty"` | ||||
| 	Members                       *string `json:"members,omitempty"` | ||||
| 	OrganizationAdministration    *string `json:"organization_administration,omitempty"` | ||||
| 	OrganizationHooks             *string `json:"organization_hooks,omitempty"` | ||||
| 	OrganizationPlan              *string `json:"organization_plan,omitempty"` | ||||
| 	OrganizationPreReceiveHooks   *string `json:"organization_pre_receive_hooks,omitempty"` | ||||
| 	OrganizationProjects          *string `json:"organization_projects,omitempty"` | ||||
| 	OrganizationSecrets           *string `json:"organization_secrets,omitempty"` | ||||
| 	OrganizationSelfHostedRunners *string `json:"organization_self_hosted_runners,omitempty"` | ||||
| 	OrganizationUserBlocking      *string `json:"organization_user_blocking,omitempty"` | ||||
| 	Packages                      *string `json:"packages,omitempty"` | ||||
| 	Pages                         *string `json:"pages,omitempty"` | ||||
| 	PullRequests                  *string `json:"pull_requests,omitempty"` | ||||
| 	RepositoryHooks               *string `json:"repository_hooks,omitempty"` | ||||
| 	RepositoryProjects            *string `json:"repository_projects,omitempty"` | ||||
| 	RepositoryPreReceiveHooks     *string `json:"repository_pre_receive_hooks,omitempty"` | ||||
| 	Secrets                       *string `json:"secrets,omitempty"` | ||||
| 	SecretScanningAlerts          *string `json:"secret_scanning_alerts,omitempty"` | ||||
| 	SecurityEvents                *string `json:"security_events,omitempty"` | ||||
| 	SingleFile                    *string `json:"single_file,omitempty"` | ||||
| 	Statuses                      *string `json:"statuses,omitempty"` | ||||
| 	TeamDiscussions               *string `json:"team_discussions,omitempty"` | ||||
| 	VulnerabilityAlerts           *string `json:"vulnerability_alerts,omitempty"` | ||||
| 	Workflows                     *string `json:"workflows,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // Installation represents a GitHub Apps installation.
 | ||||
| type Installation struct { | ||||
| 	ID                  *int64                   `json:"id,omitempty"` | ||||
| 	AppID               *int64                   `json:"app_id,omitempty"` | ||||
| 	TargetID            *int64                   `json:"target_id,omitempty"` | ||||
| 	Account             *User                    `json:"account,omitempty"` | ||||
| 	AccessTokensURL     *string                  `json:"access_tokens_url,omitempty"` | ||||
| 	RepositoriesURL     *string                  `json:"repositories_url,omitempty"` | ||||
| 	HTMLURL             *string                  `json:"html_url,omitempty"` | ||||
| 	TargetType          *string                  `json:"target_type,omitempty"` | ||||
| 	SingleFileName      *string                  `json:"single_file_name,omitempty"` | ||||
| 	RepositorySelection *string                  `json:"repository_selection,omitempty"` | ||||
| 	Events              []string                 `json:"events,omitempty"` | ||||
| 	Permissions         *InstallationPermissions `json:"permissions,omitempty"` | ||||
| 	CreatedAt           *Timestamp               `json:"created_at,omitempty"` | ||||
| 	UpdatedAt           *Timestamp               `json:"updated_at,omitempty"` | ||||
| 	ID                     *int64                   `json:"id,omitempty"` | ||||
| 	NodeID                 *string                  `json:"node_id,omitempty"` | ||||
| 	AppID                  *int64                   `json:"app_id,omitempty"` | ||||
| 	AppSlug                *string                  `json:"app_slug,omitempty"` | ||||
| 	TargetID               *int64                   `json:"target_id,omitempty"` | ||||
| 	Account                *User                    `json:"account,omitempty"` | ||||
| 	AccessTokensURL        *string                  `json:"access_tokens_url,omitempty"` | ||||
| 	RepositoriesURL        *string                  `json:"repositories_url,omitempty"` | ||||
| 	HTMLURL                *string                  `json:"html_url,omitempty"` | ||||
| 	TargetType             *string                  `json:"target_type,omitempty"` | ||||
| 	SingleFileName         *string                  `json:"single_file_name,omitempty"` | ||||
| 	RepositorySelection    *string                  `json:"repository_selection,omitempty"` | ||||
| 	Events                 []string                 `json:"events,omitempty"` | ||||
| 	SingleFilePaths        []string                 `json:"single_file_paths,omitempty"` | ||||
| 	Permissions            *InstallationPermissions `json:"permissions,omitempty"` | ||||
| 	CreatedAt              *Timestamp               `json:"created_at,omitempty"` | ||||
| 	UpdatedAt              *Timestamp               `json:"updated_at,omitempty"` | ||||
| 	HasMultipleSingleFiles *bool                    `json:"has_multiple_single_files,omitempty"` | ||||
| 	SuspendedBy            *User                    `json:"suspended_by,omitempty"` | ||||
| 	SuspendedAt            *Timestamp               `json:"suspended_at,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // Attachment represents a GitHub Apps attachment.
 | ||||
|  | @ -112,6 +126,13 @@ type Attachment struct { | |||
| 	Body  *string `json:"body,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ContentReference represents a reference to a URL in an issue or pull request.
 | ||||
| type ContentReference struct { | ||||
| 	ID        *int64  `json:"id,omitempty"` | ||||
| 	NodeID    *string `json:"node_id,omitempty"` | ||||
| 	Reference *string `json:"reference,omitempty"` | ||||
| } | ||||
| 
 | ||||
| func (i Installation) String() string { | ||||
| 	return Stringify(i) | ||||
| } | ||||
|  | @ -123,8 +144,8 @@ func (i Installation) String() string { | |||
| // You can find this on the settings page for your GitHub App
 | ||||
| // (e.g., https://github.com/settings/apps/:app_slug).
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/#get-the-authenticated-app
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/#get-an-app
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#get-the-authenticated-app
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#get-an-app
 | ||||
| func (s *AppsService) Get(ctx context.Context, appSlug string) (*App, *Response, error) { | ||||
| 	var u string | ||||
| 	if appSlug != "" { | ||||
|  | @ -138,9 +159,6 @@ func (s *AppsService) Get(ctx context.Context, appSlug string) (*App, *Response, | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	req.Header.Set("Accept", mediaTypeIntegrationPreview) | ||||
| 
 | ||||
| 	app := new(App) | ||||
| 	resp, err := s.client.Do(ctx, req, app) | ||||
| 	if err != nil { | ||||
|  | @ -152,7 +170,7 @@ func (s *AppsService) Get(ctx context.Context, appSlug string) (*App, *Response, | |||
| 
 | ||||
| // ListInstallations lists the installations that the current GitHub App has.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/#list-installations-for-the-authenticated-app
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#list-installations-for-the-authenticated-app
 | ||||
| func (s *AppsService) ListInstallations(ctx context.Context, opts *ListOptions) ([]*Installation, *Response, error) { | ||||
| 	u, err := addOptions("app/installations", opts) | ||||
| 	if err != nil { | ||||
|  | @ -164,9 +182,6 @@ func (s *AppsService) ListInstallations(ctx context.Context, opts *ListOptions) | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	req.Header.Set("Accept", mediaTypeIntegrationPreview) | ||||
| 
 | ||||
| 	var i []*Installation | ||||
| 	resp, err := s.client.Do(ctx, req, &i) | ||||
| 	if err != nil { | ||||
|  | @ -178,14 +193,14 @@ func (s *AppsService) ListInstallations(ctx context.Context, opts *ListOptions) | |||
| 
 | ||||
| // GetInstallation returns the specified installation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/#get-an-installation-for-the-authenticated-app
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#get-an-installation-for-the-authenticated-app
 | ||||
| func (s *AppsService) GetInstallation(ctx context.Context, id int64) (*Installation, *Response, error) { | ||||
| 	return s.getInstallation(ctx, fmt.Sprintf("app/installations/%v", id)) | ||||
| } | ||||
| 
 | ||||
| // ListUserInstallations lists installations that are accessible to the authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/installations/#list-app-installations-accessible-to-the-user-access-token
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#list-app-installations-accessible-to-the-user-access-token
 | ||||
| func (s *AppsService) ListUserInstallations(ctx context.Context, opts *ListOptions) ([]*Installation, *Response, error) { | ||||
| 	u, err := addOptions("user/installations", opts) | ||||
| 	if err != nil { | ||||
|  | @ -197,9 +212,6 @@ func (s *AppsService) ListUserInstallations(ctx context.Context, opts *ListOptio | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	req.Header.Set("Accept", mediaTypeIntegrationPreview) | ||||
| 
 | ||||
| 	var i struct { | ||||
| 		Installations []*Installation `json:"installations"` | ||||
| 	} | ||||
|  | @ -213,7 +225,7 @@ func (s *AppsService) ListUserInstallations(ctx context.Context, opts *ListOptio | |||
| 
 | ||||
| // SuspendInstallation suspends the specified installation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/#suspend-an-app-installation
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#suspend-an-app-installation
 | ||||
| func (s *AppsService) SuspendInstallation(ctx context.Context, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("app/installations/%v/suspended", id) | ||||
| 
 | ||||
|  | @ -227,7 +239,7 @@ func (s *AppsService) SuspendInstallation(ctx context.Context, id int64) (*Respo | |||
| 
 | ||||
| // UnsuspendInstallation unsuspends the specified installation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/#unsuspend-an-app-installation
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#unsuspend-an-app-installation
 | ||||
| func (s *AppsService) UnsuspendInstallation(ctx context.Context, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("app/installations/%v/suspended", id) | ||||
| 
 | ||||
|  | @ -241,7 +253,7 @@ func (s *AppsService) UnsuspendInstallation(ctx context.Context, id int64) (*Res | |||
| 
 | ||||
| // DeleteInstallation deletes the specified installation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/#delete-an-installation-for-the-authenticated-app
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#delete-an-installation-for-the-authenticated-app
 | ||||
| func (s *AppsService) DeleteInstallation(ctx context.Context, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("app/installations/%v", id) | ||||
| 
 | ||||
|  | @ -250,15 +262,12 @@ func (s *AppsService) DeleteInstallation(ctx context.Context, id int64) (*Respon | |||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	req.Header.Set("Accept", mediaTypeIntegrationPreview) | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // CreateInstallationToken creates a new installation token.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/#create-an-installation-access-token-for-an-app
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#create-an-installation-access-token-for-an-app
 | ||||
| func (s *AppsService) CreateInstallationToken(ctx context.Context, id int64, opts *InstallationTokenOptions) (*InstallationToken, *Response, error) { | ||||
| 	u := fmt.Sprintf("app/installations/%v/access_tokens", id) | ||||
| 
 | ||||
|  | @ -267,9 +276,6 @@ func (s *AppsService) CreateInstallationToken(ctx context.Context, id int64, opt | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	req.Header.Set("Accept", mediaTypeIntegrationPreview) | ||||
| 
 | ||||
| 	t := new(InstallationToken) | ||||
| 	resp, err := s.client.Do(ctx, req, t) | ||||
| 	if err != nil { | ||||
|  | @ -281,7 +287,7 @@ func (s *AppsService) CreateInstallationToken(ctx context.Context, id int64, opt | |||
| 
 | ||||
| // CreateAttachment creates a new attachment on user comment containing a url.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/installations/#create-a-content-attachment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#create-a-content-attachment
 | ||||
| func (s *AppsService) CreateAttachment(ctx context.Context, contentReferenceID int64, title, body string) (*Attachment, *Response, error) { | ||||
| 	u := fmt.Sprintf("content_references/%v/attachments", contentReferenceID) | ||||
| 	payload := &Attachment{Title: String(title), Body: String(body)} | ||||
|  | @ -291,7 +297,7 @@ func (s *AppsService) CreateAttachment(ctx context.Context, contentReferenceID i | |||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept headers when APIs fully launch.
 | ||||
| 	req.Header.Set("Accept", mediaTypeReactionsPreview) | ||||
| 	req.Header.Set("Accept", mediaTypeContentAttachmentsPreview) | ||||
| 
 | ||||
| 	m := &Attachment{} | ||||
| 	resp, err := s.client.Do(ctx, req, m) | ||||
|  | @ -304,14 +310,14 @@ func (s *AppsService) CreateAttachment(ctx context.Context, contentReferenceID i | |||
| 
 | ||||
| // FindOrganizationInstallation finds the organization's installation information.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/#get-an-organization-installation-for-the-authenticated-app
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#get-an-organization-installation-for-the-authenticated-app
 | ||||
| func (s *AppsService) FindOrganizationInstallation(ctx context.Context, org string) (*Installation, *Response, error) { | ||||
| 	return s.getInstallation(ctx, fmt.Sprintf("orgs/%v/installation", org)) | ||||
| } | ||||
| 
 | ||||
| // FindRepositoryInstallation finds the repository's installation information.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/#get-a-repository-installation-for-the-authenticated-app
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#get-a-repository-installation-for-the-authenticated-app
 | ||||
| func (s *AppsService) FindRepositoryInstallation(ctx context.Context, owner, repo string) (*Installation, *Response, error) { | ||||
| 	return s.getInstallation(ctx, fmt.Sprintf("repos/%v/%v/installation", owner, repo)) | ||||
| } | ||||
|  | @ -325,7 +331,7 @@ func (s *AppsService) FindRepositoryInstallationByID(ctx context.Context, id int | |||
| 
 | ||||
| // FindUserInstallation finds the user's installation information.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/#get-a-user-installation-for-the-authenticated-app
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#get-a-user-installation-for-the-authenticated-app
 | ||||
| func (s *AppsService) FindUserInstallation(ctx context.Context, user string) (*Installation, *Response, error) { | ||||
| 	return s.getInstallation(ctx, fmt.Sprintf("users/%v/installation", user)) | ||||
| } | ||||
|  | @ -336,9 +342,6 @@ func (s *AppsService) getInstallation(ctx context.Context, url string) (*Install | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	req.Header.Set("Accept", mediaTypeIntegrationPreview) | ||||
| 
 | ||||
| 	i := new(Installation) | ||||
| 	resp, err := s.client.Do(ctx, req, i) | ||||
| 	if err != nil { | ||||
|  | @ -8,12 +8,19 @@ package github | |||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 	"strings" | ||||
| ) | ||||
| 
 | ||||
| // ListRepositories represents the response from the list repos endpoints.
 | ||||
| type ListRepositories struct { | ||||
| 	TotalCount   *int          `json:"total_count,omitempty"` | ||||
| 	Repositories []*Repository `json:"repositories"` | ||||
| } | ||||
| 
 | ||||
| // ListRepos lists the repositories that are accessible to the authenticated installation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/installations/#list-repositories-accessible-to-the-app-installation
 | ||||
| func (s *AppsService) ListRepos(ctx context.Context, opts *ListOptions) ([]*Repository, *Response, error) { | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#list-repositories-accessible-to-the-app-installation
 | ||||
| func (s *AppsService) ListRepos(ctx context.Context, opts *ListOptions) (*ListRepositories, *Response, error) { | ||||
| 	u, err := addOptions("installation/repositories", opts) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
|  | @ -24,25 +31,29 @@ func (s *AppsService) ListRepos(ctx context.Context, opts *ListOptions) ([]*Repo | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	req.Header.Set("Accept", mediaTypeIntegrationPreview) | ||||
| 
 | ||||
| 	var r struct { | ||||
| 		Repositories []*Repository `json:"repositories"` | ||||
| 	// TODO: remove custom Accept headers when APIs fully launch.
 | ||||
| 	acceptHeaders := []string{ | ||||
| 		mediaTypeTopicsPreview, | ||||
| 		mediaTypeRepositoryVisibilityPreview, | ||||
| 		mediaTypeRepositoryTemplatePreview, | ||||
| 	} | ||||
| 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) | ||||
| 
 | ||||
| 	var r *ListRepositories | ||||
| 
 | ||||
| 	resp, err := s.client.Do(ctx, req, &r) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return r.Repositories, resp, nil | ||||
| 	return r, resp, nil | ||||
| } | ||||
| 
 | ||||
| // ListUserRepos lists repositories that are accessible
 | ||||
| // to the authenticated user for an installation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/installations/#list-repositories-accessible-to-the-user-access-token
 | ||||
| func (s *AppsService) ListUserRepos(ctx context.Context, id int64, opts *ListOptions) ([]*Repository, *Response, error) { | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#list-repositories-accessible-to-the-user-access-token
 | ||||
| func (s *AppsService) ListUserRepos(ctx context.Context, id int64, opts *ListOptions) (*ListRepositories, *Response, error) { | ||||
| 	u := fmt.Sprintf("user/installations/%v/repositories", id) | ||||
| 	u, err := addOptions(u, opts) | ||||
| 	if err != nil { | ||||
|  | @ -54,30 +65,32 @@ func (s *AppsService) ListUserRepos(ctx context.Context, id int64, opts *ListOpt | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	req.Header.Set("Accept", mediaTypeIntegrationPreview) | ||||
| 
 | ||||
| 	var r struct { | ||||
| 		Repositories []*Repository `json:"repositories"` | ||||
| 	// TODO: remove custom Accept headers when APIs fully launch.
 | ||||
| 	acceptHeaders := []string{ | ||||
| 		mediaTypeTopicsPreview, | ||||
| 		mediaTypeRepositoryVisibilityPreview, | ||||
| 		mediaTypeRepositoryTemplatePreview, | ||||
| 	} | ||||
| 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) | ||||
| 
 | ||||
| 	var r *ListRepositories | ||||
| 	resp, err := s.client.Do(ctx, req, &r) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return r.Repositories, resp, nil | ||||
| 	return r, resp, nil | ||||
| } | ||||
| 
 | ||||
| // AddRepository adds a single repository to an installation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/installations/#add-a-repository-to-an-app-installation
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#add-a-repository-to-an-app-installation
 | ||||
| func (s *AppsService) AddRepository(ctx context.Context, instID, repoID int64) (*Repository, *Response, error) { | ||||
| 	u := fmt.Sprintf("user/installations/%v/repositories/%v", instID, repoID) | ||||
| 	req, err := s.client.NewRequest("PUT", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	req.Header.Set("Accept", mediaTypeIntegrationPreview) | ||||
| 
 | ||||
| 	r := new(Repository) | ||||
| 	resp, err := s.client.Do(ctx, req, r) | ||||
|  | @ -90,21 +103,20 @@ func (s *AppsService) AddRepository(ctx context.Context, instID, repoID int64) ( | |||
| 
 | ||||
| // RemoveRepository removes a single repository from an installation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/installations/#remove-a-repository-from-an-app-installation
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#remove-a-repository-from-an-app-installation
 | ||||
| func (s *AppsService) RemoveRepository(ctx context.Context, instID, repoID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("user/installations/%v/repositories/%v", instID, repoID) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	req.Header.Set("Accept", mediaTypeIntegrationPreview) | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // RevokeInstallationToken revokes an installation token.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/installations/#revoke-an-installation-access-token
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#revoke-an-installation-access-token
 | ||||
| func (s *AppsService) RevokeInstallationToken(ctx context.Context) (*Response, error) { | ||||
| 	u := "installation/token" | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -10,10 +10,6 @@ import ( | |||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| const ( | ||||
| 	mediaTypeAppManifestPreview = "application/vnd.github.fury-preview+json" | ||||
| ) | ||||
| 
 | ||||
| // AppConfig describes the configuration of a GitHub App.
 | ||||
| type AppConfig struct { | ||||
| 	ID            *int64     `json:"id,omitempty"` | ||||
|  | @ -34,14 +30,13 @@ type AppConfig struct { | |||
| // CompleteAppManifest completes the App manifest handshake flow for the given
 | ||||
| // code.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/#create-a-github-app-from-a-manifest
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#create-a-github-app-from-a-manifest
 | ||||
| func (s *AppsService) CompleteAppManifest(ctx context.Context, code string) (*AppConfig, *Response, error) { | ||||
| 	u := fmt.Sprintf("app-manifests/%s/conversions", code) | ||||
| 	req, err := s.client.NewRequest("POST", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	req.Header.Set("Accept", mediaTypeAppManifestPreview) | ||||
| 
 | ||||
| 	cfg := new(AppConfig) | ||||
| 	resp, err := s.client.Do(ctx, req, cfg) | ||||
|  | @ -13,7 +13,7 @@ import ( | |||
| // MarketplaceService handles communication with the marketplace related
 | ||||
| // methods of the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/marketplace/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps#marketplace
 | ||||
| type MarketplaceService struct { | ||||
| 	client *Client | ||||
| 	// Stubbed controls whether endpoints that return stubbed data are used
 | ||||
|  | @ -21,7 +21,7 @@ type MarketplaceService struct { | |||
| 	// for testing your GitHub Apps. Stubbed data is hard-coded and will not
 | ||||
| 	// change based on actual subscriptions.
 | ||||
| 	//
 | ||||
| 	// GitHub API docs: https://developer.github.com/v3/apps/marketplace/
 | ||||
| 	// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps#testing-with-stubbed-endpoints
 | ||||
| 	Stubbed bool | ||||
| } | ||||
| 
 | ||||
|  | @ -30,6 +30,7 @@ type MarketplacePlan struct { | |||
| 	URL                 *string `json:"url,omitempty"` | ||||
| 	AccountsURL         *string `json:"accounts_url,omitempty"` | ||||
| 	ID                  *int64  `json:"id,omitempty"` | ||||
| 	Number              *int    `json:"number,omitempty"` | ||||
| 	Name                *string `json:"name,omitempty"` | ||||
| 	Description         *string `json:"description,omitempty"` | ||||
| 	MonthlyPriceInCents *int    `json:"monthly_price_in_cents,omitempty"` | ||||
|  | @ -46,13 +47,13 @@ type MarketplacePlan struct { | |||
| // MarketplacePurchase represents a GitHub Apps Marketplace Purchase.
 | ||||
| type MarketplacePurchase struct { | ||||
| 	// BillingCycle can be one of the values "yearly", "monthly" or nil.
 | ||||
| 	BillingCycle    *string                 `json:"billing_cycle,omitempty"` | ||||
| 	NextBillingDate *Timestamp              `json:"next_billing_date,omitempty"` | ||||
| 	UnitCount       *int                    `json:"unit_count,omitempty"` | ||||
| 	Plan            *MarketplacePlan        `json:"plan,omitempty"` | ||||
| 	Account         *MarketplacePlanAccount `json:"account,omitempty"` | ||||
| 	OnFreeTrial     *bool                   `json:"on_free_trial,omitempty"` | ||||
| 	FreeTrialEndsOn *Timestamp              `json:"free_trial_ends_on,omitempty"` | ||||
| 	BillingCycle    *string          `json:"billing_cycle,omitempty"` | ||||
| 	NextBillingDate *Timestamp       `json:"next_billing_date,omitempty"` | ||||
| 	UnitCount       *int             `json:"unit_count,omitempty"` | ||||
| 	Plan            *MarketplacePlan `json:"plan,omitempty"` | ||||
| 	OnFreeTrial     *bool            `json:"on_free_trial,omitempty"` | ||||
| 	FreeTrialEndsOn *Timestamp       `json:"free_trial_ends_on,omitempty"` | ||||
| 	UpdatedAt       *Timestamp       `json:"updated_at,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // MarketplacePendingChange represents a pending change to a GitHub Apps Marketplace Plan.
 | ||||
|  | @ -68,9 +69,7 @@ type MarketplacePlanAccount struct { | |||
| 	URL                      *string                   `json:"url,omitempty"` | ||||
| 	Type                     *string                   `json:"type,omitempty"` | ||||
| 	ID                       *int64                    `json:"id,omitempty"` | ||||
| 	NodeID                   *string                   `json:"node_id,omitempty"` | ||||
| 	Login                    *string                   `json:"login,omitempty"` | ||||
| 	Email                    *string                   `json:"email,omitempty"` | ||||
| 	OrganizationBillingEmail *string                   `json:"organization_billing_email,omitempty"` | ||||
| 	MarketplacePurchase      *MarketplacePurchase      `json:"marketplace_purchase,omitempty"` | ||||
| 	MarketplacePendingChange *MarketplacePendingChange `json:"marketplace_pending_change,omitempty"` | ||||
|  | @ -78,7 +77,7 @@ type MarketplacePlanAccount struct { | |||
| 
 | ||||
| // ListPlans lists all plans for your Marketplace listing.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/marketplace/#list-all-plans-for-your-marketplace-listing
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps#list-plans
 | ||||
| func (s *MarketplaceService) ListPlans(ctx context.Context, opts *ListOptions) ([]*MarketplacePlan, *Response, error) { | ||||
| 	uri := s.marketplaceURI("plans") | ||||
| 	u, err := addOptions(uri, opts) | ||||
|  | @ -102,7 +101,7 @@ func (s *MarketplaceService) ListPlans(ctx context.Context, opts *ListOptions) ( | |||
| 
 | ||||
| // ListPlanAccountsForPlan lists all GitHub accounts (user or organization) on a specific plan.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/marketplace/#list-all-github-accounts-user-or-organization-on-a-specific-plan
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/apps#list-accounts-for-a-plan
 | ||||
| func (s *MarketplaceService) ListPlanAccountsForPlan(ctx context.Context, planID int64, opts *ListOptions) ([]*MarketplacePlanAccount, *Response, error) { | ||||
| 	uri := s.marketplaceURI(fmt.Sprintf("plans/%v/accounts", planID)) | ||||
| 	u, err := addOptions(uri, opts) | ||||
|  | @ -124,34 +123,30 @@ func (s *MarketplaceService) ListPlanAccountsForPlan(ctx context.Context, planID | |||
| 	return accounts, resp, nil | ||||
| } | ||||
| 
 | ||||
| // ListPlanAccountsForAccount lists all GitHub accounts (user or organization) associated with an account.
 | ||||
| // GetPlanAccountForAccount get GitHub account (user or organization) associated with an account.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/marketplace/#check-if-a-github-account-is-associated-with-any-marketplace-listing
 | ||||
| func (s *MarketplaceService) ListPlanAccountsForAccount(ctx context.Context, accountID int64, opts *ListOptions) ([]*MarketplacePlanAccount, *Response, error) { | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/apps#get-a-subscription-plan-for-an-account
 | ||||
| func (s *MarketplaceService) GetPlanAccountForAccount(ctx context.Context, accountID int64) (*MarketplacePlanAccount, *Response, error) { | ||||
| 	uri := s.marketplaceURI(fmt.Sprintf("accounts/%v", accountID)) | ||||
| 	u, err := addOptions(uri, opts) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", uri, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	var accounts []*MarketplacePlanAccount | ||||
| 	resp, err := s.client.Do(ctx, req, &accounts) | ||||
| 	var account *MarketplacePlanAccount | ||||
| 	resp, err := s.client.Do(ctx, req, &account) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return accounts, resp, nil | ||||
| 	return account, resp, nil | ||||
| } | ||||
| 
 | ||||
| // ListMarketplacePurchasesForUser lists all GitHub marketplace purchases made by a user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/marketplace/#list-subscriptions-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/marketplace/#list-subscriptions-for-the-authenticated-user-stubbed
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#list-subscriptions-for-the-authenticated-user-stubbed
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#list-subscriptions-for-the-authenticated-user
 | ||||
| func (s *MarketplaceService) ListMarketplacePurchasesForUser(ctx context.Context, opts *ListOptions) ([]*MarketplacePurchase, *Response, error) { | ||||
| 	uri := "user/marketplace_purchases" | ||||
| 	if s.Stubbed { | ||||
|  | @ -12,7 +12,7 @@ import ( | |||
| 
 | ||||
| // Scope models a GitHub authorization scope.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/oauth/#scopes
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/oauth/#scopes
 | ||||
| type Scope string | ||||
| 
 | ||||
| // This is the set of scopes for GitHub API V3
 | ||||
|  | @ -50,7 +50,7 @@ const ( | |||
| // This service requires HTTP Basic Authentication; it cannot be accessed using
 | ||||
| // an OAuth token.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/oauth_authorizations/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/oauth_authorizations/
 | ||||
| type AuthorizationsService service | ||||
| 
 | ||||
| // Authorization represents an individual GitHub authorization.
 | ||||
|  | @ -121,7 +121,7 @@ func (a AuthorizationRequest) String() string { | |||
| // fields. That is, you may provide only one of "Scopes", or "AddScopes", or
 | ||||
| // "RemoveScopes".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/oauth_authorizations/#update-an-existing-authorization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/oauth_authorizations/#update-an-existing-authorization
 | ||||
| type AuthorizationUpdateRequest struct { | ||||
| 	Scopes       []string `json:"scopes,omitempty"` | ||||
| 	AddScopes    []string `json:"add_scopes,omitempty"` | ||||
|  | @ -143,7 +143,7 @@ func (a AuthorizationUpdateRequest) String() string { | |||
| //
 | ||||
| // The returned Authorization.User field will be populated.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/oauth_applications/#check-a-token
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#check-a-token
 | ||||
| func (s *AuthorizationsService) Check(ctx context.Context, clientID, accessToken string) (*Authorization, *Response, error) { | ||||
| 	u := fmt.Sprintf("applications/%v/token", clientID) | ||||
| 
 | ||||
|  | @ -176,7 +176,7 @@ func (s *AuthorizationsService) Check(ctx context.Context, clientID, accessToken | |||
| //
 | ||||
| // The returned Authorization.User field will be populated.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/oauth_applications/#reset-a-token
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#reset-a-token
 | ||||
| func (s *AuthorizationsService) Reset(ctx context.Context, clientID, accessToken string) (*Authorization, *Response, error) { | ||||
| 	u := fmt.Sprintf("applications/%v/token", clientID) | ||||
| 
 | ||||
|  | @ -205,7 +205,7 @@ func (s *AuthorizationsService) Reset(ctx context.Context, clientID, accessToken | |||
| // username is the OAuth application clientID, and the password is its
 | ||||
| // clientSecret. Invalid tokens will return a 404 Not Found.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/oauth_applications/#delete-an-app-token
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#delete-an-app-token
 | ||||
| func (s *AuthorizationsService) Revoke(ctx context.Context, clientID, accessToken string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("applications/%v/token", clientID) | ||||
| 
 | ||||
|  | @ -226,7 +226,7 @@ func (s *AuthorizationsService) Revoke(ctx context.Context, clientID, accessToke | |||
| // grant will also delete all OAuth tokens associated with the application for
 | ||||
| // the user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/apps/oauth_applications/#delete-an-app-authorization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#delete-an-app-authorization
 | ||||
| func (s *AuthorizationsService) DeleteGrant(ctx context.Context, clientID, accessToken string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("applications/%v/grant", clientID) | ||||
| 
 | ||||
|  | @ -0,0 +1,131 @@ | |||
| // Copyright 2021 The go-github AUTHORS. All rights reserved.
 | ||||
| //
 | ||||
| // Use of this source code is governed by a BSD-style
 | ||||
| // license that can be found in the LICENSE file.
 | ||||
| 
 | ||||
| package github | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| // BillingService provides access to the billing related functions
 | ||||
| // in the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/billing
 | ||||
| type BillingService service | ||||
| 
 | ||||
| // ActionBilling represents a GitHub Action billing.
 | ||||
| type ActionBilling struct { | ||||
| 	TotalMinutesUsed     int                  `json:"total_minutes_used"` | ||||
| 	TotalPaidMinutesUsed int                  `json:"total_paid_minutes_used"` | ||||
| 	IncludedMinutes      int                  `json:"included_minutes"` | ||||
| 	MinutesUsedBreakdown MinutesUsedBreakdown `json:"minutes_used_breakdown"` | ||||
| } | ||||
| 
 | ||||
| type MinutesUsedBreakdown struct { | ||||
| 	Ubuntu  int `json:"UBUNTU"` | ||||
| 	MacOS   int `json:"MACOS"` | ||||
| 	Windows int `json:"WINDOWS"` | ||||
| } | ||||
| 
 | ||||
| // PackageBilling represents a GitHub Package billing.
 | ||||
| type PackageBilling struct { | ||||
| 	TotalGigabytesBandwidthUsed     int `json:"total_gigabytes_bandwidth_used"` | ||||
| 	TotalPaidGigabytesBandwidthUsed int `json:"total_paid_gigabytes_bandwidth_used"` | ||||
| 	IncludedGigabytesBandwidth      int `json:"included_gigabytes_bandwidth"` | ||||
| } | ||||
| 
 | ||||
| // StorageBilling represents a GitHub Storage billing.
 | ||||
| type StorageBilling struct { | ||||
| 	DaysLeftInBillingCycle       int `json:"days_left_in_billing_cycle"` | ||||
| 	EstimatedPaidStorageForMonth int `json:"estimated_paid_storage_for_month"` | ||||
| 	EstimatedStorageForMonth     int `json:"estimated_storage_for_month"` | ||||
| } | ||||
| 
 | ||||
| // GetActionsBillingOrg returns the summary of the free and paid GitHub Actions minutes used for an Org.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/billing#get-github-actions-billing-for-an-organization
 | ||||
| func (s *BillingService) GetActionsBillingOrg(ctx context.Context, org string) (*ActionBilling, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/settings/billing/actions", org) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	actionsOrgBilling := new(ActionBilling) | ||||
| 	resp, err := s.client.Do(ctx, req, actionsOrgBilling) | ||||
| 	return actionsOrgBilling, resp, err | ||||
| } | ||||
| 
 | ||||
| // GetPackagesBillingOrg returns the free and paid storage used for GitHub Packages in gigabytes for an Org.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/billing#get-github-packages-billing-for-an-organization
 | ||||
| func (s *BillingService) GetPackagesBillingOrg(ctx context.Context, org string) (*PackageBilling, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/settings/billing/packages", org) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	packagesOrgBilling := new(PackageBilling) | ||||
| 	resp, err := s.client.Do(ctx, req, packagesOrgBilling) | ||||
| 	return packagesOrgBilling, resp, err | ||||
| } | ||||
| 
 | ||||
| // GetStorageBillingOrg returns the estimated paid and estimated total storage used for GitHub Actions
 | ||||
| // and GitHub Packages in gigabytes for an Org.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/billing#get-shared-storage-billing-for-an-organization
 | ||||
| func (s *BillingService) GetStorageBillingOrg(ctx context.Context, org string) (*StorageBilling, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/settings/billing/shared-storage", org) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	storageOrgBilling := new(StorageBilling) | ||||
| 	resp, err := s.client.Do(ctx, req, storageOrgBilling) | ||||
| 	return storageOrgBilling, resp, err | ||||
| } | ||||
| 
 | ||||
| // GetActionsBillingUser returns the summary of the free and paid GitHub Actions minutes used for a user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/billing#get-github-actions-billing-for-a-user
 | ||||
| func (s *BillingService) GetActionsBillingUser(ctx context.Context, user string) (*ActionBilling, *Response, error) { | ||||
| 	u := fmt.Sprintf("users/%v/settings/billing/actions", user) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	actionsUserBilling := new(ActionBilling) | ||||
| 	resp, err := s.client.Do(ctx, req, actionsUserBilling) | ||||
| 	return actionsUserBilling, resp, err | ||||
| } | ||||
| 
 | ||||
| // GetPackagesBillingUser returns the free and paid storage used for GitHub Packages in gigabytes for a user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/billing#get-github-packages-billing-for-an-organization
 | ||||
| func (s *BillingService) GetPackagesBillingUser(ctx context.Context, user string) (*PackageBilling, *Response, error) { | ||||
| 	u := fmt.Sprintf("users/%v/settings/billing/packages", user) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	packagesUserBilling := new(PackageBilling) | ||||
| 	resp, err := s.client.Do(ctx, req, packagesUserBilling) | ||||
| 	return packagesUserBilling, resp, err | ||||
| } | ||||
| 
 | ||||
| // GetStorageBillingUser returns the estimated paid and estimated total storage used for GitHub Actions
 | ||||
| // and GitHub Packages in gigabytes for a user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/billing#get-shared-storage-billing-for-a-user
 | ||||
| func (s *BillingService) GetStorageBillingUser(ctx context.Context, user string) (*StorageBilling, *Response, error) { | ||||
| 	u := fmt.Sprintf("users/%v/settings/billing/shared-storage", user) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	storageUserBilling := new(StorageBilling) | ||||
| 	resp, err := s.client.Do(ctx, req, storageUserBilling) | ||||
| 	return storageUserBilling, resp, err | ||||
| } | ||||
|  | @ -13,7 +13,7 @@ import ( | |||
| // ChecksService provides access to the Checks API in the
 | ||||
| // GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/checks/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/checks/
 | ||||
| type ChecksService service | ||||
| 
 | ||||
| // CheckRun represents a GitHub check run on a repository associated with a GitHub app.
 | ||||
|  | @ -96,7 +96,7 @@ func (c CheckSuite) String() string { | |||
| 
 | ||||
| // GetCheckRun gets a check-run for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/checks/runs/#get-a-check-run
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/checks/#get-a-check-run
 | ||||
| func (s *ChecksService) GetCheckRun(ctx context.Context, owner, repo string, checkRunID int64) (*CheckRun, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/check-runs/%v", owner, repo, checkRunID) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -104,8 +104,6 @@ func (s *ChecksService) GetCheckRun(ctx context.Context, owner, repo string, che | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req.Header.Set("Accept", mediaTypeCheckRunsPreview) | ||||
| 
 | ||||
| 	checkRun := new(CheckRun) | ||||
| 	resp, err := s.client.Do(ctx, req, checkRun) | ||||
| 	if err != nil { | ||||
|  | @ -117,7 +115,7 @@ func (s *ChecksService) GetCheckRun(ctx context.Context, owner, repo string, che | |||
| 
 | ||||
| // GetCheckSuite gets a single check suite.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/checks/suites/#get-a-check-suite
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/checks/#get-a-check-suite
 | ||||
| func (s *ChecksService) GetCheckSuite(ctx context.Context, owner, repo string, checkSuiteID int64) (*CheckSuite, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/check-suites/%v", owner, repo, checkSuiteID) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -125,8 +123,6 @@ func (s *ChecksService) GetCheckSuite(ctx context.Context, owner, repo string, c | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req.Header.Set("Accept", mediaTypeCheckRunsPreview) | ||||
| 
 | ||||
| 	checkSuite := new(CheckSuite) | ||||
| 	resp, err := s.client.Do(ctx, req, checkSuite) | ||||
| 	if err != nil { | ||||
|  | @ -159,7 +155,7 @@ type CheckRunAction struct { | |||
| 
 | ||||
| // CreateCheckRun creates a check run for repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/checks/runs/#create-a-check-run
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/checks/#create-a-check-run
 | ||||
| func (s *ChecksService) CreateCheckRun(ctx context.Context, owner, repo string, opts CreateCheckRunOptions) (*CheckRun, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/check-runs", owner, repo) | ||||
| 	req, err := s.client.NewRequest("POST", u, opts) | ||||
|  | @ -167,8 +163,6 @@ func (s *ChecksService) CreateCheckRun(ctx context.Context, owner, repo string, | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req.Header.Set("Accept", mediaTypeCheckRunsPreview) | ||||
| 
 | ||||
| 	checkRun := new(CheckRun) | ||||
| 	resp, err := s.client.Do(ctx, req, checkRun) | ||||
| 	if err != nil { | ||||
|  | @ -181,7 +175,6 @@ func (s *ChecksService) CreateCheckRun(ctx context.Context, owner, repo string, | |||
| // UpdateCheckRunOptions sets up parameters needed to update a CheckRun.
 | ||||
| type UpdateCheckRunOptions struct { | ||||
| 	Name        string            `json:"name"`                   // The name of the check (e.g., "code-coverage"). (Required.)
 | ||||
| 	HeadSHA     *string           `json:"head_sha,omitempty"`     // The SHA of the commit. (Optional.)
 | ||||
| 	DetailsURL  *string           `json:"details_url,omitempty"`  // The URL of the integrator's site that has the full details of the check. (Optional.)
 | ||||
| 	ExternalID  *string           `json:"external_id,omitempty"`  // A reference for the run on the integrator's system. (Optional.)
 | ||||
| 	Status      *string           `json:"status,omitempty"`       // The current status. Can be one of "queued", "in_progress", or "completed". Default: "queued". (Optional.)
 | ||||
|  | @ -193,7 +186,7 @@ type UpdateCheckRunOptions struct { | |||
| 
 | ||||
| // UpdateCheckRun updates a check run for a specific commit in a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/checks/runs/#update-a-check-run
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/checks/#update-a-check-run
 | ||||
| func (s *ChecksService) UpdateCheckRun(ctx context.Context, owner, repo string, checkRunID int64, opts UpdateCheckRunOptions) (*CheckRun, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/check-runs/%v", owner, repo, checkRunID) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, opts) | ||||
|  | @ -201,8 +194,6 @@ func (s *ChecksService) UpdateCheckRun(ctx context.Context, owner, repo string, | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req.Header.Set("Accept", mediaTypeCheckRunsPreview) | ||||
| 
 | ||||
| 	checkRun := new(CheckRun) | ||||
| 	resp, err := s.client.Do(ctx, req, checkRun) | ||||
| 	if err != nil { | ||||
|  | @ -214,7 +205,7 @@ func (s *ChecksService) UpdateCheckRun(ctx context.Context, owner, repo string, | |||
| 
 | ||||
| // ListCheckRunAnnotations lists the annotations for a check run.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/checks/runs/#list-check-run-annotations
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/checks/#list-check-run-annotations
 | ||||
| func (s *ChecksService) ListCheckRunAnnotations(ctx context.Context, owner, repo string, checkRunID int64, opts *ListOptions) ([]*CheckRunAnnotation, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/check-runs/%v/annotations", owner, repo, checkRunID) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -227,8 +218,6 @@ func (s *ChecksService) ListCheckRunAnnotations(ctx context.Context, owner, repo | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req.Header.Set("Accept", mediaTypeCheckRunsPreview) | ||||
| 
 | ||||
| 	var checkRunAnnotations []*CheckRunAnnotation | ||||
| 	resp, err := s.client.Do(ctx, req, &checkRunAnnotations) | ||||
| 	if err != nil { | ||||
|  | @ -255,7 +244,7 @@ type ListCheckRunsResults struct { | |||
| 
 | ||||
| // ListCheckRunsForRef lists check runs for a specific ref.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/checks/runs/#list-check-runs-for-a-git-reference
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/checks/#list-check-runs-for-a-git-reference
 | ||||
| func (s *ChecksService) ListCheckRunsForRef(ctx context.Context, owner, repo, ref string, opts *ListCheckRunsOptions) (*ListCheckRunsResults, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/commits/%v/check-runs", owner, repo, refURLEscape(ref)) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -268,8 +257,6 @@ func (s *ChecksService) ListCheckRunsForRef(ctx context.Context, owner, repo, re | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req.Header.Set("Accept", mediaTypeCheckRunsPreview) | ||||
| 
 | ||||
| 	var checkRunResults *ListCheckRunsResults | ||||
| 	resp, err := s.client.Do(ctx, req, &checkRunResults) | ||||
| 	if err != nil { | ||||
|  | @ -281,7 +268,7 @@ func (s *ChecksService) ListCheckRunsForRef(ctx context.Context, owner, repo, re | |||
| 
 | ||||
| // ListCheckRunsCheckSuite lists check runs for a check suite.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/checks/runs/#list-check-runs-in-a-check-suite
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/checks/#list-check-runs-in-a-check-suite
 | ||||
| func (s *ChecksService) ListCheckRunsCheckSuite(ctx context.Context, owner, repo string, checkSuiteID int64, opts *ListCheckRunsOptions) (*ListCheckRunsResults, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/check-suites/%v/check-runs", owner, repo, checkSuiteID) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -294,8 +281,6 @@ func (s *ChecksService) ListCheckRunsCheckSuite(ctx context.Context, owner, repo | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req.Header.Set("Accept", mediaTypeCheckRunsPreview) | ||||
| 
 | ||||
| 	var checkRunResults *ListCheckRunsResults | ||||
| 	resp, err := s.client.Do(ctx, req, &checkRunResults) | ||||
| 	if err != nil { | ||||
|  | @ -321,7 +306,7 @@ type ListCheckSuiteResults struct { | |||
| 
 | ||||
| // ListCheckSuitesForRef lists check suite for a specific ref.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/checks/suites/#list-check-suites-for-a-git-reference
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/checks/#list-check-suites-for-a-git-reference
 | ||||
| func (s *ChecksService) ListCheckSuitesForRef(ctx context.Context, owner, repo, ref string, opts *ListCheckSuiteOptions) (*ListCheckSuiteResults, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/commits/%v/check-suites", owner, repo, refURLEscape(ref)) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -334,8 +319,6 @@ func (s *ChecksService) ListCheckSuitesForRef(ctx context.Context, owner, repo, | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req.Header.Set("Accept", mediaTypeCheckRunsPreview) | ||||
| 
 | ||||
| 	var checkSuiteResults *ListCheckSuiteResults | ||||
| 	resp, err := s.client.Do(ctx, req, &checkSuiteResults) | ||||
| 	if err != nil { | ||||
|  | @ -369,7 +352,7 @@ type PreferenceList struct { | |||
| 
 | ||||
| // SetCheckSuitePreferences changes the default automatic flow when creating check suites.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/checks/suites/#update-repository-preferences-for-check-suites
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/checks/#update-repository-preferences-for-check-suites
 | ||||
| func (s *ChecksService) SetCheckSuitePreferences(ctx context.Context, owner, repo string, opts CheckSuitePreferenceOptions) (*CheckSuitePreferenceResults, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/check-suites/preferences", owner, repo) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, opts) | ||||
|  | @ -377,8 +360,6 @@ func (s *ChecksService) SetCheckSuitePreferences(ctx context.Context, owner, rep | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req.Header.Set("Accept", mediaTypeCheckRunsPreview) | ||||
| 
 | ||||
| 	var checkSuitePrefResults *CheckSuitePreferenceResults | ||||
| 	resp, err := s.client.Do(ctx, req, &checkSuitePrefResults) | ||||
| 	if err != nil { | ||||
|  | @ -396,7 +377,7 @@ type CreateCheckSuiteOptions struct { | |||
| 
 | ||||
| // CreateCheckSuite manually creates a check suite for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/checks/suites/#create-a-check-suite
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/checks/#create-a-check-suite
 | ||||
| func (s *ChecksService) CreateCheckSuite(ctx context.Context, owner, repo string, opts CreateCheckSuiteOptions) (*CheckSuite, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/check-suites", owner, repo) | ||||
| 	req, err := s.client.NewRequest("POST", u, opts) | ||||
|  | @ -404,8 +385,6 @@ func (s *ChecksService) CreateCheckSuite(ctx context.Context, owner, repo string | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req.Header.Set("Accept", mediaTypeCheckRunsPreview) | ||||
| 
 | ||||
| 	checkSuite := new(CheckSuite) | ||||
| 	resp, err := s.client.Do(ctx, req, checkSuite) | ||||
| 	if err != nil { | ||||
|  | @ -417,7 +396,7 @@ func (s *ChecksService) CreateCheckSuite(ctx context.Context, owner, repo string | |||
| 
 | ||||
| // ReRequestCheckSuite triggers GitHub to rerequest an existing check suite, without pushing new code to a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/checks/suites/#rerequest-a-check-suite
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/checks/#rerequest-a-check-suite
 | ||||
| func (s *ChecksService) ReRequestCheckSuite(ctx context.Context, owner, repo string, checkSuiteID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/check-suites/%v/rerequest", owner, repo, checkSuiteID) | ||||
| 
 | ||||
|  | @ -426,8 +405,6 @@ func (s *ChecksService) ReRequestCheckSuite(ctx context.Context, owner, repo str | |||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req.Header.Set("Accept", mediaTypeCheckRunsPreview) | ||||
| 
 | ||||
| 	resp, err := s.client.Do(ctx, req, nil) | ||||
| 	return resp, err | ||||
| } | ||||
|  | @ -15,14 +15,26 @@ import ( | |||
| // CodeScanningService handles communication with the code scanning related
 | ||||
| // methods of the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/code-scanning/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/code-scanning/
 | ||||
| type CodeScanningService service | ||||
| 
 | ||||
| // Tool represents the tool used to generate a GitHub Code Scanning Alert.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/code-scanning#list-code-scanning-alerts-for-a-repository
 | ||||
| type Tool struct { | ||||
| 	Name    *string `json:"name,omitempty"` | ||||
| 	GUID    *string `json:"guid,omitempty"` | ||||
| 	Version *string `json:"version,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // Alert represents an individual GitHub Code Scanning Alert on a single repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/code-scanning#list-code-scanning-alerts-for-a-repository
 | ||||
| type Alert struct { | ||||
| 	RuleID          *string    `json:"rule_id,omitempty"` | ||||
| 	RuleSeverity    *string    `json:"rule_severity,omitempty"` | ||||
| 	RuleDescription *string    `json:"rule_description,omitempty"` | ||||
| 	Tool            *string    `json:"tool,omitempty"` | ||||
| 	Tool            *Tool      `json:"tool,omitempty"` | ||||
| 	CreatedAt       *Timestamp `json:"created_at,omitempty"` | ||||
| 	Open            *bool      `json:"open,omitempty"` | ||||
| 	ClosedBy        *User      `json:"closed_by,omitempty"` | ||||
|  | @ -69,7 +81,7 @@ type AlertListOptions struct { | |||
| // You must use an access token with the security_events scope to use this endpoint. GitHub Apps must have the security_events
 | ||||
| // read permission to use this endpoint.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/code-scanning/#list-code-scanning-alerts-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/code-scanning/#list-code-scanning-alerts-for-a-repository
 | ||||
| func (s *CodeScanningService) ListAlertsForRepo(ctx context.Context, owner, repo string, opts *AlertListOptions) ([]*Alert, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/code-scanning/alerts", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -98,7 +110,7 @@ func (s *CodeScanningService) ListAlertsForRepo(ctx context.Context, owner, repo | |||
| //
 | ||||
| // The security alert_id is the number at the end of the security alert's URL.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/code-scanning/#get-a-code-scanning-alert
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/code-scanning/#get-a-code-scanning-alert
 | ||||
| func (s *CodeScanningService) GetAlert(ctx context.Context, owner, repo string, id int64) (*Alert, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/code-scanning/alerts/%v", owner, repo, id) | ||||
| 
 | ||||
|  | @ -8,7 +8,7 @@ Package github provides a client for using the GitHub API. | |||
| 
 | ||||
| Usage: | ||||
| 
 | ||||
| 	import "github.com/google/go-github/v32/github"	// with go modules enabled (GO111MODULE=on or outside GOPATH)
 | ||||
| 	import "github.com/google/go-github/v37/github"	// with go modules enabled (GO111MODULE=on or outside GOPATH)
 | ||||
| 	import "github.com/google/go-github/github"     // with go modules disabled
 | ||||
| 
 | ||||
| Construct a new GitHub client, then use the various services on the client to | ||||
|  | @ -29,7 +29,7 @@ Some API methods have optional parameters that can be passed. For example: | |||
| 
 | ||||
| The services of a client divide the API into logical chunks and correspond to | ||||
| the structure of the GitHub API documentation at | ||||
| https://developer.github.com/v3/.
 | ||||
| https://docs.github.com/en/free-pro-team@latest/rest/reference/.
 | ||||
| 
 | ||||
| NOTE: Using the https://godoc.org/context package, one can easily
 | ||||
| pass cancelation signals and deadlines to various services of the client for | ||||
|  | @ -112,7 +112,7 @@ To detect an API rate limit error, you can check if its type is *github.RateLimi | |||
| 	} | ||||
| 
 | ||||
| Learn more about GitHub rate limiting at | ||||
| https://developer.github.com/v3/#rate-limiting.
 | ||||
| https://docs.github.com/en/free-pro-team@latest/rest/reference/#rate-limiting.
 | ||||
| 
 | ||||
| Accepted Status | ||||
| 
 | ||||
|  | @ -138,7 +138,7 @@ instead designed to work with a caching http.Transport. We recommend using | |||
| https://github.com/gregjones/httpcache for that.
 | ||||
| 
 | ||||
| Learn more about GitHub conditional requests at | ||||
| https://developer.github.com/v3/#conditional-requests.
 | ||||
| https://docs.github.com/en/free-pro-team@latest/rest/reference/#conditional-requests.
 | ||||
| 
 | ||||
| Creating and Updating Resources | ||||
| 
 | ||||
|  | @ -0,0 +1,12 @@ | |||
| // Copyright 2020 The go-github AUTHORS. All rights reserved.
 | ||||
| //
 | ||||
| // Use of this source code is governed by a BSD-style
 | ||||
| // license that can be found in the LICENSE file.
 | ||||
| 
 | ||||
| package github | ||||
| 
 | ||||
| // EnterpriseService provides access to the enterprise related functions
 | ||||
| // in the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/enterprise-admin/
 | ||||
| type EnterpriseService service | ||||
							
								
								
									
										69
									
								
								vendor/github.com/google/go-github/v37/github/enterprise_actions_runners.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							
							
						
						
									
										69
									
								
								vendor/github.com/google/go-github/v37/github/enterprise_actions_runners.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							|  | @ -0,0 +1,69 @@ | |||
| // Copyright 2020 The go-github AUTHORS. All rights reserved.
 | ||||
| //
 | ||||
| // Use of this source code is governed by a BSD-style
 | ||||
| // license that can be found in the LICENSE file.
 | ||||
| 
 | ||||
| package github | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| // CreateRegistrationToken creates a token that can be used to add a self-hosted runner.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/enterprise-admin/#create-a-registration-token-for-an-enterprise
 | ||||
| func (s *EnterpriseService) CreateRegistrationToken(ctx context.Context, enterprise string) (*RegistrationToken, *Response, error) { | ||||
| 	u := fmt.Sprintf("enterprises/%v/actions/runners/registration-token", enterprise) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("POST", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	registrationToken := new(RegistrationToken) | ||||
| 	resp, err := s.client.Do(ctx, req, registrationToken) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return registrationToken, resp, nil | ||||
| } | ||||
| 
 | ||||
| // ListRunners lists all the self-hosted runners for a enterprise.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/enterprise-admin/#list-self-hosted-runners-for-an-enterprise
 | ||||
| func (s *EnterpriseService) ListRunners(ctx context.Context, enterprise string, opts *ListOptions) (*Runners, *Response, error) { | ||||
| 	u := fmt.Sprintf("enterprises/%v/actions/runners", enterprise) | ||||
| 	u, err := addOptions(u, opts) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	runners := &Runners{} | ||||
| 	resp, err := s.client.Do(ctx, req, &runners) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return runners, resp, nil | ||||
| } | ||||
| 
 | ||||
| // RemoveRunner forces the removal of a self-hosted runner from an enterprise using the runner id.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/enterprise-admin/#delete-a-self-hosted-runner-from-an-enterprise
 | ||||
| func (s *EnterpriseService) RemoveRunner(ctx context.Context, enterprise string, runnerID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("enterprises/%v/actions/runners/%v", enterprise, runnerID) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
							
								
								
									
										35
									
								
								vendor/github.com/google/go-github/v37/github/enterprise_audit_log.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							
							
						
						
									
										35
									
								
								vendor/github.com/google/go-github/v37/github/enterprise_audit_log.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							|  | @ -0,0 +1,35 @@ | |||
| // Copyright 2021 The go-github AUTHORS. All rights reserved.
 | ||||
| //
 | ||||
| // Use of this source code is governed by a BSD-style
 | ||||
| // license that can be found in the LICENSE file.
 | ||||
| 
 | ||||
| package github | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| // GetAuditLog gets the audit-log entries for an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/enterprise-admin#get-the-audit-log-for-an-enterprise
 | ||||
| func (s *EnterpriseService) GetAuditLog(ctx context.Context, enterprise string, opts *GetAuditLogOptions) ([]*AuditEntry, *Response, error) { | ||||
| 	u := fmt.Sprintf("enterprises/%v/audit-log", enterprise) | ||||
| 	u, err := addOptions(u, opts) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	var auditEntries []*AuditEntry | ||||
| 	resp, err := s.client.Do(ctx, req, &auditEntries) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return auditEntries, resp, nil | ||||
| } | ||||
|  | @ -36,6 +36,8 @@ func (e *Event) ParsePayload() (payload interface{}, err error) { | |||
| 		payload = &CheckSuiteEvent{} | ||||
| 	case "CommitCommentEvent": | ||||
| 		payload = &CommitCommentEvent{} | ||||
| 	case "ContentReferenceEvent": | ||||
| 		payload = &ContentReferenceEvent{} | ||||
| 	case "CreateEvent": | ||||
| 		payload = &CreateEvent{} | ||||
| 	case "DeleteEvent": | ||||
|  | @ -96,6 +98,8 @@ func (e *Event) ParsePayload() (payload interface{}, err error) { | |||
| 		payload = &PullRequestReviewEvent{} | ||||
| 	case "PullRequestReviewCommentEvent": | ||||
| 		payload = &PullRequestReviewCommentEvent{} | ||||
| 	case "PullRequestTargetEvent": | ||||
| 		payload = &PullRequestTargetEvent{} | ||||
| 	case "PushEvent": | ||||
| 		payload = &PushEvent{} | ||||
| 	case "ReleaseEvent": | ||||
|  | @ -118,6 +122,10 @@ func (e *Event) ParsePayload() (payload interface{}, err error) { | |||
| 		payload = &UserEvent{} | ||||
| 	case "WatchEvent": | ||||
| 		payload = &WatchEvent{} | ||||
| 	case "WorkflowDispatchEvent": | ||||
| 		payload = &WorkflowDispatchEvent{} | ||||
| 	case "WorkflowRunEvent": | ||||
| 		payload = &WorkflowRunEvent{} | ||||
| 	} | ||||
| 	err = json.Unmarshal(*e.RawPayload, &payload) | ||||
| 	return payload, err | ||||
|  | @ -15,13 +15,13 @@ type RequestedAction struct { | |||
| 	Identifier string `json:"identifier"` // The integrator reference of the action requested by the user.
 | ||||
| } | ||||
| 
 | ||||
| // CheckRunEvent is triggered when a check run is "created", "updated", or "rerequested".
 | ||||
| // CheckRunEvent is triggered when a check run is "created", "completed", or "rerequested".
 | ||||
| // The Webhook event name is "check_run".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#checkrunevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#check_run
 | ||||
| type CheckRunEvent struct { | ||||
| 	CheckRun *CheckRun `json:"check_run,omitempty"` | ||||
| 	// The action performed. Possible values are: "created", "updated", "rerequested" or "requested_action".
 | ||||
| 	// The action performed. Possible values are: "created", "completed", "rerequested" or "requested_action".
 | ||||
| 	Action *string `json:"action,omitempty"` | ||||
| 
 | ||||
| 	// The following fields are only populated by Webhook events.
 | ||||
|  | @ -37,7 +37,7 @@ type CheckRunEvent struct { | |||
| // CheckSuiteEvent is triggered when a check suite is "completed", "requested", or "rerequested".
 | ||||
| // The Webhook event name is "check_suite".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#checksuiteevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#check_suite
 | ||||
| type CheckSuiteEvent struct { | ||||
| 	CheckSuite *CheckSuite `json:"check_suite,omitempty"` | ||||
| 	// The action performed. Possible values are: "completed", "requested" or "rerequested".
 | ||||
|  | @ -53,7 +53,7 @@ type CheckSuiteEvent struct { | |||
| // CommitCommentEvent is triggered when a commit comment is created.
 | ||||
| // The Webhook event name is "commit_comment".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#commitcommentevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#commit_comment
 | ||||
| type CommitCommentEvent struct { | ||||
| 	Comment *RepositoryComment `json:"comment,omitempty"` | ||||
| 
 | ||||
|  | @ -64,6 +64,20 @@ type CommitCommentEvent struct { | |||
| 	Installation *Installation `json:"installation,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ContentReferenceEvent is triggered when the body or comment of an issue or
 | ||||
| // pull request includes a URL that matches a configured content reference
 | ||||
| // domain.
 | ||||
| // The Webhook event name is "content_reference".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/webhooks/event-payloads/#content_reference
 | ||||
| type ContentReferenceEvent struct { | ||||
| 	Action           *string           `json:"action,omitempty"` | ||||
| 	ContentReference *ContentReference `json:"content_reference,omitempty"` | ||||
| 	Repo             *Repository       `json:"repository,omitempty"` | ||||
| 	Sender           *User             `json:"sender,omitempty"` | ||||
| 	Installation     *Installation     `json:"installation,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // CreateEvent represents a created repository, branch, or tag.
 | ||||
| // The Webhook event name is "create".
 | ||||
| //
 | ||||
|  | @ -71,7 +85,7 @@ type CommitCommentEvent struct { | |||
| // Additionally, webhooks will not receive this event for tags if more
 | ||||
| // than three tags are pushed at once.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#createevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/github-event-types#createevent
 | ||||
| type CreateEvent struct { | ||||
| 	Ref *string `json:"ref,omitempty"` | ||||
| 	// RefType is the object that was created. Possible values are: "repository", "branch", "tag".
 | ||||
|  | @ -92,7 +106,7 @@ type CreateEvent struct { | |||
| // Note: webhooks will not receive this event for tags if more than three tags
 | ||||
| // are deleted at once.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#deleteevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/github-event-types#deleteevent
 | ||||
| type DeleteEvent struct { | ||||
| 	Ref *string `json:"ref,omitempty"` | ||||
| 	// RefType is the object that was deleted. Possible values are: "branch", "tag".
 | ||||
|  | @ -108,7 +122,7 @@ type DeleteEvent struct { | |||
| // DeployKeyEvent is triggered when a deploy key is added or removed from a repository.
 | ||||
| // The Webhook event name is "deploy_key".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#deploykeyevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#deploy_key
 | ||||
| type DeployKeyEvent struct { | ||||
| 	// Action is the action that was performed. Possible values are:
 | ||||
| 	// "created" or "deleted".
 | ||||
|  | @ -123,7 +137,7 @@ type DeployKeyEvent struct { | |||
| //
 | ||||
| // Events of this type are not visible in timelines, they are only used to trigger hooks.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#deploymentevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#deployment
 | ||||
| type DeploymentEvent struct { | ||||
| 	Deployment *Deployment `json:"deployment,omitempty"` | ||||
| 	Repo       *Repository `json:"repository,omitempty"` | ||||
|  | @ -138,7 +152,7 @@ type DeploymentEvent struct { | |||
| //
 | ||||
| // Events of this type are not visible in timelines, they are only used to trigger hooks.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#deploymentstatusevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#deployment_status
 | ||||
| type DeploymentStatusEvent struct { | ||||
| 	Deployment       *Deployment       `json:"deployment,omitempty"` | ||||
| 	DeploymentStatus *DeploymentStatus `json:"deployment_status,omitempty"` | ||||
|  | @ -152,7 +166,7 @@ type DeploymentStatusEvent struct { | |||
| // ForkEvent is triggered when a user forks a repository.
 | ||||
| // The Webhook event name is "fork".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#forkevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#fork
 | ||||
| type ForkEvent struct { | ||||
| 	// Forkee is the created repository.
 | ||||
| 	Forkee *Repository `json:"forkee,omitempty"` | ||||
|  | @ -166,7 +180,7 @@ type ForkEvent struct { | |||
| // GitHubAppAuthorizationEvent is triggered when a user's authorization for a
 | ||||
| // GitHub Application is revoked.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#githubappauthorizationevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#github_app_authorization
 | ||||
| type GitHubAppAuthorizationEvent struct { | ||||
| 	// The action performed. Possible value is: "revoked".
 | ||||
| 	Action *string `json:"action,omitempty"` | ||||
|  | @ -188,7 +202,7 @@ type Page struct { | |||
| // GollumEvent is triggered when a Wiki page is created or updated.
 | ||||
| // The Webhook event name is "gollum".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#gollumevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#gollum
 | ||||
| type GollumEvent struct { | ||||
| 	Pages []*Page `json:"pages,omitempty"` | ||||
| 
 | ||||
|  | @ -201,76 +215,131 @@ type GollumEvent struct { | |||
| // EditChange represents the changes when an issue, pull request, or comment has
 | ||||
| // been edited.
 | ||||
| type EditChange struct { | ||||
| 	Title *struct { | ||||
| 		From *string `json:"from,omitempty"` | ||||
| 	} `json:"title,omitempty"` | ||||
| 	Body *struct { | ||||
| 		From *string `json:"from,omitempty"` | ||||
| 	} `json:"body,omitempty"` | ||||
| 	Title *EditTitle `json:"title,omitempty"` | ||||
| 	Body  *EditBody  `json:"body,omitempty"` | ||||
| 	Base  *EditBase  `json:"base,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // EditTitle represents a pull-request title change.
 | ||||
| type EditTitle struct { | ||||
| 	From *string `json:"from,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // EditBody represents a change of pull-request body.
 | ||||
| type EditBody struct { | ||||
| 	From *string `json:"from,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // EditBase represents the change of a pull-request base branch.
 | ||||
| type EditBase struct { | ||||
| 	Ref *EditRef `json:"ref,omitempty"` | ||||
| 	SHA *EditSHA `json:"sha,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // EditRef represents a ref change of a pull-request.
 | ||||
| type EditRef struct { | ||||
| 	From *string `json:"from,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // EditSHA represents a sha change of a pull-request.
 | ||||
| type EditSHA struct { | ||||
| 	From *string `json:"from,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ProjectChange represents the changes when a project has been edited.
 | ||||
| type ProjectChange struct { | ||||
| 	Name *struct { | ||||
| 		From *string `json:"from,omitempty"` | ||||
| 	} `json:"name,omitempty"` | ||||
| 	Body *struct { | ||||
| 		From *string `json:"from,omitempty"` | ||||
| 	} `json:"body,omitempty"` | ||||
| 	Name *ProjectName `json:"name,omitempty"` | ||||
| 	Body *ProjectBody `json:"body,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ProjectName represents a project name change.
 | ||||
| type ProjectName struct { | ||||
| 	From *string `json:"from,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ProjectBody represents a project body change.
 | ||||
| type ProjectBody struct { | ||||
| 	From *string `json:"from,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ProjectCardChange represents the changes when a project card has been edited.
 | ||||
| type ProjectCardChange struct { | ||||
| 	Note *struct { | ||||
| 		From *string `json:"from,omitempty"` | ||||
| 	} `json:"note,omitempty"` | ||||
| 	Note *ProjectCardNote `json:"note,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ProjectCardNote represents a change of a note of a project card.
 | ||||
| type ProjectCardNote struct { | ||||
| 	From *string `json:"from,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ProjectColumnChange represents the changes when a project column has been edited.
 | ||||
| type ProjectColumnChange struct { | ||||
| 	Name *struct { | ||||
| 		From *string `json:"from,omitempty"` | ||||
| 	} `json:"name,omitempty"` | ||||
| 	Name *ProjectColumnName `json:"name,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ProjectColumnName represents a project column name change.
 | ||||
| type ProjectColumnName struct { | ||||
| 	From *string `json:"from,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // TeamChange represents the changes when a team has been edited.
 | ||||
| type TeamChange struct { | ||||
| 	Description *struct { | ||||
| 		From *string `json:"from,omitempty"` | ||||
| 	} `json:"description,omitempty"` | ||||
| 	Name *struct { | ||||
| 		From *string `json:"from,omitempty"` | ||||
| 	} `json:"name,omitempty"` | ||||
| 	Privacy *struct { | ||||
| 		From *string `json:"from,omitempty"` | ||||
| 	} `json:"privacy,omitempty"` | ||||
| 	Repository *struct { | ||||
| 		Permissions *struct { | ||||
| 			From *struct { | ||||
| 				Admin *bool `json:"admin,omitempty"` | ||||
| 				Pull  *bool `json:"pull,omitempty"` | ||||
| 				Push  *bool `json:"push,omitempty"` | ||||
| 			} `json:"from,omitempty"` | ||||
| 		} `json:"permissions,omitempty"` | ||||
| 	} `json:"repository,omitempty"` | ||||
| 	Description *TeamDescription `json:"description,omitempty"` | ||||
| 	Name        *TeamName        `json:"name,omitempty"` | ||||
| 	Privacy     *TeamPrivacy     `json:"privacy,omitempty"` | ||||
| 	Repository  *TeamRepository  `json:"repository,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // InstallationEvent is triggered when a GitHub App has been installed or uninstalled.
 | ||||
| // TeamDescription represents a team description change.
 | ||||
| type TeamDescription struct { | ||||
| 	From *string `json:"from,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // TeamName represents a team name change.
 | ||||
| type TeamName struct { | ||||
| 	From *string `json:"from,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // TeamPrivacy represents a team privacy change.
 | ||||
| type TeamPrivacy struct { | ||||
| 	From *string `json:"from,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // TeamRepository represents a team repository permission change.
 | ||||
| type TeamRepository struct { | ||||
| 	Permissions *TeamPermissions `json:"permissions,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // TeamPermissions represents a team permission change.
 | ||||
| type TeamPermissions struct { | ||||
| 	From *TeamPermissionsFrom `json:"from,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // TeamPermissionsFrom represents a team permission change.
 | ||||
| type TeamPermissionsFrom struct { | ||||
| 	Admin *bool `json:"admin,omitempty"` | ||||
| 	Pull  *bool `json:"pull,omitempty"` | ||||
| 	Push  *bool `json:"push,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // InstallationEvent is triggered when a GitHub App has been installed, uninstalled, suspend, unsuspended
 | ||||
| // or new permissions have been accepted.
 | ||||
| // The Webhook event name is "installation".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#installationevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#installation
 | ||||
| type InstallationEvent struct { | ||||
| 	// The action that was performed. Can be either "created" or "deleted".
 | ||||
| 	// The action that was performed. Can be either "created", "deleted", "suspend", "unsuspend" or "new_permissions_accepted".
 | ||||
| 	Action       *string       `json:"action,omitempty"` | ||||
| 	Repositories []*Repository `json:"repositories,omitempty"` | ||||
| 	Sender       *User         `json:"sender,omitempty"` | ||||
| 	Installation *Installation `json:"installation,omitempty"` | ||||
| 	// TODO key "requester" is not covered
 | ||||
| } | ||||
| 
 | ||||
| // InstallationRepositoriesEvent is triggered when a repository is added or
 | ||||
| // removed from an installation. The Webhook event name is "installation_repositories".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#installationrepositoriesevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#installation_repositories
 | ||||
| type InstallationRepositoriesEvent struct { | ||||
| 	// The action that was performed. Can be either "added" or "removed".
 | ||||
| 	Action              *string       `json:"action,omitempty"` | ||||
|  | @ -285,7 +354,7 @@ type InstallationRepositoriesEvent struct { | |||
| // or pull request.
 | ||||
| // The Webhook event name is "issue_comment".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#issuecommentevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#issue_comment
 | ||||
| type IssueCommentEvent struct { | ||||
| 	// Action is the action that was performed on the comment.
 | ||||
| 	// Possible values are: "created", "edited", "deleted".
 | ||||
|  | @ -305,7 +374,7 @@ type IssueCommentEvent struct { | |||
| // locked, unlocked, milestoned, or demilestoned.
 | ||||
| // The Webhook event name is "issues".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#issuesevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#issues
 | ||||
| type IssuesEvent struct { | ||||
| 	// Action is the action that was performed. Possible values are: "opened",
 | ||||
| 	// "edited", "deleted", "transferred", "pinned", "unpinned", "closed", "reopened",
 | ||||
|  | @ -326,7 +395,7 @@ type IssuesEvent struct { | |||
| // LabelEvent is triggered when a repository's label is created, edited, or deleted.
 | ||||
| // The Webhook event name is "label"
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#labelevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#label
 | ||||
| type LabelEvent struct { | ||||
| 	// Action is the action that was performed. Possible values are:
 | ||||
| 	// "created", "edited", "deleted"
 | ||||
|  | @ -344,7 +413,7 @@ type LabelEvent struct { | |||
| // their GitHub Marketplace plan.
 | ||||
| // Webhook event name "marketplace_purchase".
 | ||||
| //
 | ||||
| // Github API docs: https://developer.github.com/v3/activity/events/types/#marketplacepurchaseevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#marketplace_purchase
 | ||||
| type MarketplacePurchaseEvent struct { | ||||
| 	// Action is the action that was performed. Possible values are:
 | ||||
| 	// "purchased", "cancelled", "pending_change", "pending_change_cancelled", "changed".
 | ||||
|  | @ -361,7 +430,7 @@ type MarketplacePurchaseEvent struct { | |||
| // MemberEvent is triggered when a user is added as a collaborator to a repository.
 | ||||
| // The Webhook event name is "member".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#memberevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#member
 | ||||
| type MemberEvent struct { | ||||
| 	// Action is the action that was performed. Possible value is: "added".
 | ||||
| 	Action *string `json:"action,omitempty"` | ||||
|  | @ -379,7 +448,7 @@ type MemberEvent struct { | |||
| // Events of this type are not visible in timelines, they are only used to
 | ||||
| // trigger organization webhooks.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#membershipevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#membership
 | ||||
| type MembershipEvent struct { | ||||
| 	// Action is the action that was performed. Possible values are: "added", "removed".
 | ||||
| 	Action *string `json:"action,omitempty"` | ||||
|  | @ -399,7 +468,7 @@ type MembershipEvent struct { | |||
| // Therefore, it must be selected for each hook that you'd like to receive meta events for.
 | ||||
| // The Webhook event name is "meta".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#metaevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#meta
 | ||||
| type MetaEvent struct { | ||||
| 	// Action is the action that was performed. Possible value is: "deleted".
 | ||||
| 	Action *string `json:"action,omitempty"` | ||||
|  | @ -414,7 +483,7 @@ type MetaEvent struct { | |||
| // MilestoneEvent is triggered when a milestone is created, closed, opened, edited, or deleted.
 | ||||
| // The Webhook event name is "milestone".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#milestoneevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#milestone
 | ||||
| type MilestoneEvent struct { | ||||
| 	// Action is the action that was performed. Possible values are:
 | ||||
| 	// "created", "closed", "opened", "edited", "deleted"
 | ||||
|  | @ -434,7 +503,7 @@ type MilestoneEvent struct { | |||
| // Events of this type are not visible in timelines. These events are only used to trigger organization hooks.
 | ||||
| // Webhook event name is "organization".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#organizationevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#organization
 | ||||
| type OrganizationEvent struct { | ||||
| 	// Action is the action that was performed.
 | ||||
| 	// Possible values are: "deleted", "renamed", "member_added", "member_removed", or "member_invited".
 | ||||
|  | @ -455,7 +524,7 @@ type OrganizationEvent struct { | |||
| // OrgBlockEvent is triggered when an organization blocks or unblocks a user.
 | ||||
| // The Webhook event name is "org_block".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#orgblockevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#org_block
 | ||||
| type OrgBlockEvent struct { | ||||
| 	// Action is the action that was performed.
 | ||||
| 	// Can be "blocked" or "unblocked".
 | ||||
|  | @ -493,7 +562,7 @@ type PackageEvent struct { | |||
| //
 | ||||
| // Events of this type are not visible in timelines, they are only used to trigger hooks.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#pagebuildevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#page_build
 | ||||
| type PageBuildEvent struct { | ||||
| 	Build *PagesBuild `json:"build,omitempty"` | ||||
| 
 | ||||
|  | @ -520,7 +589,7 @@ type PingEvent struct { | |||
| // ProjectEvent is triggered when project is created, modified or deleted.
 | ||||
| // The webhook event name is "project".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#projectevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#project
 | ||||
| type ProjectEvent struct { | ||||
| 	Action  *string        `json:"action,omitempty"` | ||||
| 	Changes *ProjectChange `json:"changes,omitempty"` | ||||
|  | @ -536,7 +605,7 @@ type ProjectEvent struct { | |||
| // ProjectCardEvent is triggered when a project card is created, updated, moved, converted to an issue, or deleted.
 | ||||
| // The webhook event name is "project_card".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#projectcardevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#project_card
 | ||||
| type ProjectCardEvent struct { | ||||
| 	Action      *string            `json:"action,omitempty"` | ||||
| 	Changes     *ProjectCardChange `json:"changes,omitempty"` | ||||
|  | @ -553,7 +622,7 @@ type ProjectCardEvent struct { | |||
| // ProjectColumnEvent is triggered when a project column is created, updated, moved, or deleted.
 | ||||
| // The webhook event name is "project_column".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#projectcolumnevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#project_column
 | ||||
| type ProjectColumnEvent struct { | ||||
| 	Action        *string              `json:"action,omitempty"` | ||||
| 	Changes       *ProjectColumnChange `json:"changes,omitempty"` | ||||
|  | @ -571,7 +640,7 @@ type ProjectColumnEvent struct { | |||
| // According to GitHub: "Without a doubt: the best GitHub event."
 | ||||
| // The Webhook event name is "public".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#publicevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#public
 | ||||
| type PublicEvent struct { | ||||
| 	// The following fields are only populated by Webhook events.
 | ||||
| 	Repo         *Repository   `json:"repository,omitempty"` | ||||
|  | @ -584,7 +653,7 @@ type PublicEvent struct { | |||
| // locked, unlocked, a pull request review is requested, or a review request is removed.
 | ||||
| // The Webhook event name is "pull_request".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#pullrequestevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/github-event-types#pullrequestevent
 | ||||
| type PullRequestEvent struct { | ||||
| 	// Action is the action that was performed. Possible values are:
 | ||||
| 	// "assigned", "unassigned", "review_requested", "review_request_removed", "labeled", "unlabeled",
 | ||||
|  | @ -625,7 +694,7 @@ type PullRequestEvent struct { | |||
| // request.
 | ||||
| // The Webhook event name is "pull_request_review".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#pullrequestreviewevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#pull_request_review
 | ||||
| type PullRequestReviewEvent struct { | ||||
| 	// Action is always "submitted".
 | ||||
| 	Action      *string            `json:"action,omitempty"` | ||||
|  | @ -646,7 +715,7 @@ type PullRequestReviewEvent struct { | |||
| // portion of the unified diff of a pull request.
 | ||||
| // The Webhook event name is "pull_request_review_comment".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#pullrequestreviewcommentevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#pull_request_review_comment
 | ||||
| type PullRequestReviewCommentEvent struct { | ||||
| 	// Action is the action that was performed on the comment.
 | ||||
| 	// Possible values are: "created", "edited", "deleted".
 | ||||
|  | @ -661,9 +730,51 @@ type PullRequestReviewCommentEvent struct { | |||
| 	Installation *Installation `json:"installation,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // PullRequestTargetEvent is triggered when a pull request is assigned, unassigned, labeled,
 | ||||
| // unlabeled, opened, edited, closed, reopened, synchronize, ready_for_review,
 | ||||
| // locked, unlocked, a pull request review is requested, or a review request is removed.
 | ||||
| // The Webhook event name is "pull_request_target".
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/actions/reference/events-that-trigger-workflows#pull_request_target
 | ||||
| type PullRequestTargetEvent struct { | ||||
| 	// Action is the action that was performed. Possible values are:
 | ||||
| 	// "assigned", "unassigned", "labeled", "unlabeled", "opened", "edited", "closed", "reopened",
 | ||||
| 	// "ready_for_review", "locked", "unlocked", "review_requested" or "review_request_removed".
 | ||||
| 	// If the action is "closed" and the "merged" key is "false", the pull request was closed with unmerged commits.
 | ||||
| 	// If the action is "closed" and the "merged" key is "true", the pull request was merged.
 | ||||
| 	// While webhooks are also triggered when a pull request is synchronized, Events API timelines
 | ||||
| 	// don't include pull request events with the "synchronize" action.
 | ||||
| 	Action      *string      `json:"action,omitempty"` | ||||
| 	Assignee    *User        `json:"assignee,omitempty"` | ||||
| 	Number      *int         `json:"number,omitempty"` | ||||
| 	PullRequest *PullRequest `json:"pull_request,omitempty"` | ||||
| 
 | ||||
| 	// The following fields are only populated by Webhook events.
 | ||||
| 	Changes *EditChange `json:"changes,omitempty"` | ||||
| 	// RequestedReviewer is populated in "review_requested", "review_request_removed" event deliveries.
 | ||||
| 	// A request affecting multiple reviewers at once is split into multiple
 | ||||
| 	// such event deliveries, each with a single, different RequestedReviewer.
 | ||||
| 	RequestedReviewer *User `json:"requested_reviewer,omitempty"` | ||||
| 	// In the event that a team is requested instead of a user, "requested_team" gets sent in place of
 | ||||
| 	// "requested_user" with the same delivery behavior.
 | ||||
| 	RequestedTeam *Team         `json:"requested_team,omitempty"` | ||||
| 	Repo          *Repository   `json:"repository,omitempty"` | ||||
| 	Sender        *User         `json:"sender,omitempty"` | ||||
| 	Installation  *Installation `json:"installation,omitempty"` | ||||
| 	Label         *Label        `json:"label,omitempty"` // Populated in "labeled" event deliveries.
 | ||||
| 
 | ||||
| 	// The following field is only present when the webhook is triggered on
 | ||||
| 	// a repository belonging to an organization.
 | ||||
| 	Organization *Organization `json:"organization,omitempty"` | ||||
| 
 | ||||
| 	// The following fields are only populated when the Action is "synchronize".
 | ||||
| 	Before *string `json:"before,omitempty"` | ||||
| 	After  *string `json:"after,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // PushEvent represents a git push to a GitHub repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#pushevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#push
 | ||||
| type PushEvent struct { | ||||
| 	PushID       *int64        `json:"push_id,omitempty"` | ||||
| 	Head         *string       `json:"head,omitempty"` | ||||
|  | @ -765,7 +876,7 @@ type PushEventRepoOwner struct { | |||
| // edited, deleted, or prereleased.
 | ||||
| // The Webhook event name is "release".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#releaseevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#release
 | ||||
| type ReleaseEvent struct { | ||||
| 	// Action is the action that was performed. Possible values are: "published", "unpublished",
 | ||||
| 	// "created", "edited", "deleted", or "prereleased".
 | ||||
|  | @ -786,7 +897,7 @@ type ReleaseEvent struct { | |||
| // Events of this type are not visible in timelines, they are only used to
 | ||||
| // trigger organization webhooks.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#repositoryevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#repository
 | ||||
| type RepositoryEvent struct { | ||||
| 	// Action is the action that was performed. Possible values are: "created",
 | ||||
| 	// "deleted" (organization hooks only), "archived", "unarchived", "edited", "renamed",
 | ||||
|  | @ -802,7 +913,7 @@ type RepositoryEvent struct { | |||
| 
 | ||||
| // RepositoryDispatchEvent is triggered when a client sends a POST request to the repository dispatch event endpoint.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#repositorydispatchevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#repository_dispatch
 | ||||
| type RepositoryDispatchEvent struct { | ||||
| 	// Action is the event_type that submitted with the repository dispatch payload. Value can be any string.
 | ||||
| 	Action        *string         `json:"action,omitempty"` | ||||
|  | @ -818,38 +929,49 @@ type RepositoryDispatchEvent struct { | |||
| 
 | ||||
| // RepositoryVulnerabilityAlertEvent is triggered when a security alert is created, dismissed, or resolved.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#repositoryvulnerabilityalertevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#repository_vulnerability_alert
 | ||||
| type RepositoryVulnerabilityAlertEvent struct { | ||||
| 	// Action is the action that was performed. Possible values are: "create", "dismiss", "resolve".
 | ||||
| 	Action *string `json:"action,omitempty"` | ||||
| 
 | ||||
| 	//The security alert of the vulnerable dependency.
 | ||||
| 	Alert *struct { | ||||
| 		ID                  *int64     `json:"id,omitempty"` | ||||
| 		AffectedRange       *string    `json:"affected_range,omitempty"` | ||||
| 		AffectedPackageName *string    `json:"affected_package_name,omitempty"` | ||||
| 		ExternalReference   *string    `json:"external_reference,omitempty"` | ||||
| 		ExternalIdentifier  *string    `json:"external_identifier,omitempty"` | ||||
| 		FixedIn             *string    `json:"fixed_in,omitempty"` | ||||
| 		Dismisser           *User      `json:"dismisser,omitempty"` | ||||
| 		DismissReason       *string    `json:"dismiss_reason,omitempty"` | ||||
| 		DismissedAt         *Timestamp `json:"dismissed_at,omitempty"` | ||||
| 	} `json:"alert,omitempty"` | ||||
| 	Alert *RepositoryVulnerabilityAlert `json:"alert,omitempty"` | ||||
| 
 | ||||
| 	//The repository of the vulnerable dependency.
 | ||||
| 	Repository *Repository `json:"repository,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // RepositoryVulnerabilityAlert represents a repository security alert.
 | ||||
| type RepositoryVulnerabilityAlert struct { | ||||
| 	ID                       *int64     `json:"id,omitempty"` | ||||
| 	AffectedRange            *string    `json:"affected_range,omitempty"` | ||||
| 	AffectedPackageName      *string    `json:"affected_package_name,omitempty"` | ||||
| 	ExternalReference        *string    `json:"external_reference,omitempty"` | ||||
| 	ExternalIdentifier       *string    `json:"external_identifier,omitempty"` | ||||
| 	GitHubSecurityAdvisoryID *string    `json:"ghsa_id,omitempty"` | ||||
| 	Severity                 *string    `json:"severity,omitempty"` | ||||
| 	CreatedAt                *Timestamp `json:"created_at,omitempty"` | ||||
| 	FixedIn                  *string    `json:"fixed_in,omitempty"` | ||||
| 	Dismisser                *User      `json:"dismisser,omitempty"` | ||||
| 	DismissReason            *string    `json:"dismiss_reason,omitempty"` | ||||
| 	DismissedAt              *Timestamp `json:"dismissed_at,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // StarEvent is triggered when a star is added or removed from a repository.
 | ||||
| // The Webhook event name is "star".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#starevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#star
 | ||||
| type StarEvent struct { | ||||
| 	// Action is the action that was performed. Possible values are: "created" or "deleted".
 | ||||
| 	Action *string `json:"action,omitempty"` | ||||
| 
 | ||||
| 	// StarredAt is the time the star was created. It will be null for the "deleted" action.
 | ||||
| 	StarredAt *Timestamp `json:"starred_at,omitempty"` | ||||
| 
 | ||||
| 	// The following fields are only populated by Webhook events.
 | ||||
| 	Org    *Organization `json:"organization,omitempty"` | ||||
| 	Repo   *Repository   `json:"repository,omitempty"` | ||||
| 	Sender *User         `json:"sender,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // StatusEvent is triggered when the status of a Git commit changes.
 | ||||
|  | @ -858,7 +980,7 @@ type StarEvent struct { | |||
| // Events of this type are not visible in timelines, they are only used to
 | ||||
| // trigger hooks.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#statusevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#status
 | ||||
| type StatusEvent struct { | ||||
| 	SHA *string `json:"sha,omitempty"` | ||||
| 	// State is the new state. Possible values are: "pending", "success", "failure", "error".
 | ||||
|  | @ -885,7 +1007,7 @@ type StatusEvent struct { | |||
| // Events of this type are not visible in timelines. These events are only used
 | ||||
| // to trigger hooks.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#teamevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#team
 | ||||
| type TeamEvent struct { | ||||
| 	Action  *string     `json:"action,omitempty"` | ||||
| 	Team    *Team       `json:"team,omitempty"` | ||||
|  | @ -904,7 +1026,7 @@ type TeamEvent struct { | |||
| // Events of this type are not visible in timelines. These events are only used
 | ||||
| // to trigger hooks.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#teamaddevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#team_add
 | ||||
| type TeamAddEvent struct { | ||||
| 	Team *Team       `json:"team,omitempty"` | ||||
| 	Repo *Repository `json:"repository,omitempty"` | ||||
|  | @ -935,7 +1057,7 @@ type UserEvent struct { | |||
| // The event’s actor is the user who starred a repository, and the event’s
 | ||||
| // repository is the repository that was starred.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/activity/events/types/#watchevent
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#watch
 | ||||
| type WatchEvent struct { | ||||
| 	// Action is the action that was performed. Possible value is: "started".
 | ||||
| 	Action *string `json:"action,omitempty"` | ||||
|  | @ -945,3 +1067,32 @@ type WatchEvent struct { | |||
| 	Sender       *User         `json:"sender,omitempty"` | ||||
| 	Installation *Installation `json:"installation,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // WorkflowDispatchEvent is triggered when someone triggers a workflow run on GitHub or
 | ||||
| // sends a POST request to the create a workflow dispatch event endpoint.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#workflow_dispatch
 | ||||
| type WorkflowDispatchEvent struct { | ||||
| 	Inputs   json.RawMessage `json:"inputs,omitempty"` | ||||
| 	Ref      *string         `json:"ref,omitempty"` | ||||
| 	Workflow *string         `json:"workflow,omitempty"` | ||||
| 
 | ||||
| 	// The following fields are only populated by Webhook events.
 | ||||
| 	Repo   *Repository   `json:"repository,omitempty"` | ||||
| 	Org    *Organization `json:"organization,omitempty"` | ||||
| 	Sender *User         `json:"sender,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // WorkflowRunEvent is triggered when a GitHub Actions workflow run is requested or completed.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/developers/webhooks-and-events/webhook-events-and-payloads#workflow_run
 | ||||
| type WorkflowRunEvent struct { | ||||
| 	Action      *string      `json:"action,omitempty"` | ||||
| 	Workflow    *Workflow    `json:"workflow,omitempty"` | ||||
| 	WorkflowRun *WorkflowRun `json:"workflow_run,omitempty"` | ||||
| 
 | ||||
| 	// The following fields are only populated by Webhook events.
 | ||||
| 	Org    *Organization `json:"organization,omitempty"` | ||||
| 	Repo   *Repository   `json:"repository,omitempty"` | ||||
| 	Sender *User         `json:"sender,omitempty"` | ||||
| } | ||||
|  | @ -14,7 +14,7 @@ import ( | |||
| // GistsService handles communication with the Gist related
 | ||||
| // methods of the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/
 | ||||
| type GistsService service | ||||
| 
 | ||||
| // Gist represents a GitHub's gist.
 | ||||
|  | @ -96,8 +96,8 @@ type GistListOptions struct { | |||
| // is authenticated, it will returns all gists for the authenticated
 | ||||
| // user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#list-gists-for-a-user
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#list-gists-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#list-gists-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#list-gists-for-a-user
 | ||||
| func (s *GistsService) List(ctx context.Context, user string, opts *GistListOptions) ([]*Gist, *Response, error) { | ||||
| 	var u string | ||||
| 	if user != "" { | ||||
|  | @ -126,7 +126,7 @@ func (s *GistsService) List(ctx context.Context, user string, opts *GistListOpti | |||
| 
 | ||||
| // ListAll lists all public gists.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#list-public-gists
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#list-public-gists
 | ||||
| func (s *GistsService) ListAll(ctx context.Context, opts *GistListOptions) ([]*Gist, *Response, error) { | ||||
| 	u, err := addOptions("gists/public", opts) | ||||
| 	if err != nil { | ||||
|  | @ -149,7 +149,7 @@ func (s *GistsService) ListAll(ctx context.Context, opts *GistListOptions) ([]*G | |||
| 
 | ||||
| // ListStarred lists starred gists of authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#list-starred-gists
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#list-starred-gists
 | ||||
| func (s *GistsService) ListStarred(ctx context.Context, opts *GistListOptions) ([]*Gist, *Response, error) { | ||||
| 	u, err := addOptions("gists/starred", opts) | ||||
| 	if err != nil { | ||||
|  | @ -172,7 +172,7 @@ func (s *GistsService) ListStarred(ctx context.Context, opts *GistListOptions) ( | |||
| 
 | ||||
| // Get a single gist.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#get-a-gist
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#get-a-gist
 | ||||
| func (s *GistsService) Get(ctx context.Context, id string) (*Gist, *Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v", id) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -191,7 +191,7 @@ func (s *GistsService) Get(ctx context.Context, id string) (*Gist, *Response, er | |||
| 
 | ||||
| // GetRevision gets a specific revision of a gist.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#get-a-gist-revision
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#get-a-gist-revision
 | ||||
| func (s *GistsService) GetRevision(ctx context.Context, id, sha string) (*Gist, *Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v/%v", id, sha) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -210,7 +210,7 @@ func (s *GistsService) GetRevision(ctx context.Context, id, sha string) (*Gist, | |||
| 
 | ||||
| // Create a gist for authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#create-a-gist
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#create-a-gist
 | ||||
| func (s *GistsService) Create(ctx context.Context, gist *Gist) (*Gist, *Response, error) { | ||||
| 	u := "gists" | ||||
| 	req, err := s.client.NewRequest("POST", u, gist) | ||||
|  | @ -229,7 +229,7 @@ func (s *GistsService) Create(ctx context.Context, gist *Gist) (*Gist, *Response | |||
| 
 | ||||
| // Edit a gist.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#update-a-gist
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#update-a-gist
 | ||||
| func (s *GistsService) Edit(ctx context.Context, id string, gist *Gist) (*Gist, *Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v", id) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, gist) | ||||
|  | @ -248,7 +248,7 @@ func (s *GistsService) Edit(ctx context.Context, id string, gist *Gist) (*Gist, | |||
| 
 | ||||
| // ListCommits lists commits of a gist.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#list-gist-commits
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#list-gist-commits
 | ||||
| func (s *GistsService) ListCommits(ctx context.Context, id string, opts *ListOptions) ([]*GistCommit, *Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v/commits", id) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -272,7 +272,7 @@ func (s *GistsService) ListCommits(ctx context.Context, id string, opts *ListOpt | |||
| 
 | ||||
| // Delete a gist.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#delete-a-gist
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#delete-a-gist
 | ||||
| func (s *GistsService) Delete(ctx context.Context, id string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v", id) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -284,7 +284,7 @@ func (s *GistsService) Delete(ctx context.Context, id string) (*Response, error) | |||
| 
 | ||||
| // Star a gist on behalf of authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#star-a-gist
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#star-a-gist
 | ||||
| func (s *GistsService) Star(ctx context.Context, id string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v/star", id) | ||||
| 	req, err := s.client.NewRequest("PUT", u, nil) | ||||
|  | @ -296,7 +296,7 @@ func (s *GistsService) Star(ctx context.Context, id string) (*Response, error) { | |||
| 
 | ||||
| // Unstar a gist on a behalf of authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#unstar-a-gist
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#unstar-a-gist
 | ||||
| func (s *GistsService) Unstar(ctx context.Context, id string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v/star", id) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -308,7 +308,7 @@ func (s *GistsService) Unstar(ctx context.Context, id string) (*Response, error) | |||
| 
 | ||||
| // IsStarred checks if a gist is starred by authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#check-if-a-gist-is-starred
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#check-if-a-gist-is-starred
 | ||||
| func (s *GistsService) IsStarred(ctx context.Context, id string) (bool, *Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v/star", id) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -322,7 +322,7 @@ func (s *GistsService) IsStarred(ctx context.Context, id string) (bool, *Respons | |||
| 
 | ||||
| // Fork a gist.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#fork-a-gist
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#fork-a-gist
 | ||||
| func (s *GistsService) Fork(ctx context.Context, id string) (*Gist, *Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v/forks", id) | ||||
| 	req, err := s.client.NewRequest("POST", u, nil) | ||||
|  | @ -341,7 +341,7 @@ func (s *GistsService) Fork(ctx context.Context, id string) (*Gist, *Response, e | |||
| 
 | ||||
| // ListForks lists forks of a gist.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/#list-gist-forks
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#list-gist-forks
 | ||||
| func (s *GistsService) ListForks(ctx context.Context, id string, opts *ListOptions) ([]*GistFork, *Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v/forks", id) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -26,7 +26,7 @@ func (g GistComment) String() string { | |||
| 
 | ||||
| // ListComments lists all comments for a gist.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/comments/#list-gist-comments
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#list-gist-comments
 | ||||
| func (s *GistsService) ListComments(ctx context.Context, gistID string, opts *ListOptions) ([]*GistComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v/comments", gistID) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -50,7 +50,7 @@ func (s *GistsService) ListComments(ctx context.Context, gistID string, opts *Li | |||
| 
 | ||||
| // GetComment retrieves a single comment from a gist.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/comments/#get-a-gist-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#get-a-gist-comment
 | ||||
| func (s *GistsService) GetComment(ctx context.Context, gistID string, commentID int64) (*GistComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v/comments/%v", gistID, commentID) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -69,7 +69,7 @@ func (s *GistsService) GetComment(ctx context.Context, gistID string, commentID | |||
| 
 | ||||
| // CreateComment creates a comment for a gist.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/comments/#create-a-gist-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#create-a-gist-comment
 | ||||
| func (s *GistsService) CreateComment(ctx context.Context, gistID string, comment *GistComment) (*GistComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v/comments", gistID) | ||||
| 	req, err := s.client.NewRequest("POST", u, comment) | ||||
|  | @ -88,7 +88,7 @@ func (s *GistsService) CreateComment(ctx context.Context, gistID string, comment | |||
| 
 | ||||
| // EditComment edits an existing gist comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/comments/#update-a-gist-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#update-a-gist-comment
 | ||||
| func (s *GistsService) EditComment(ctx context.Context, gistID string, commentID int64, comment *GistComment) (*GistComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v/comments/%v", gistID, commentID) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, comment) | ||||
|  | @ -107,7 +107,7 @@ func (s *GistsService) EditComment(ctx context.Context, gistID string, commentID | |||
| 
 | ||||
| // DeleteComment deletes a gist comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gists/comments/#delete-a-gist-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gists/#delete-a-gist-comment
 | ||||
| func (s *GistsService) DeleteComment(ctx context.Context, gistID string, commentID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("gists/%v/comments/%v", gistID, commentID) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -8,5 +8,5 @@ package github | |||
| // GitService handles communication with the git data related
 | ||||
| // methods of the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/
 | ||||
| type GitService service | ||||
|  | @ -23,7 +23,7 @@ type Blob struct { | |||
| 
 | ||||
| // GetBlob fetches a blob from a repo given a SHA.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/blobs/#get-a-blob
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#get-a-blob
 | ||||
| func (s *GitService) GetBlob(ctx context.Context, owner string, repo string, sha string) (*Blob, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/git/blobs/%v", owner, repo, sha) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -39,7 +39,7 @@ func (s *GitService) GetBlob(ctx context.Context, owner string, repo string, sha | |||
| // GetBlobRaw fetches a blob's contents from a repo.
 | ||||
| // Unlike GetBlob, it returns the raw bytes rather than the base64-encoded data.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/blobs/#get-a-blob
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#get-a-blob
 | ||||
| func (s *GitService) GetBlobRaw(ctx context.Context, owner, repo, sha string) ([]byte, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/git/blobs/%v", owner, repo, sha) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -55,7 +55,7 @@ func (s *GitService) GetBlobRaw(ctx context.Context, owner, repo, sha string) ([ | |||
| 
 | ||||
| // CreateBlob creates a blob object.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/blobs/#create-a-blob
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#create-a-blob
 | ||||
| func (s *GitService) CreateBlob(ctx context.Context, owner string, repo string, blob *Blob) (*Blob, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/git/blobs", owner, repo) | ||||
| 	req, err := s.client.NewRequest("POST", u, blob) | ||||
|  | @ -70,7 +70,7 @@ func (c CommitAuthor) String() string { | |||
| 
 | ||||
| // GetCommit fetches the Commit object for a given SHA.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/commits/#get-a-commit
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#get-a-commit
 | ||||
| func (s *GitService) GetCommit(ctx context.Context, owner string, repo string, sha string) (*Commit, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/git/commits/%v", owner, repo, sha) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -104,7 +104,7 @@ type createCommit struct { | |||
| // data if omitted. If the commit.Author is omitted, it will be filled in with
 | ||||
| // the authenticated user’s information and the current date.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/commits/#create-a-commit
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#create-a-commit
 | ||||
| func (s *GitService) CreateCommit(ctx context.Context, owner string, repo string, commit *Commit) (*Commit, *Response, error) { | ||||
| 	if commit == nil { | ||||
| 		return nil, nil, fmt.Errorf("commit must be provided") | ||||
|  | @ -49,7 +49,7 @@ type updateRefRequest struct { | |||
| 
 | ||||
| // GetRef fetches a single reference in a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/refs/#get-a-reference
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#get-a-reference
 | ||||
| func (s *GitService) GetRef(ctx context.Context, owner string, repo string, ref string) (*Reference, *Response, error) { | ||||
| 	ref = strings.TrimPrefix(ref, "refs/") | ||||
| 	u := fmt.Sprintf("repos/%v/%v/git/ref/%v", owner, repo, refURLEscape(ref)) | ||||
|  | @ -88,7 +88,7 @@ type ReferenceListOptions struct { | |||
| // ListMatchingRefs lists references in a repository that match a supplied ref.
 | ||||
| // Use an empty ref to list all references.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/refs/#list-matching-references
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#list-matching-references
 | ||||
| func (s *GitService) ListMatchingRefs(ctx context.Context, owner, repo string, opts *ReferenceListOptions) ([]*Reference, *Response, error) { | ||||
| 	var ref string | ||||
| 	if opts != nil { | ||||
|  | @ -116,7 +116,7 @@ func (s *GitService) ListMatchingRefs(ctx context.Context, owner, repo string, o | |||
| 
 | ||||
| // CreateRef creates a new ref in a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/refs/#create-a-reference
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#create-a-reference
 | ||||
| func (s *GitService) CreateRef(ctx context.Context, owner string, repo string, ref *Reference) (*Reference, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/git/refs", owner, repo) | ||||
| 	req, err := s.client.NewRequest("POST", u, &createRefRequest{ | ||||
|  | @ -139,7 +139,7 @@ func (s *GitService) CreateRef(ctx context.Context, owner string, repo string, r | |||
| 
 | ||||
| // UpdateRef updates an existing ref in a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/refs/#update-a-reference
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#update-a-reference
 | ||||
| func (s *GitService) UpdateRef(ctx context.Context, owner string, repo string, ref *Reference, force bool) (*Reference, *Response, error) { | ||||
| 	refPath := strings.TrimPrefix(*ref.Ref, "refs/") | ||||
| 	u := fmt.Sprintf("repos/%v/%v/git/refs/%v", owner, repo, refPath) | ||||
|  | @ -162,7 +162,7 @@ func (s *GitService) UpdateRef(ctx context.Context, owner string, repo string, r | |||
| 
 | ||||
| // DeleteRef deletes a ref from a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/refs/#delete-a-reference
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#delete-a-reference
 | ||||
| func (s *GitService) DeleteRef(ctx context.Context, owner string, repo string, ref string) (*Response, error) { | ||||
| 	ref = strings.TrimPrefix(ref, "refs/") | ||||
| 	u := fmt.Sprintf("repos/%v/%v/git/refs/%v", owner, repo, refURLEscape(ref)) | ||||
|  | @ -35,7 +35,7 @@ type createTagRequest struct { | |||
| 
 | ||||
| // GetTag fetches a tag from a repo given a SHA.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/tags/#get-a-tag
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#get-a-tag
 | ||||
| func (s *GitService) GetTag(ctx context.Context, owner string, repo string, sha string) (*Tag, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/git/tags/%v", owner, repo, sha) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -50,7 +50,7 @@ func (s *GitService) GetTag(ctx context.Context, owner string, repo string, sha | |||
| 
 | ||||
| // CreateTag creates a tag object.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/tags/#create-a-tag-object
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#create-a-tag-object
 | ||||
| func (s *GitService) CreateTag(ctx context.Context, owner string, repo string, tag *Tag) (*Tag, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/git/tags", owner, repo) | ||||
| 
 | ||||
|  | @ -93,7 +93,7 @@ func (t *TreeEntry) MarshalJSON() ([]byte, error) { | |||
| 
 | ||||
| // GetTree fetches the Tree object for a given sha hash from a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/trees/#get-a-tree
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#get-a-tree
 | ||||
| func (s *GitService) GetTree(ctx context.Context, owner string, repo string, sha string, recursive bool) (*Tree, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/git/trees/%v", owner, repo, sha) | ||||
| 	if recursive { | ||||
|  | @ -124,7 +124,7 @@ type createTree struct { | |||
| // path modifying that tree are specified, it will overwrite the contents of
 | ||||
| // that tree with the new path contents and write a new tree out.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/git/trees/#create-a-tree
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/git/#create-a-tree
 | ||||
| func (s *GitService) CreateTree(ctx context.Context, owner string, repo string, baseTree string, entries []*TreeEntry) (*Tree, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/git/trees", owner, repo) | ||||
| 
 | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -43,6 +43,7 @@ const ( | |||
| 	mediaTypeV3Diff            = "application/vnd.github.v3.diff" | ||||
| 	mediaTypeV3Patch           = "application/vnd.github.v3.patch" | ||||
| 	mediaTypeOrgPermissionRepo = "application/vnd.github.v3.repository+json" | ||||
| 	mediaTypeIssueImportAPI    = "application/vnd.github.golden-comet-preview+json" | ||||
| 
 | ||||
| 	// Media Type values to access preview APIs
 | ||||
| 
 | ||||
|  | @ -67,9 +68,6 @@ const ( | |||
| 	// https://developer.github.com/changes/2016-09-14-projects-api/
 | ||||
| 	mediaTypeProjectsPreview = "application/vnd.github.inertia-preview+json" | ||||
| 
 | ||||
| 	// https://developer.github.com/changes/2016-09-14-Integrations-Early-Access/
 | ||||
| 	mediaTypeIntegrationPreview = "application/vnd.github.machine-man-preview+json" | ||||
| 
 | ||||
| 	// https://developer.github.com/changes/2017-01-05-commit-search-api/
 | ||||
| 	mediaTypeCommitSearchPreview = "application/vnd.github.cloak-preview+json" | ||||
| 
 | ||||
|  | @ -88,12 +86,6 @@ const ( | |||
| 	// https://developer.github.com/changes/2018-03-16-protected-branches-required-approving-reviews/
 | ||||
| 	mediaTypeRequiredApprovingReviewsPreview = "application/vnd.github.luke-cage-preview+json" | ||||
| 
 | ||||
| 	// https://developer.github.com/changes/2018-01-10-lock-reason-api-preview/
 | ||||
| 	mediaTypeLockReasonPreview = "application/vnd.github.sailor-v-preview+json" | ||||
| 
 | ||||
| 	// https://developer.github.com/changes/2018-05-07-new-checks-api-public-beta/
 | ||||
| 	mediaTypeCheckRunsPreview = "application/vnd.github.antiope-preview+json" | ||||
| 
 | ||||
| 	// https://developer.github.com/enterprise/2.13/v3/repos/pre_receive_hooks/
 | ||||
| 	mediaTypePreReceiveHooksPreview = "application/vnd.github.eye-scream-preview" | ||||
| 
 | ||||
|  | @ -121,10 +113,10 @@ const ( | |||
| 	// https://developer.github.com/changes/2019-04-11-pulls-branches-for-commit/
 | ||||
| 	mediaTypeListPullsOrBranchesForCommitPreview = "application/vnd.github.groot-preview+json" | ||||
| 
 | ||||
| 	// https://developer.github.com/v3/previews/#repository-creation-permissions
 | ||||
| 	// https://docs.github.com/en/free-pro-team@latest/rest/reference/previews/#repository-creation-permissions
 | ||||
| 	mediaTypeMemberAllowedRepoCreationTypePreview = "application/vnd.github.surtur-preview+json" | ||||
| 
 | ||||
| 	// https://developer.github.com/v3/previews/#create-and-use-repository-templates
 | ||||
| 	// https://docs.github.com/en/free-pro-team@latest/rest/reference/previews/#create-and-use-repository-templates
 | ||||
| 	mediaTypeRepositoryTemplatePreview = "application/vnd.github.baptiste-preview+json" | ||||
| 
 | ||||
| 	// https://developer.github.com/changes/2019-10-03-multi-line-comments/
 | ||||
|  | @ -135,8 +127,13 @@ const ( | |||
| 
 | ||||
| 	// https://developer.github.com/changes/2019-12-03-internal-visibility-changes/
 | ||||
| 	mediaTypeRepositoryVisibilityPreview = "application/vnd.github.nebula-preview+json" | ||||
| 
 | ||||
| 	// https://developer.github.com/changes/2018-12-10-content-attachments-api/
 | ||||
| 	mediaTypeContentAttachmentsPreview = "application/vnd.github.corsair-preview+json" | ||||
| ) | ||||
| 
 | ||||
| var errNonNilContext = errors.New("context must be non-nil") | ||||
| 
 | ||||
| // A Client manages communication with the GitHub API.
 | ||||
| type Client struct { | ||||
| 	clientMu sync.Mutex   // clientMu protects the client during calls that modify the CheckRedirect func.
 | ||||
|  | @ -164,12 +161,15 @@ type Client struct { | |||
| 	Admin          *AdminService | ||||
| 	Apps           *AppsService | ||||
| 	Authorizations *AuthorizationsService | ||||
| 	Billing        *BillingService | ||||
| 	Checks         *ChecksService | ||||
| 	CodeScanning   *CodeScanningService | ||||
| 	Enterprise     *EnterpriseService | ||||
| 	Gists          *GistsService | ||||
| 	Git            *GitService | ||||
| 	Gitignores     *GitignoresService | ||||
| 	Interactions   *InteractionsService | ||||
| 	IssueImport    *IssueImportService | ||||
| 	Issues         *IssuesService | ||||
| 	Licenses       *LicensesService | ||||
| 	Marketplace    *MarketplaceService | ||||
|  | @ -206,6 +206,12 @@ type ListCursorOptions struct { | |||
| 
 | ||||
| 	// For paginated result sets, the number of results to include per page.
 | ||||
| 	PerPage int `url:"per_page,omitempty"` | ||||
| 
 | ||||
| 	// A cursor, as given in the Link header. If specified, the query only searches for events after this cursor.
 | ||||
| 	After string `url:"after,omitempty"` | ||||
| 
 | ||||
| 	// A cursor, as given in the Link header. If specified, the query only searches for events before this cursor.
 | ||||
| 	Before string `url:"before,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // UploadOptions specifies the parameters to methods that support uploads.
 | ||||
|  | @ -271,12 +277,15 @@ func NewClient(httpClient *http.Client) *Client { | |||
| 	c.Admin = (*AdminService)(&c.common) | ||||
| 	c.Apps = (*AppsService)(&c.common) | ||||
| 	c.Authorizations = (*AuthorizationsService)(&c.common) | ||||
| 	c.Billing = (*BillingService)(&c.common) | ||||
| 	c.Checks = (*ChecksService)(&c.common) | ||||
| 	c.CodeScanning = (*CodeScanningService)(&c.common) | ||||
| 	c.Enterprise = (*EnterpriseService)(&c.common) | ||||
| 	c.Gists = (*GistsService)(&c.common) | ||||
| 	c.Git = (*GitService)(&c.common) | ||||
| 	c.Gitignores = (*GitignoresService)(&c.common) | ||||
| 	c.Interactions = (*InteractionsService)(&c.common) | ||||
| 	c.IssueImport = (*IssueImportService)(&c.common) | ||||
| 	c.Issues = (*IssuesService)(&c.common) | ||||
| 	c.Licenses = (*LicensesService)(&c.common) | ||||
| 	c.Marketplace = &MarketplaceService{client: c} | ||||
|  | @ -313,7 +322,9 @@ func NewEnterpriseClient(baseURL, uploadURL string, httpClient *http.Client) (*C | |||
| 	if !strings.HasSuffix(baseEndpoint.Path, "/") { | ||||
| 		baseEndpoint.Path += "/" | ||||
| 	} | ||||
| 	if !strings.HasSuffix(baseEndpoint.Path, "/api/v3/") { | ||||
| 	if !strings.HasSuffix(baseEndpoint.Path, "/api/v3/") && | ||||
| 		!strings.HasPrefix(baseEndpoint.Host, "api.") && | ||||
| 		!strings.Contains(baseEndpoint.Host, ".api.") { | ||||
| 		baseEndpoint.Path += "api/v3/" | ||||
| 	} | ||||
| 
 | ||||
|  | @ -324,7 +335,9 @@ func NewEnterpriseClient(baseURL, uploadURL string, httpClient *http.Client) (*C | |||
| 	if !strings.HasSuffix(uploadEndpoint.Path, "/") { | ||||
| 		uploadEndpoint.Path += "/" | ||||
| 	} | ||||
| 	if !strings.HasSuffix(uploadEndpoint.Path, "/api/uploads/") { | ||||
| 	if !strings.HasSuffix(uploadEndpoint.Path, "/api/uploads/") && | ||||
| 		!strings.HasPrefix(uploadEndpoint.Host, "api.") && | ||||
| 		!strings.Contains(uploadEndpoint.Host, ".api.") { | ||||
| 		uploadEndpoint.Path += "api/uploads/" | ||||
| 	} | ||||
| 
 | ||||
|  | @ -509,29 +522,36 @@ func parseRate(r *http.Response) Rate { | |||
| 	return rate | ||||
| } | ||||
| 
 | ||||
| // Do sends an API request and returns the API response. The API response is
 | ||||
| // JSON decoded and stored in the value pointed to by v, or returned as an
 | ||||
| // error if an API error has occurred. If v implements the io.Writer
 | ||||
| // interface, the raw response body will be written to v, without attempting to
 | ||||
| // first decode it. If rate limit is exceeded and reset time is in the future,
 | ||||
| // Do returns *RateLimitError immediately without making a network API call.
 | ||||
| type requestContext uint8 | ||||
| 
 | ||||
| const ( | ||||
| 	bypassRateLimitCheck requestContext = iota | ||||
| ) | ||||
| 
 | ||||
| // BareDo sends an API request and lets you handle the api response. If an error
 | ||||
| // or API Error occurs, the error will contain more information. Otherwise you
 | ||||
| // are supposed to read and close the response's Body. If rate limit is exceeded
 | ||||
| // and reset time is in the future, BareDo returns *RateLimitError immediately
 | ||||
| // without making a network API call.
 | ||||
| //
 | ||||
| // The provided ctx must be non-nil, if it is nil an error is returned. If it is canceled or times out,
 | ||||
| // ctx.Err() will be returned.
 | ||||
| func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*Response, error) { | ||||
| // The provided ctx must be non-nil, if it is nil an error is returned. If it is
 | ||||
| // canceled or times out, ctx.Err() will be returned.
 | ||||
| func (c *Client) BareDo(ctx context.Context, req *http.Request) (*Response, error) { | ||||
| 	if ctx == nil { | ||||
| 		return nil, errors.New("context must be non-nil") | ||||
| 		return nil, errNonNilContext | ||||
| 	} | ||||
| 	req = withContext(ctx, req) | ||||
| 
 | ||||
| 	rateLimitCategory := category(req.URL.Path) | ||||
| 
 | ||||
| 	// If we've hit rate limit, don't make further requests before Reset time.
 | ||||
| 	if err := c.checkRateLimitBeforeDo(req, rateLimitCategory); err != nil { | ||||
| 		return &Response{ | ||||
| 			Response: err.Response, | ||||
| 			Rate:     err.Rate, | ||||
| 		}, err | ||||
| 	if bypass := ctx.Value(bypassRateLimitCheck); bypass == nil { | ||||
| 		// If we've hit rate limit, don't make further requests before Reset time.
 | ||||
| 		if err := c.checkRateLimitBeforeDo(req, rateLimitCategory); err != nil { | ||||
| 			return &Response{ | ||||
| 				Response: err.Response, | ||||
| 				Rate:     err.Rate, | ||||
| 			}, err | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	resp, err := c.client.Do(req) | ||||
|  | @ -554,7 +574,6 @@ func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*Res | |||
| 
 | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	defer resp.Body.Close() | ||||
| 
 | ||||
| 	response := newResponse(resp) | ||||
| 
 | ||||
|  | @ -564,6 +583,7 @@ func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*Res | |||
| 
 | ||||
| 	err = CheckResponse(resp) | ||||
| 	if err != nil { | ||||
| 		defer resp.Body.Close() | ||||
| 		// Special case for AcceptedErrors. If an AcceptedError
 | ||||
| 		// has been encountered, the response's payload will be
 | ||||
| 		// added to the AcceptedError and returned.
 | ||||
|  | @ -577,29 +597,45 @@ func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*Res | |||
| 			} | ||||
| 
 | ||||
| 			aerr.Raw = b | ||||
| 			return response, aerr | ||||
| 		} | ||||
| 
 | ||||
| 		return response, err | ||||
| 	} | ||||
| 
 | ||||
| 	if v != nil { | ||||
| 		if w, ok := v.(io.Writer); ok { | ||||
| 			io.Copy(w, resp.Body) | ||||
| 		} else { | ||||
| 			decErr := json.NewDecoder(resp.Body).Decode(v) | ||||
| 			if decErr == io.EOF { | ||||
| 				decErr = nil // ignore EOF errors caused by empty response body
 | ||||
| 			} | ||||
| 			if decErr != nil { | ||||
| 				err = decErr | ||||
| 			} | ||||
| 			err = aerr | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return response, err | ||||
| } | ||||
| 
 | ||||
| // Do sends an API request and returns the API response. The API response is
 | ||||
| // JSON decoded and stored in the value pointed to by v, or returned as an
 | ||||
| // error if an API error has occurred. If v implements the io.Writer interface,
 | ||||
| // the raw response body will be written to v, without attempting to first
 | ||||
| // decode it. If v is nil, and no error hapens, the response is returned as is.
 | ||||
| // If rate limit is exceeded and reset time is in the future, Do returns
 | ||||
| // *RateLimitError immediately without making a network API call.
 | ||||
| //
 | ||||
| // The provided ctx must be non-nil, if it is nil an error is returned. If it
 | ||||
| // is canceled or times out, ctx.Err() will be returned.
 | ||||
| func (c *Client) Do(ctx context.Context, req *http.Request, v interface{}) (*Response, error) { | ||||
| 	resp, err := c.BareDo(ctx, req) | ||||
| 	if err != nil { | ||||
| 		return resp, err | ||||
| 	} | ||||
| 	defer resp.Body.Close() | ||||
| 
 | ||||
| 	switch v := v.(type) { | ||||
| 	case nil: | ||||
| 	case io.Writer: | ||||
| 		_, err = io.Copy(v, resp.Body) | ||||
| 	default: | ||||
| 		decErr := json.NewDecoder(resp.Body).Decode(v) | ||||
| 		if decErr == io.EOF { | ||||
| 			decErr = nil // ignore EOF errors caused by empty response body
 | ||||
| 		} | ||||
| 		if decErr != nil { | ||||
| 			err = decErr | ||||
| 		} | ||||
| 	} | ||||
| 	return resp, err | ||||
| } | ||||
| 
 | ||||
| // checkRateLimitBeforeDo does not make any network calls, but uses existing knowledge from
 | ||||
| // current client state in order to quickly check if *RateLimitError can be immediately returned
 | ||||
| // from Client.Do, and if so, returns it so that Client.Do can skip making a network API call unnecessarily.
 | ||||
|  | @ -627,34 +663,95 @@ func (c *Client) checkRateLimitBeforeDo(req *http.Request, rateLimitCategory rat | |||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // compareHttpResponse returns whether two http.Response objects are equal or not.
 | ||||
| // Currently, only StatusCode is checked. This function is used when implementing the
 | ||||
| // Is(error) bool interface for the custom error types in this package.
 | ||||
| func compareHttpResponse(r1, r2 *http.Response) bool { | ||||
| 	if r1 == nil && r2 == nil { | ||||
| 		return true | ||||
| 	} | ||||
| 
 | ||||
| 	if r1 != nil && r2 != nil { | ||||
| 		return r1.StatusCode == r2.StatusCode | ||||
| 	} | ||||
| 	return false | ||||
| } | ||||
| 
 | ||||
| /* | ||||
| An ErrorResponse reports one or more errors caused by an API request. | ||||
| 
 | ||||
| GitHub API docs: https://developer.github.com/v3/#client-errors
 | ||||
| GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/#client-errors
 | ||||
| */ | ||||
| type ErrorResponse struct { | ||||
| 	Response *http.Response // HTTP response that caused this error
 | ||||
| 	Message  string         `json:"message"` // error message
 | ||||
| 	Errors   []Error        `json:"errors"`  // more detail on individual errors
 | ||||
| 	// Block is only populated on certain types of errors such as code 451.
 | ||||
| 	// See https://developer.github.com/changes/2016-03-17-the-451-status-code-is-now-supported/
 | ||||
| 	// for more information.
 | ||||
| 	Block *struct { | ||||
| 		Reason    string     `json:"reason,omitempty"` | ||||
| 		CreatedAt *Timestamp `json:"created_at,omitempty"` | ||||
| 	} `json:"block,omitempty"` | ||||
| 	Block *ErrorBlock `json:"block,omitempty"` | ||||
| 	// Most errors will also include a documentation_url field pointing
 | ||||
| 	// to some content that might help you resolve the error, see
 | ||||
| 	// https://developer.github.com/v3/#client-errors
 | ||||
| 	// https://docs.github.com/en/free-pro-team@latest/rest/reference/#client-errors
 | ||||
| 	DocumentationURL string `json:"documentation_url,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ErrorBlock contains a further explanation for the reason of an error.
 | ||||
| // See https://developer.github.com/changes/2016-03-17-the-451-status-code-is-now-supported/
 | ||||
| // for more information.
 | ||||
| type ErrorBlock struct { | ||||
| 	Reason    string     `json:"reason,omitempty"` | ||||
| 	CreatedAt *Timestamp `json:"created_at,omitempty"` | ||||
| } | ||||
| 
 | ||||
| func (r *ErrorResponse) Error() string { | ||||
| 	return fmt.Sprintf("%v %v: %d %v %+v", | ||||
| 		r.Response.Request.Method, sanitizeURL(r.Response.Request.URL), | ||||
| 		r.Response.StatusCode, r.Message, r.Errors) | ||||
| } | ||||
| 
 | ||||
| // Is returns whether the provided error equals this error.
 | ||||
| func (r *ErrorResponse) Is(target error) bool { | ||||
| 	v, ok := target.(*ErrorResponse) | ||||
| 	if !ok { | ||||
| 		return false | ||||
| 	} | ||||
| 
 | ||||
| 	if r.Message != v.Message || (r.DocumentationURL != v.DocumentationURL) || | ||||
| 		!compareHttpResponse(r.Response, v.Response) { | ||||
| 		return false | ||||
| 	} | ||||
| 
 | ||||
| 	// Compare Errors.
 | ||||
| 	if len(r.Errors) != len(v.Errors) { | ||||
| 		return false | ||||
| 	} | ||||
| 	for idx := range r.Errors { | ||||
| 		if r.Errors[idx] != v.Errors[idx] { | ||||
| 			return false | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	// Compare Block.
 | ||||
| 	if (r.Block != nil && v.Block == nil) || (r.Block == nil && v.Block != nil) { | ||||
| 		return false | ||||
| 	} | ||||
| 	if r.Block != nil && v.Block != nil { | ||||
| 		if r.Block.Reason != v.Block.Reason { | ||||
| 			return false | ||||
| 		} | ||||
| 		if (r.Block.CreatedAt != nil && v.Block.CreatedAt == nil) || (r.Block.CreatedAt == | ||||
| 			nil && v.Block.CreatedAt != nil) { | ||||
| 			return false | ||||
| 		} | ||||
| 		if r.Block.CreatedAt != nil && v.Block.CreatedAt != nil { | ||||
| 			if *(r.Block.CreatedAt) != *(v.Block.CreatedAt) { | ||||
| 				return false | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return true | ||||
| } | ||||
| 
 | ||||
| // TwoFactorAuthError occurs when using HTTP Basic Authentication for a user
 | ||||
| // that has two-factor authentication enabled. The request can be reattempted
 | ||||
| // by providing a one-time password in the request.
 | ||||
|  | @ -676,6 +773,18 @@ func (r *RateLimitError) Error() string { | |||
| 		r.Response.StatusCode, r.Message, formatRateReset(time.Until(r.Rate.Reset.Time))) | ||||
| } | ||||
| 
 | ||||
| // Is returns whether the provided error equals this error.
 | ||||
| func (r *RateLimitError) Is(target error) bool { | ||||
| 	v, ok := target.(*RateLimitError) | ||||
| 	if !ok { | ||||
| 		return false | ||||
| 	} | ||||
| 
 | ||||
| 	return r.Rate == v.Rate && | ||||
| 		r.Message == v.Message && | ||||
| 		compareHttpResponse(r.Response, v.Response) | ||||
| } | ||||
| 
 | ||||
| // AcceptedError occurs when GitHub returns 202 Accepted response with an
 | ||||
| // empty body, which means a job was scheduled on the GitHub side to process
 | ||||
| // the information needed and cache it.
 | ||||
|  | @ -691,8 +800,17 @@ func (*AcceptedError) Error() string { | |||
| 	return "job scheduled on GitHub side; try again later" | ||||
| } | ||||
| 
 | ||||
| // Is returns whether the provided error equals this error.
 | ||||
| func (ae *AcceptedError) Is(target error) bool { | ||||
| 	v, ok := target.(*AcceptedError) | ||||
| 	if !ok { | ||||
| 		return false | ||||
| 	} | ||||
| 	return bytes.Compare(ae.Raw, v.Raw) == 0 | ||||
| } | ||||
| 
 | ||||
| // AbuseRateLimitError occurs when GitHub returns 403 Forbidden response with the
 | ||||
| // "documentation_url" field value equal to "https://developer.github.com/v3/#abuse-rate-limits".
 | ||||
| // "documentation_url" field value equal to "https://docs.github.com/en/free-pro-team@latest/rest/reference/#abuse-rate-limits".
 | ||||
| type AbuseRateLimitError struct { | ||||
| 	Response *http.Response // HTTP response that caused this error
 | ||||
| 	Message  string         `json:"message"` // error message
 | ||||
|  | @ -709,6 +827,18 @@ func (r *AbuseRateLimitError) Error() string { | |||
| 		r.Response.StatusCode, r.Message) | ||||
| } | ||||
| 
 | ||||
| // Is returns whether the provided error equals this error.
 | ||||
| func (r *AbuseRateLimitError) Is(target error) bool { | ||||
| 	v, ok := target.(*AbuseRateLimitError) | ||||
| 	if !ok { | ||||
| 		return false | ||||
| 	} | ||||
| 
 | ||||
| 	return r.Message == v.Message && | ||||
| 		r.RetryAfter == v.RetryAfter && | ||||
| 		compareHttpResponse(r.Response, v.Response) | ||||
| } | ||||
| 
 | ||||
| // sanitizeURL redacts the client_secret parameter from the URL which may be
 | ||||
| // exposed to the user.
 | ||||
| func sanitizeURL(uri *url.URL) *url.URL { | ||||
|  | @ -743,7 +873,7 @@ GitHub error responses structure are often undocumented and inconsistent. | |||
| Sometimes error is just a simple string (Issue #540). | ||||
| In such cases, Message represents an error message as a workaround. | ||||
| 
 | ||||
| GitHub API docs: https://developer.github.com/v3/#client-errors
 | ||||
| GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/#client-errors
 | ||||
| */ | ||||
| type Error struct { | ||||
| 	Resource string `json:"resource"` // resource on which the error occurred
 | ||||
|  | @ -799,7 +929,7 @@ func CheckResponse(r *http.Response) error { | |||
| 			Response: errorResponse.Response, | ||||
| 			Message:  errorResponse.Message, | ||||
| 		} | ||||
| 	case r.StatusCode == http.StatusForbidden && strings.HasSuffix(errorResponse.DocumentationURL, "/v3/#abuse-rate-limits"): | ||||
| 	case r.StatusCode == http.StatusForbidden && strings.HasSuffix(errorResponse.DocumentationURL, "#abuse-rate-limits"): | ||||
| 		abuseRateLimitError := &AbuseRateLimitError{ | ||||
| 			Response: errorResponse.Response, | ||||
| 			Message:  errorResponse.Message, | ||||
|  | @ -859,14 +989,14 @@ type RateLimits struct { | |||
| 	// requests are limited to 60 per hour. Authenticated requests are
 | ||||
| 	// limited to 5,000 per hour.
 | ||||
| 	//
 | ||||
| 	// GitHub API docs: https://developer.github.com/v3/#rate-limiting
 | ||||
| 	// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/#rate-limiting
 | ||||
| 	Core *Rate `json:"core"` | ||||
| 
 | ||||
| 	// The rate limit for search API requests. Unauthenticated requests
 | ||||
| 	// are limited to 10 requests per minutes. Authenticated requests are
 | ||||
| 	// limited to 30 per minute.
 | ||||
| 	//
 | ||||
| 	// GitHub API docs: https://developer.github.com/v3/search/#rate-limit
 | ||||
| 	// GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/search/#rate-limit
 | ||||
| 	Search *Rate `json:"search"` | ||||
| } | ||||
| 
 | ||||
|  | @ -903,9 +1033,12 @@ func (c *Client) RateLimits(ctx context.Context) (*RateLimits, *Response, error) | |||
| 	response := new(struct { | ||||
| 		Resources *RateLimits `json:"resources"` | ||||
| 	}) | ||||
| 
 | ||||
| 	// This resource is not subject to rate limits.
 | ||||
| 	ctx = context.WithValue(ctx, bypassRateLimitCheck, true) | ||||
| 	resp, err := c.Do(ctx, req, response) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	if response.Resources != nil { | ||||
|  | @ -953,7 +1086,7 @@ that need to use a higher rate limit associated with your OAuth application. | |||
| This will add the client id and secret as a base64-encoded string in the format | ||||
| ClientID:ClientSecret and apply it as an "Authorization": "Basic" header. | ||||
| 
 | ||||
| See https://developer.github.com/v3/#unauthenticated-rate-limited-requests for
 | ||||
| See https://docs.github.com/en/free-pro-team@latest/rest/reference/#unauthenticated-rate-limited-requests for
 | ||||
| more information. | ||||
| */ | ||||
| type UnauthenticatedRateLimitedTransport struct { | ||||
|  | @ -13,7 +13,7 @@ import ( | |||
| // GitignoresService provides access to the gitignore related functions in the
 | ||||
| // GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gitignore/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gitignore/
 | ||||
| type GitignoresService service | ||||
| 
 | ||||
| // Gitignore represents a .gitignore file as returned by the GitHub API.
 | ||||
|  | @ -28,7 +28,7 @@ func (g Gitignore) String() string { | |||
| 
 | ||||
| // List all available Gitignore templates.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gitignore/#listing-available-templates
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gitignore/#listing-available-templates
 | ||||
| func (s *GitignoresService) List(ctx context.Context) ([]string, *Response, error) { | ||||
| 	req, err := s.client.NewRequest("GET", "gitignore/templates", nil) | ||||
| 	if err != nil { | ||||
|  | @ -46,7 +46,7 @@ func (s *GitignoresService) List(ctx context.Context) ([]string, *Response, erro | |||
| 
 | ||||
| // Get a Gitignore by name.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/gitignore/#get-a-gitignore-template
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/gitignore/#get-a-gitignore-template
 | ||||
| func (s *GitignoresService) Get(ctx context.Context, name string) (*Gitignore, *Response, error) { | ||||
| 	u := fmt.Sprintf("gitignore/templates/%v", name) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -8,7 +8,7 @@ package github | |||
| // InteractionsService handles communication with the repository and organization related
 | ||||
| // methods of the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/interactions/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/interactions/
 | ||||
| type InteractionsService service | ||||
| 
 | ||||
| // InteractionRestriction represents the interaction restrictions for repository and organization.
 | ||||
|  | @ -12,7 +12,7 @@ import ( | |||
| 
 | ||||
| // GetRestrictionsForOrg fetches the interaction restrictions for an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/interactions/orgs/#get-interaction-restrictions-for-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/interactions/#get-interaction-restrictions-for-an-organization
 | ||||
| func (s *InteractionsService) GetRestrictionsForOrg(ctx context.Context, organization string) (*InteractionRestriction, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/interaction-limits", organization) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -39,7 +39,7 @@ func (s *InteractionsService) GetRestrictionsForOrg(ctx context.Context, organiz | |||
| // in public repositories for the given organization.
 | ||||
| // Possible values are: "existing_users", "contributors_only", "collaborators_only".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/interactions/orgs/#set-interaction-restrictions-for-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/interactions/#set-interaction-restrictions-for-an-organization
 | ||||
| func (s *InteractionsService) UpdateRestrictionsForOrg(ctx context.Context, organization, limit string) (*InteractionRestriction, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/interaction-limits", organization) | ||||
| 
 | ||||
|  | @ -65,7 +65,7 @@ func (s *InteractionsService) UpdateRestrictionsForOrg(ctx context.Context, orga | |||
| 
 | ||||
| // RemoveRestrictionsFromOrg removes the interaction restrictions for an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/interactions/orgs/#remove-interaction-restrictions-for-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/interactions/#remove-interaction-restrictions-for-an-organization
 | ||||
| func (s *InteractionsService) RemoveRestrictionsFromOrg(ctx context.Context, organization string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/interaction-limits", organization) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -12,7 +12,7 @@ import ( | |||
| 
 | ||||
| // GetRestrictionsForRepo fetches the interaction restrictions for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/interactions/repos/#get-interaction-restrictions-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/interactions/#get-interaction-restrictions-for-a-repository
 | ||||
| func (s *InteractionsService) GetRestrictionsForRepo(ctx context.Context, owner, repo string) (*InteractionRestriction, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/interaction-limits", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -39,7 +39,7 @@ func (s *InteractionsService) GetRestrictionsForRepo(ctx context.Context, owner, | |||
| // for the given repository.
 | ||||
| // Possible values are: "existing_users", "contributors_only", "collaborators_only".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/interactions/repos/#set-interaction-restrictions-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/interactions/#set-interaction-restrictions-for-a-repository
 | ||||
| func (s *InteractionsService) UpdateRestrictionsForRepo(ctx context.Context, owner, repo, limit string) (*InteractionRestriction, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/interaction-limits", owner, repo) | ||||
| 
 | ||||
|  | @ -65,7 +65,7 @@ func (s *InteractionsService) UpdateRestrictionsForRepo(ctx context.Context, own | |||
| 
 | ||||
| // RemoveRestrictionsFromRepo removes the interaction restrictions for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/interactions/repos/#remove-interaction-restrictions-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/interactions/#remove-interaction-restrictions-for-a-repository
 | ||||
| func (s *InteractionsService) RemoveRestrictionsFromRepo(ctx context.Context, owner, repo string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/interaction-limits", owner, repo) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -0,0 +1,152 @@ | |||
| // Copyright 2020 The go-github AUTHORS. All rights reserved.
 | ||||
| //
 | ||||
| // Use of this source code is governed by a BSD-style
 | ||||
| // license that can be found in the LICENSE file.
 | ||||
| 
 | ||||
| package github | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
| // IssueImportService handles communication with the issue import related
 | ||||
| // methods of the Issue Import GitHub API.
 | ||||
| type IssueImportService service | ||||
| 
 | ||||
| // IssueImportRequest represents a request to create an issue.
 | ||||
| //
 | ||||
| // https://gist.github.com/jonmagic/5282384165e0f86ef105#supported-issue-and-comment-fields
 | ||||
| type IssueImportRequest struct { | ||||
| 	IssueImport IssueImport `json:"issue"` | ||||
| 	Comments    []*Comment  `json:"comments,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // IssueImport represents body of issue to import.
 | ||||
| type IssueImport struct { | ||||
| 	Title     string     `json:"title"` | ||||
| 	Body      string     `json:"body"` | ||||
| 	CreatedAt *time.Time `json:"created_at,omitempty"` | ||||
| 	ClosedAt  *time.Time `json:"closed_at,omitempty"` | ||||
| 	UpdatedAt *time.Time `json:"updated_at,omitempty"` | ||||
| 	Assignee  *string    `json:"assignee,omitempty"` | ||||
| 	Milestone *int       `json:"milestone,omitempty"` | ||||
| 	Closed    *bool      `json:"closed,omitempty"` | ||||
| 	Labels    []string   `json:"labels,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // Comment represents comments of issue to import.
 | ||||
| type Comment struct { | ||||
| 	CreatedAt *time.Time `json:"created_at,omitempty"` | ||||
| 	Body      string     `json:"body"` | ||||
| } | ||||
| 
 | ||||
| // IssueImportResponse represents the response of an issue import create request.
 | ||||
| //
 | ||||
| // https://gist.github.com/jonmagic/5282384165e0f86ef105#import-issue-response
 | ||||
| type IssueImportResponse struct { | ||||
| 	ID               *int                `json:"id,omitempty"` | ||||
| 	Status           *string             `json:"status,omitempty"` | ||||
| 	URL              *string             `json:"url,omitempty"` | ||||
| 	ImportIssuesURL  *string             `json:"import_issues_url,omitempty"` | ||||
| 	RepositoryURL    *string             `json:"repository_url,omitempty"` | ||||
| 	CreatedAt        *time.Time          `json:"created_at,omitempty"` | ||||
| 	UpdatedAt        *time.Time          `json:"updated_at,omitempty"` | ||||
| 	Message          *string             `json:"message,omitempty"` | ||||
| 	DocumentationURL *string             `json:"documentation_url,omitempty"` | ||||
| 	Errors           []*IssueImportError `json:"errors,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // IssueImportError represents errors of an issue import create request.
 | ||||
| type IssueImportError struct { | ||||
| 	Location *string `json:"location,omitempty"` | ||||
| 	Resource *string `json:"resource,omitempty"` | ||||
| 	Field    *string `json:"field,omitempty"` | ||||
| 	Value    *string `json:"value,omitempty"` | ||||
| 	Code     *string `json:"code,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // Create a new imported issue on the specified repository.
 | ||||
| //
 | ||||
| // https://gist.github.com/jonmagic/5282384165e0f86ef105#start-an-issue-import
 | ||||
| func (s *IssueImportService) Create(ctx context.Context, owner, repo string, issue *IssueImportRequest) (*IssueImportResponse, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/import/issues", owner, repo) | ||||
| 	req, err := s.client.NewRequest("POST", u, issue) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept headers when APIs fully launch.
 | ||||
| 	req.Header.Set("Accept", mediaTypeIssueImportAPI) | ||||
| 
 | ||||
| 	i := new(IssueImportResponse) | ||||
| 	resp, err := s.client.Do(ctx, req, i) | ||||
| 	if err != nil { | ||||
| 		aerr, ok := err.(*AcceptedError) | ||||
| 		if ok { | ||||
| 			decErr := json.Unmarshal(aerr.Raw, i) | ||||
| 			if decErr != nil { | ||||
| 				err = decErr | ||||
| 			} | ||||
| 
 | ||||
| 			return i, resp, nil | ||||
| 		} | ||||
| 
 | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return i, resp, nil | ||||
| } | ||||
| 
 | ||||
| // CheckStatus checks the status of an imported issue.
 | ||||
| //
 | ||||
| // https://gist.github.com/jonmagic/5282384165e0f86ef105#import-status-request
 | ||||
| func (s *IssueImportService) CheckStatus(ctx context.Context, owner, repo string, issueID int64) (*IssueImportResponse, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/import/issues/%v", owner, repo, issueID) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept headers when APIs fully launch.
 | ||||
| 	req.Header.Set("Accept", mediaTypeIssueImportAPI) | ||||
| 
 | ||||
| 	i := new(IssueImportResponse) | ||||
| 	resp, err := s.client.Do(ctx, req, i) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return i, resp, nil | ||||
| } | ||||
| 
 | ||||
| // CheckStatusSince checks the status of multiple imported issues since a given date.
 | ||||
| //
 | ||||
| // https://gist.github.com/jonmagic/5282384165e0f86ef105#check-status-of-multiple-issues
 | ||||
| func (s *IssueImportService) CheckStatusSince(ctx context.Context, owner, repo string, since time.Time) ([]*IssueImportResponse, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/import/issues?since=%v", owner, repo, since.Format("2006-01-02")) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept headers when APIs fully launch.
 | ||||
| 	req.Header.Set("Accept", mediaTypeIssueImportAPI) | ||||
| 
 | ||||
| 	var b bytes.Buffer | ||||
| 	resp, err := s.client.Do(ctx, req, &b) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	var i []*IssueImportResponse | ||||
| 	err = json.Unmarshal(b.Bytes(), &i) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return i, resp, nil | ||||
| } | ||||
|  | @ -8,14 +8,13 @@ package github | |||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 	"strings" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
| // IssuesService handles communication with the issue related
 | ||||
| // methods of the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/
 | ||||
| type IssuesService service | ||||
| 
 | ||||
| // Issue represents a GitHub issue on a repository.
 | ||||
|  | @ -55,7 +54,7 @@ type Issue struct { | |||
| 	NodeID            *string           `json:"node_id,omitempty"` | ||||
| 
 | ||||
| 	// TextMatches is only populated from search results that request text matches
 | ||||
| 	// See: search.go and https://developer.github.com/v3/search/#text-match-metadata
 | ||||
| 	// See: search.go and https://docs.github.com/en/free-pro-team@latest/rest/reference/search/#text-match-metadata
 | ||||
| 	TextMatches []*TextMatch `json:"text_matches,omitempty"` | ||||
| 
 | ||||
| 	// ActiveLockReason is populated only when LockReason is provided while locking the issue.
 | ||||
|  | @ -129,8 +128,8 @@ type PullRequestLinks struct { | |||
| // organization repositories; if false, list only owned and member
 | ||||
| // repositories.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/#list-issues-assigned-to-the-authenticated-user
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/#list-user-account-issues-assigned-to-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-user-account-issues-assigned-to-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-issues-assigned-to-the-authenticated-user
 | ||||
| func (s *IssuesService) List(ctx context.Context, all bool, opts *IssueListOptions) ([]*Issue, *Response, error) { | ||||
| 	var u string | ||||
| 	if all { | ||||
|  | @ -144,7 +143,7 @@ func (s *IssuesService) List(ctx context.Context, all bool, opts *IssueListOptio | |||
| // ListByOrg fetches the issues in the specified organization for the
 | ||||
| // authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/#list-organization-issues-assigned-to-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-organization-issues-assigned-to-the-authenticated-user
 | ||||
| func (s *IssuesService) ListByOrg(ctx context.Context, org string, opts *IssueListOptions) ([]*Issue, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/issues", org) | ||||
| 	return s.listIssues(ctx, u, opts) | ||||
|  | @ -161,9 +160,8 @@ func (s *IssuesService) listIssues(ctx context.Context, u string, opts *IssueLis | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept headers when APIs fully launch.
 | ||||
| 	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeLockReasonPreview} | ||||
| 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) | ||||
| 	// TODO: remove custom Accept header when this API fully launch.
 | ||||
| 	req.Header.Set("Accept", mediaTypeReactionsPreview) | ||||
| 
 | ||||
| 	var issues []*Issue | ||||
| 	resp, err := s.client.Do(ctx, req, &issues) | ||||
|  | @ -216,7 +214,7 @@ type IssueListByRepoOptions struct { | |||
| 
 | ||||
| // ListByRepo lists the issues for the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/#list-repository-issues
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-repository-issues
 | ||||
| func (s *IssuesService) ListByRepo(ctx context.Context, owner string, repo string, opts *IssueListByRepoOptions) ([]*Issue, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -229,9 +227,8 @@ func (s *IssuesService) ListByRepo(ctx context.Context, owner string, repo strin | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept headers when APIs fully launch.
 | ||||
| 	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeIntegrationPreview} | ||||
| 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	req.Header.Set("Accept", mediaTypeReactionsPreview) | ||||
| 
 | ||||
| 	var issues []*Issue | ||||
| 	resp, err := s.client.Do(ctx, req, &issues) | ||||
|  | @ -244,7 +241,7 @@ func (s *IssuesService) ListByRepo(ctx context.Context, owner string, repo strin | |||
| 
 | ||||
| // Get a single issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/#get-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#get-an-issue
 | ||||
| func (s *IssuesService) Get(ctx context.Context, owner string, repo string, number int) (*Issue, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%d", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -252,9 +249,8 @@ func (s *IssuesService) Get(ctx context.Context, owner string, repo string, numb | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept headers when APIs fully launch.
 | ||||
| 	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeLockReasonPreview} | ||||
| 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) | ||||
| 	// TODO: remove custom Accept header when this API fully launch.
 | ||||
| 	req.Header.Set("Accept", mediaTypeReactionsPreview) | ||||
| 
 | ||||
| 	issue := new(Issue) | ||||
| 	resp, err := s.client.Do(ctx, req, issue) | ||||
|  | @ -267,7 +263,7 @@ func (s *IssuesService) Get(ctx context.Context, owner string, repo string, numb | |||
| 
 | ||||
| // Create a new issue on the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/#create-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#create-an-issue
 | ||||
| func (s *IssuesService) Create(ctx context.Context, owner string, repo string, issue *IssueRequest) (*Issue, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues", owner, repo) | ||||
| 	req, err := s.client.NewRequest("POST", u, issue) | ||||
|  | @ -286,7 +282,7 @@ func (s *IssuesService) Create(ctx context.Context, owner string, repo string, i | |||
| 
 | ||||
| // Edit an issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/#update-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#update-an-issue
 | ||||
| func (s *IssuesService) Edit(ctx context.Context, owner string, repo string, number int, issue *IssueRequest) (*Issue, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%d", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, issue) | ||||
|  | @ -314,7 +310,7 @@ type LockIssueOptions struct { | |||
| 
 | ||||
| // Lock an issue's conversation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/#lock-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#lock-an-issue
 | ||||
| func (s *IssuesService) Lock(ctx context.Context, owner string, repo string, number int, opts *LockIssueOptions) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%d/lock", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("PUT", u, opts) | ||||
|  | @ -322,16 +318,12 @@ func (s *IssuesService) Lock(ctx context.Context, owner string, repo string, num | |||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	if opts != nil { | ||||
| 		req.Header.Set("Accept", mediaTypeLockReasonPreview) | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // Unlock an issue's conversation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/#unlock-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#unlock-an-issue
 | ||||
| func (s *IssuesService) Unlock(ctx context.Context, owner string, repo string, number int) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%d/lock", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -13,7 +13,7 @@ import ( | |||
| // ListAssignees fetches all available assignees (owners and collaborators) to
 | ||||
| // which issues may be assigned.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/assignees/#list-assignees
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-assignees
 | ||||
| func (s *IssuesService) ListAssignees(ctx context.Context, owner, repo string, opts *ListOptions) ([]*User, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/assignees", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -36,7 +36,7 @@ func (s *IssuesService) ListAssignees(ctx context.Context, owner, repo string, o | |||
| 
 | ||||
| // IsAssignee checks if a user is an assignee for the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/assignees/#check-if-a-user-can-be-assigned
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#check-if-a-user-can-be-assigned
 | ||||
| func (s *IssuesService) IsAssignee(ctx context.Context, owner, repo, user string) (bool, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/assignees/%v", owner, repo, user) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -50,7 +50,7 @@ func (s *IssuesService) IsAssignee(ctx context.Context, owner, repo, user string | |||
| 
 | ||||
| // AddAssignees adds the provided GitHub users as assignees to the issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/assignees/#add-assignees-to-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#add-assignees-to-an-issue
 | ||||
| func (s *IssuesService) AddAssignees(ctx context.Context, owner, repo string, number int, assignees []string) (*Issue, *Response, error) { | ||||
| 	users := &struct { | ||||
| 		Assignees []string `json:"assignees,omitempty"` | ||||
|  | @ -68,7 +68,7 @@ func (s *IssuesService) AddAssignees(ctx context.Context, owner, repo string, nu | |||
| 
 | ||||
| // RemoveAssignees removes the provided GitHub users as assignees from the issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/assignees/#remove-assignees-from-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#remove-assignees-from-an-issue
 | ||||
| func (s *IssuesService) RemoveAssignees(ctx context.Context, owner, repo string, number int, assignees []string) (*Issue, *Response, error) { | ||||
| 	users := &struct { | ||||
| 		Assignees []string `json:"assignees,omitempty"` | ||||
|  | @ -50,8 +50,8 @@ type IssueListCommentsOptions struct { | |||
| // ListComments lists all comments on the specified issue. Specifying an issue
 | ||||
| // number of 0 will return all comments on all issues for the repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/comments/#list-issue-comments
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/comments/#list-issue-comments-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-issue-comments
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-issue-comments-for-a-repository
 | ||||
| func (s *IssuesService) ListComments(ctx context.Context, owner string, repo string, number int, opts *IssueListCommentsOptions) ([]*IssueComment, *Response, error) { | ||||
| 	var u string | ||||
| 	if number == 0 { | ||||
|  | @ -83,7 +83,7 @@ func (s *IssuesService) ListComments(ctx context.Context, owner string, repo str | |||
| 
 | ||||
| // GetComment fetches the specified issue comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/comments/#get-an-issue-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#get-an-issue-comment
 | ||||
| func (s *IssuesService) GetComment(ctx context.Context, owner string, repo string, commentID int64) (*IssueComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/comments/%d", owner, repo, commentID) | ||||
| 
 | ||||
|  | @ -106,7 +106,7 @@ func (s *IssuesService) GetComment(ctx context.Context, owner string, repo strin | |||
| 
 | ||||
| // CreateComment creates a new comment on the specified issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/comments/#create-an-issue-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#create-an-issue-comment
 | ||||
| func (s *IssuesService) CreateComment(ctx context.Context, owner string, repo string, number int, comment *IssueComment) (*IssueComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%d/comments", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("POST", u, comment) | ||||
|  | @ -125,7 +125,7 @@ func (s *IssuesService) CreateComment(ctx context.Context, owner string, repo st | |||
| // EditComment updates an issue comment.
 | ||||
| // A non-nil comment.Body must be provided. Other comment fields should be left nil.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/comments/#update-an-issue-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#update-an-issue-comment
 | ||||
| func (s *IssuesService) EditComment(ctx context.Context, owner string, repo string, commentID int64, comment *IssueComment) (*IssueComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/comments/%d", owner, repo, commentID) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, comment) | ||||
|  | @ -143,7 +143,7 @@ func (s *IssuesService) EditComment(ctx context.Context, owner string, repo stri | |||
| 
 | ||||
| // DeleteComment deletes an issue comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/comments/#delete-an-issue-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#delete-an-issue-comment
 | ||||
| func (s *IssuesService) DeleteComment(ctx context.Context, owner string, repo string, commentID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/comments/%d", owner, repo, commentID) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -8,7 +8,6 @@ package github | |||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 	"strings" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
|  | @ -66,21 +65,27 @@ type IssueEvent struct { | |||
| 	//    review_dismissed
 | ||||
| 	//       The review was dismissed and `DismissedReview` will be populated below.
 | ||||
| 	//
 | ||||
| 	//    review_requested, review_request_removed
 | ||||
| 	//       The Actor requested or removed the request for a review.
 | ||||
| 	//       RequestedReviewer and ReviewRequester will be populated below.
 | ||||
| 	//
 | ||||
| 	Event *string `json:"event,omitempty"` | ||||
| 
 | ||||
| 	CreatedAt *time.Time `json:"created_at,omitempty"` | ||||
| 	Issue     *Issue     `json:"issue,omitempty"` | ||||
| 
 | ||||
| 	// Only present on certain events; see above.
 | ||||
| 	Assignee        *User            `json:"assignee,omitempty"` | ||||
| 	Assigner        *User            `json:"assigner,omitempty"` | ||||
| 	CommitID        *string          `json:"commit_id,omitempty"` | ||||
| 	Milestone       *Milestone       `json:"milestone,omitempty"` | ||||
| 	Label           *Label           `json:"label,omitempty"` | ||||
| 	Rename          *Rename          `json:"rename,omitempty"` | ||||
| 	LockReason      *string          `json:"lock_reason,omitempty"` | ||||
| 	ProjectCard     *ProjectCard     `json:"project_card,omitempty"` | ||||
| 	DismissedReview *DismissedReview `json:"dismissed_review,omitempty"` | ||||
| 	Assignee          *User            `json:"assignee,omitempty"` | ||||
| 	Assigner          *User            `json:"assigner,omitempty"` | ||||
| 	CommitID          *string          `json:"commit_id,omitempty"` | ||||
| 	Milestone         *Milestone       `json:"milestone,omitempty"` | ||||
| 	Label             *Label           `json:"label,omitempty"` | ||||
| 	Rename            *Rename          `json:"rename,omitempty"` | ||||
| 	LockReason        *string          `json:"lock_reason,omitempty"` | ||||
| 	ProjectCard       *ProjectCard     `json:"project_card,omitempty"` | ||||
| 	DismissedReview   *DismissedReview `json:"dismissed_review,omitempty"` | ||||
| 	RequestedReviewer *User            `json:"requested_reviewer,omitempty"` | ||||
| 	ReviewRequester   *User            `json:"review_requester,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // DismissedReview represents details for 'dismissed_review' events.
 | ||||
|  | @ -95,7 +100,7 @@ type DismissedReview struct { | |||
| 
 | ||||
| // ListIssueEvents lists events for the specified issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/events/#list-issue-events
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-issue-events
 | ||||
| func (s *IssuesService) ListIssueEvents(ctx context.Context, owner, repo string, number int, opts *ListOptions) ([]*IssueEvent, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%v/events", owner, repo, number) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -108,8 +113,7 @@ func (s *IssuesService) ListIssueEvents(ctx context.Context, owner, repo string, | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	acceptHeaders := []string{mediaTypeLockReasonPreview, mediaTypeProjectCardDetailsPreview} | ||||
| 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) | ||||
| 	req.Header.Set("Accept", mediaTypeProjectCardDetailsPreview) | ||||
| 
 | ||||
| 	var events []*IssueEvent | ||||
| 	resp, err := s.client.Do(ctx, req, &events) | ||||
|  | @ -122,7 +126,7 @@ func (s *IssuesService) ListIssueEvents(ctx context.Context, owner, repo string, | |||
| 
 | ||||
| // ListRepositoryEvents lists events for the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/events/#list-issue-events-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-issue-events-for-a-repository
 | ||||
| func (s *IssuesService) ListRepositoryEvents(ctx context.Context, owner, repo string, opts *ListOptions) ([]*IssueEvent, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/events", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -146,7 +150,7 @@ func (s *IssuesService) ListRepositoryEvents(ctx context.Context, owner, repo st | |||
| 
 | ||||
| // GetEvent returns the specified issue event.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/events/#get-an-issue-event
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#get-an-issue-event
 | ||||
| func (s *IssuesService) GetEvent(ctx context.Context, owner, repo string, id int64) (*IssueEvent, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/events/%v", owner, repo, id) | ||||
| 
 | ||||
|  | @ -27,7 +27,7 @@ func (l Label) String() string { | |||
| 
 | ||||
| // ListLabels lists all labels for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/labels/#list-labels-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-labels-for-a-repository
 | ||||
| func (s *IssuesService) ListLabels(ctx context.Context, owner string, repo string, opts *ListOptions) ([]*Label, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/labels", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -51,7 +51,7 @@ func (s *IssuesService) ListLabels(ctx context.Context, owner string, repo strin | |||
| 
 | ||||
| // GetLabel gets a single label.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/labels/#get-a-label
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#get-a-label
 | ||||
| func (s *IssuesService) GetLabel(ctx context.Context, owner string, repo string, name string) (*Label, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/labels/%v", owner, repo, name) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -70,7 +70,7 @@ func (s *IssuesService) GetLabel(ctx context.Context, owner string, repo string, | |||
| 
 | ||||
| // CreateLabel creates a new label on the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/labels/#create-a-label
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#create-a-label
 | ||||
| func (s *IssuesService) CreateLabel(ctx context.Context, owner string, repo string, label *Label) (*Label, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/labels", owner, repo) | ||||
| 	req, err := s.client.NewRequest("POST", u, label) | ||||
|  | @ -89,7 +89,7 @@ func (s *IssuesService) CreateLabel(ctx context.Context, owner string, repo stri | |||
| 
 | ||||
| // EditLabel edits a label.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/labels/#update-a-label
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#update-a-label
 | ||||
| func (s *IssuesService) EditLabel(ctx context.Context, owner string, repo string, name string, label *Label) (*Label, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/labels/%v", owner, repo, name) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, label) | ||||
|  | @ -108,7 +108,7 @@ func (s *IssuesService) EditLabel(ctx context.Context, owner string, repo string | |||
| 
 | ||||
| // DeleteLabel deletes a label.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/labels/#delete-a-label
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#delete-a-label
 | ||||
| func (s *IssuesService) DeleteLabel(ctx context.Context, owner string, repo string, name string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/labels/%v", owner, repo, name) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -120,7 +120,7 @@ func (s *IssuesService) DeleteLabel(ctx context.Context, owner string, repo stri | |||
| 
 | ||||
| // ListLabelsByIssue lists all labels for an issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/labels/#list-labels-for-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-labels-for-an-issue
 | ||||
| func (s *IssuesService) ListLabelsByIssue(ctx context.Context, owner string, repo string, number int, opts *ListOptions) ([]*Label, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -144,7 +144,7 @@ func (s *IssuesService) ListLabelsByIssue(ctx context.Context, owner string, rep | |||
| 
 | ||||
| // AddLabelsToIssue adds labels to an issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#add-labels-to-an-issue
 | ||||
| func (s *IssuesService) AddLabelsToIssue(ctx context.Context, owner string, repo string, number int, labels []string) ([]*Label, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("POST", u, labels) | ||||
|  | @ -163,7 +163,7 @@ func (s *IssuesService) AddLabelsToIssue(ctx context.Context, owner string, repo | |||
| 
 | ||||
| // RemoveLabelForIssue removes a label for an issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/labels/#remove-a-label-from-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#remove-a-label-from-an-issue
 | ||||
| func (s *IssuesService) RemoveLabelForIssue(ctx context.Context, owner string, repo string, number int, label string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%d/labels/%v", owner, repo, number, label) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -176,7 +176,7 @@ func (s *IssuesService) RemoveLabelForIssue(ctx context.Context, owner string, r | |||
| 
 | ||||
| // ReplaceLabelsForIssue replaces all labels for an issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/labels/#set-labels-for-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#set-labels-for-an-issue
 | ||||
| func (s *IssuesService) ReplaceLabelsForIssue(ctx context.Context, owner string, repo string, number int, labels []string) ([]*Label, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("PUT", u, labels) | ||||
|  | @ -195,7 +195,7 @@ func (s *IssuesService) ReplaceLabelsForIssue(ctx context.Context, owner string, | |||
| 
 | ||||
| // RemoveLabelsForIssue removes all labels for an issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/labels/#remove-all-labels-from-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#remove-all-labels-from-an-issue
 | ||||
| func (s *IssuesService) RemoveLabelsForIssue(ctx context.Context, owner string, repo string, number int) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%d/labels", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -208,7 +208,7 @@ func (s *IssuesService) RemoveLabelsForIssue(ctx context.Context, owner string, | |||
| 
 | ||||
| // ListLabelsForMilestone lists labels for every issue in a milestone.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/labels/#list-labels-for-issues-in-a-milestone
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-labels-for-issues-in-a-milestone
 | ||||
| func (s *IssuesService) ListLabelsForMilestone(ctx context.Context, owner string, repo string, number int, opts *ListOptions) ([]*Label, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/milestones/%d/labels", owner, repo, number) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -55,7 +55,7 @@ type MilestoneListOptions struct { | |||
| 
 | ||||
| // ListMilestones lists all milestones for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/milestones/#list-milestones
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-milestones
 | ||||
| func (s *IssuesService) ListMilestones(ctx context.Context, owner string, repo string, opts *MilestoneListOptions) ([]*Milestone, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/milestones", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -79,7 +79,7 @@ func (s *IssuesService) ListMilestones(ctx context.Context, owner string, repo s | |||
| 
 | ||||
| // GetMilestone gets a single milestone.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/milestones/#get-a-milestone
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#get-a-milestone
 | ||||
| func (s *IssuesService) GetMilestone(ctx context.Context, owner string, repo string, number int) (*Milestone, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/milestones/%d", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -98,7 +98,7 @@ func (s *IssuesService) GetMilestone(ctx context.Context, owner string, repo str | |||
| 
 | ||||
| // CreateMilestone creates a new milestone on the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/milestones/#create-a-milestone
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#create-a-milestone
 | ||||
| func (s *IssuesService) CreateMilestone(ctx context.Context, owner string, repo string, milestone *Milestone) (*Milestone, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/milestones", owner, repo) | ||||
| 	req, err := s.client.NewRequest("POST", u, milestone) | ||||
|  | @ -117,7 +117,7 @@ func (s *IssuesService) CreateMilestone(ctx context.Context, owner string, repo | |||
| 
 | ||||
| // EditMilestone edits a milestone.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/milestones/#update-a-milestone
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#update-a-milestone
 | ||||
| func (s *IssuesService) EditMilestone(ctx context.Context, owner string, repo string, number int, milestone *Milestone) (*Milestone, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/milestones/%d", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, milestone) | ||||
|  | @ -136,7 +136,7 @@ func (s *IssuesService) EditMilestone(ctx context.Context, owner string, repo st | |||
| 
 | ||||
| // DeleteMilestone deletes a milestone.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/milestones/#delete-a-milestone
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#delete-a-milestone
 | ||||
| func (s *IssuesService) DeleteMilestone(ctx context.Context, owner string, repo string, number int) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/milestones/%d", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -15,7 +15,7 @@ import ( | |||
| // Timeline represents an event that occurred around an Issue or Pull Request.
 | ||||
| //
 | ||||
| // It is similar to an IssueEvent but may contain more information.
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/timeline/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/timeline/
 | ||||
| type Timeline struct { | ||||
| 	ID        *int64  `json:"id,omitempty"` | ||||
| 	URL       *string `json:"url,omitempty"` | ||||
|  | @ -81,6 +81,9 @@ type Timeline struct { | |||
| 	//     reopened
 | ||||
| 	//       The issue was reopened by the actor.
 | ||||
| 	//
 | ||||
| 	//     reviewed
 | ||||
| 	//       The pull request was reviewed.
 | ||||
| 	//
 | ||||
| 	//     subscribed
 | ||||
| 	//       The actor subscribed to receive notifications for an issue.
 | ||||
| 	//
 | ||||
|  | @ -118,6 +121,10 @@ type Timeline struct { | |||
| 	// Only provided for 'renamed' events.
 | ||||
| 	Rename      *Rename      `json:"rename,omitempty"` | ||||
| 	ProjectCard *ProjectCard `json:"project_card,omitempty"` | ||||
| 	// The state of a submitted review. Can be one of: 'commented',
 | ||||
| 	// 'changes_requested' or 'approved'.
 | ||||
| 	// Only provided for 'reviewed' events.
 | ||||
| 	State *string `json:"state,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // Source represents a reference's source.
 | ||||
|  | @ -131,7 +138,7 @@ type Source struct { | |||
| 
 | ||||
| // ListIssueTimeline lists events for the specified issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/issues/timeline/#list-timeline-events-for-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/issues/#list-timeline-events-for-an-issue
 | ||||
| func (s *IssuesService) ListIssueTimeline(ctx context.Context, owner, repo string, number int, opts *ListOptions) ([]*Timeline, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%v/timeline", owner, repo, number) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -13,7 +13,7 @@ import ( | |||
| // LicensesService handles communication with the license related
 | ||||
| // methods of the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/licenses/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/licenses/
 | ||||
| type LicensesService service | ||||
| 
 | ||||
| // RepositoryLicense represents the license for a repository.
 | ||||
|  | @ -60,7 +60,7 @@ func (l License) String() string { | |||
| 
 | ||||
| // List popular open source licenses.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/licenses/#list-all-licenses
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/licenses/#list-all-licenses
 | ||||
| func (s *LicensesService) List(ctx context.Context) ([]*License, *Response, error) { | ||||
| 	req, err := s.client.NewRequest("GET", "licenses", nil) | ||||
| 	if err != nil { | ||||
|  | @ -78,7 +78,7 @@ func (s *LicensesService) List(ctx context.Context) ([]*License, *Response, erro | |||
| 
 | ||||
| // Get extended metadata for one license.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/licenses/#get-a-license
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/licenses/#get-a-license
 | ||||
| func (s *LicensesService) Get(ctx context.Context, licenseName string) (*License, *Response, error) { | ||||
| 	u := fmt.Sprintf("licenses/%s", licenseName) | ||||
| 
 | ||||
|  | @ -19,6 +19,7 @@ import ( | |||
| 	"fmt" | ||||
| 	"hash" | ||||
| 	"io/ioutil" | ||||
| 	"mime" | ||||
| 	"net/http" | ||||
| 	"net/url" | ||||
| 	"strings" | ||||
|  | @ -30,8 +31,10 @@ const ( | |||
| 	// sha256Prefix and sha512Prefix are provided for future compatibility.
 | ||||
| 	sha256Prefix = "sha256" | ||||
| 	sha512Prefix = "sha512" | ||||
| 	// signatureHeader is the GitHub header key used to pass the HMAC hexdigest.
 | ||||
| 	signatureHeader = "X-Hub-Signature" | ||||
| 	// sha1SignatureHeader is the GitHub header key used to pass the HMAC-SHA1 hexdigest.
 | ||||
| 	sha1SignatureHeader = "X-Hub-Signature" | ||||
| 	// sha256SignatureHeader is the GitHub header key used to pass the HMAC-SHA256 hexdigest.
 | ||||
| 	sha256SignatureHeader = "X-Hub-Signature-256" | ||||
| 	// eventTypeHeader is the GitHub header key used to pass the event type.
 | ||||
| 	eventTypeHeader = "X-Github-Event" | ||||
| 	// deliveryIDHeader is the GitHub header key used to pass the unique ID for the webhook event.
 | ||||
|  | @ -44,6 +47,7 @@ var ( | |||
| 		"check_run":                      "CheckRunEvent", | ||||
| 		"check_suite":                    "CheckSuiteEvent", | ||||
| 		"commit_comment":                 "CommitCommentEvent", | ||||
| 		"content_reference":              "ContentReferenceEvent", | ||||
| 		"create":                         "CreateEvent", | ||||
| 		"delete":                         "DeleteEvent", | ||||
| 		"deploy_key":                     "DeployKeyEvent", | ||||
|  | @ -71,9 +75,10 @@ var ( | |||
| 		"project_card":                   "ProjectCardEvent", | ||||
| 		"project_column":                 "ProjectColumnEvent", | ||||
| 		"public":                         "PublicEvent", | ||||
| 		"pull_request":                   "PullRequestEvent", | ||||
| 		"pull_request_review":            "PullRequestReviewEvent", | ||||
| 		"pull_request_review_comment":    "PullRequestReviewCommentEvent", | ||||
| 		"pull_request":                   "PullRequestEvent", | ||||
| 		"pull_request_target":            "PullRequestTargetEvent", | ||||
| 		"push":                           "PushEvent", | ||||
| 		"repository":                     "RepositoryEvent", | ||||
| 		"repository_dispatch":            "RepositoryDispatchEvent", | ||||
|  | @ -85,6 +90,8 @@ var ( | |||
| 		"team_add":                       "TeamAddEvent", | ||||
| 		"user":                           "UserEvent", | ||||
| 		"watch":                          "WatchEvent", | ||||
| 		"workflow_dispatch":              "WorkflowDispatchEvent", | ||||
| 		"workflow_run":                   "WorkflowRunEvent", | ||||
| 	} | ||||
| ) | ||||
| 
 | ||||
|  | @ -151,7 +158,14 @@ func messageMAC(signature string) ([]byte, func() hash.Hash, error) { | |||
| func ValidatePayload(r *http.Request, secretToken []byte) (payload []byte, err error) { | ||||
| 	var body []byte // Raw body that GitHub uses to calculate the signature.
 | ||||
| 
 | ||||
| 	switch ct := r.Header.Get("Content-Type"); ct { | ||||
| 	ct := r.Header.Get("Content-Type") | ||||
| 
 | ||||
| 	mediatype, _, err := mime.ParseMediaType(ct) | ||||
| 	if err != nil { | ||||
| 		mediatype = "" | ||||
| 	} | ||||
| 
 | ||||
| 	switch mediatype { | ||||
| 	case "application/json": | ||||
| 		var err error | ||||
| 		if body, err = ioutil.ReadAll(r.Body); err != nil { | ||||
|  | @ -187,7 +201,10 @@ func ValidatePayload(r *http.Request, secretToken []byte) (payload []byte, err e | |||
| 	// Only validate the signature if a secret token exists. This is intended for
 | ||||
| 	// local development only and all webhooks should ideally set up a secret token.
 | ||||
| 	if len(secretToken) > 0 { | ||||
| 		sig := r.Header.Get(signatureHeader) | ||||
| 		sig := r.Header.Get(sha256SignatureHeader) | ||||
| 		if sig == "" { | ||||
| 			sig = r.Header.Get(sha1SignatureHeader) | ||||
| 		} | ||||
| 		if err := ValidateSignature(sig, body, secretToken); err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
|  | @ -215,14 +232,14 @@ func ValidateSignature(signature string, payload, secretToken []byte) error { | |||
| 
 | ||||
| // WebHookType returns the event type of webhook request r.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/hooks/#webhook-headers
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/hooks/#webhook-headers
 | ||||
| func WebHookType(r *http.Request) string { | ||||
| 	return r.Header.Get(eventTypeHeader) | ||||
| } | ||||
| 
 | ||||
| // DeliveryID returns the unique delivery ID of webhook request r.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/hooks/#webhook-headers
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/hooks/#webhook-headers
 | ||||
| func DeliveryID(r *http.Request) string { | ||||
| 	return r.Header.Get(deliveryIDHeader) | ||||
| } | ||||
|  | @ -16,7 +16,7 @@ import ( | |||
| // MigrationService provides access to the migration related functions
 | ||||
| // in the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migration/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migration/
 | ||||
| type MigrationService service | ||||
| 
 | ||||
| // Migration represents a GitHub migration (archival).
 | ||||
|  | @ -74,7 +74,7 @@ type startMigration struct { | |||
| // StartMigration starts the generation of a migration archive.
 | ||||
| // repos is a slice of repository names to migrate.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/orgs/#start-an-organization-migration
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#start-an-organization-migration
 | ||||
| func (s *MigrationService) StartMigration(ctx context.Context, org string, repos []string, opts *MigrationOptions) (*Migration, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/migrations", org) | ||||
| 
 | ||||
|  | @ -103,7 +103,7 @@ func (s *MigrationService) StartMigration(ctx context.Context, org string, repos | |||
| 
 | ||||
| // ListMigrations lists the most recent migrations.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/orgs/#list-organization-migrations
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#list-organization-migrations
 | ||||
| func (s *MigrationService) ListMigrations(ctx context.Context, org string, opts *ListOptions) ([]*Migration, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/migrations", org) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -131,7 +131,7 @@ func (s *MigrationService) ListMigrations(ctx context.Context, org string, opts | |||
| // MigrationStatus gets the status of a specific migration archive.
 | ||||
| // id is the migration ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/orgs/#get-an-organization-migration-status
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#get-an-organization-migration-status
 | ||||
| func (s *MigrationService) MigrationStatus(ctx context.Context, org string, id int64) (*Migration, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/migrations/%v", org, id) | ||||
| 
 | ||||
|  | @ -155,7 +155,7 @@ func (s *MigrationService) MigrationStatus(ctx context.Context, org string, id i | |||
| // MigrationArchiveURL fetches a migration archive URL.
 | ||||
| // id is the migration ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/orgs/#download-an-organization-migration-archive
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#download-an-organization-migration-archive
 | ||||
| func (s *MigrationService) MigrationArchiveURL(ctx context.Context, org string, id int64) (url string, err error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/migrations/%v/archive", org, id) | ||||
| 
 | ||||
|  | @ -192,7 +192,7 @@ func (s *MigrationService) MigrationArchiveURL(ctx context.Context, org string, | |||
| // DeleteMigration deletes a previous migration archive.
 | ||||
| // id is the migration ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/orgs/#delete-an-organization-migration-archive
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#delete-an-organization-migration-archive
 | ||||
| func (s *MigrationService) DeleteMigration(ctx context.Context, org string, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/migrations/%v/archive", org, id) | ||||
| 
 | ||||
|  | @ -212,7 +212,7 @@ func (s *MigrationService) DeleteMigration(ctx context.Context, org string, id i | |||
| // You should unlock each migrated repository and delete them when the migration
 | ||||
| // is complete and you no longer need the source data.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/orgs/#unlock-an-organization-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#unlock-an-organization-repository
 | ||||
| func (s *MigrationService) UnlockRepo(ctx context.Context, org string, id int64, repo string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/migrations/%v/repos/%v/lock", org, id, repo) | ||||
| 
 | ||||
|  | @ -115,7 +115,7 @@ func (i Import) String() string { | |||
| 
 | ||||
| // SourceImportAuthor identifies an author imported from a source repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migration/source_imports/#get-commit-authors
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migration/source_imports/#get-commit-authors
 | ||||
| type SourceImportAuthor struct { | ||||
| 	ID         *int64  `json:"id,omitempty"` | ||||
| 	RemoteID   *string `json:"remote_id,omitempty"` | ||||
|  | @ -132,7 +132,7 @@ func (a SourceImportAuthor) String() string { | |||
| 
 | ||||
| // LargeFile identifies a file larger than 100MB found during a repository import.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migration/source_imports/#get-large-files
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migration/source_imports/#get-large-files
 | ||||
| type LargeFile struct { | ||||
| 	RefName *string `json:"ref_name,omitempty"` | ||||
| 	Path    *string `json:"path,omitempty"` | ||||
|  | @ -146,7 +146,7 @@ func (f LargeFile) String() string { | |||
| 
 | ||||
| // StartImport initiates a repository import.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/source_imports/#start-an-import
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#start-an-import
 | ||||
| func (s *MigrationService) StartImport(ctx context.Context, owner, repo string, in *Import) (*Import, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/import", owner, repo) | ||||
| 	req, err := s.client.NewRequest("PUT", u, in) | ||||
|  | @ -165,7 +165,7 @@ func (s *MigrationService) StartImport(ctx context.Context, owner, repo string, | |||
| 
 | ||||
| // ImportProgress queries for the status and progress of an ongoing repository import.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/source_imports/#get-an-import-status
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#get-an-import-status
 | ||||
| func (s *MigrationService) ImportProgress(ctx context.Context, owner, repo string) (*Import, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/import", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -184,7 +184,7 @@ func (s *MigrationService) ImportProgress(ctx context.Context, owner, repo strin | |||
| 
 | ||||
| // UpdateImport initiates a repository import.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/source_imports/#update-an-import
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#update-an-import
 | ||||
| func (s *MigrationService) UpdateImport(ctx context.Context, owner, repo string, in *Import) (*Import, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/import", owner, repo) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, in) | ||||
|  | @ -213,7 +213,7 @@ func (s *MigrationService) UpdateImport(ctx context.Context, owner, repo string, | |||
| // This method and MapCommitAuthor allow you to provide correct Git author
 | ||||
| // information.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/source_imports/#get-commit-authors
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#get-commit-authors
 | ||||
| func (s *MigrationService) CommitAuthors(ctx context.Context, owner, repo string) ([]*SourceImportAuthor, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/import/authors", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -234,7 +234,7 @@ func (s *MigrationService) CommitAuthors(ctx context.Context, owner, repo string | |||
| // application can continue updating authors any time before you push new
 | ||||
| // commits to the repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/source_imports/#map-a-commit-author
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#map-a-commit-author
 | ||||
| func (s *MigrationService) MapCommitAuthor(ctx context.Context, owner, repo string, id int64, author *SourceImportAuthor) (*SourceImportAuthor, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/import/authors/%v", owner, repo, id) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, author) | ||||
|  | @ -255,7 +255,7 @@ func (s *MigrationService) MapCommitAuthor(ctx context.Context, owner, repo stri | |||
| // files larger than 100MB. Only the UseLFS field on the provided Import is
 | ||||
| // used.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/source_imports/#update-git-lfs-preference
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#update-git-lfs-preference
 | ||||
| func (s *MigrationService) SetLFSPreference(ctx context.Context, owner, repo string, in *Import) (*Import, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/import/lfs", owner, repo) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, in) | ||||
|  | @ -274,7 +274,7 @@ func (s *MigrationService) SetLFSPreference(ctx context.Context, owner, repo str | |||
| 
 | ||||
| // LargeFiles lists files larger than 100MB found during the import.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/source_imports/#get-large-files
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#get-large-files
 | ||||
| func (s *MigrationService) LargeFiles(ctx context.Context, owner, repo string) ([]*LargeFile, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/import/large_files", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -293,7 +293,7 @@ func (s *MigrationService) LargeFiles(ctx context.Context, owner, repo string) ( | |||
| 
 | ||||
| // CancelImport stops an import for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/source_imports/#cancel-an-import
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#cancel-an-import
 | ||||
| func (s *MigrationService) CancelImport(ctx context.Context, owner, repo string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/import", owner, repo) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -67,7 +67,7 @@ type startUserMigration struct { | |||
| // StartUserMigration starts the generation of a migration archive.
 | ||||
| // repos is a slice of repository names to migrate.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/users/#start-a-user-migration
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#start-a-user-migration
 | ||||
| func (s *MigrationService) StartUserMigration(ctx context.Context, repos []string, opts *UserMigrationOptions) (*UserMigration, *Response, error) { | ||||
| 	u := "user/migrations" | ||||
| 
 | ||||
|  | @ -96,7 +96,7 @@ func (s *MigrationService) StartUserMigration(ctx context.Context, repos []strin | |||
| 
 | ||||
| // ListUserMigrations lists the most recent migrations.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/users/#list-user-migrations
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#list-user-migrations
 | ||||
| func (s *MigrationService) ListUserMigrations(ctx context.Context) ([]*UserMigration, *Response, error) { | ||||
| 	u := "user/migrations" | ||||
| 
 | ||||
|  | @ -120,7 +120,7 @@ func (s *MigrationService) ListUserMigrations(ctx context.Context) ([]*UserMigra | |||
| // UserMigrationStatus gets the status of a specific migration archive.
 | ||||
| // id is the migration ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/users/#get-a-user-migration-status
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#get-a-user-migration-status
 | ||||
| func (s *MigrationService) UserMigrationStatus(ctx context.Context, id int64) (*UserMigration, *Response, error) { | ||||
| 	u := fmt.Sprintf("user/migrations/%v", id) | ||||
| 
 | ||||
|  | @ -144,7 +144,7 @@ func (s *MigrationService) UserMigrationStatus(ctx context.Context, id int64) (* | |||
| // UserMigrationArchiveURL gets the URL for a specific migration archive.
 | ||||
| // id is the migration ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/users/#download-a-user-migration-archive
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#download-a-user-migration-archive
 | ||||
| func (s *MigrationService) UserMigrationArchiveURL(ctx context.Context, id int64) (string, error) { | ||||
| 	url := fmt.Sprintf("user/migrations/%v/archive", id) | ||||
| 
 | ||||
|  | @ -178,7 +178,7 @@ func (s *MigrationService) UserMigrationArchiveURL(ctx context.Context, id int64 | |||
| // DeleteUserMigration will delete a previous migration archive.
 | ||||
| // id is the migration ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/users/#delete-a-user-migration-archive
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#delete-a-user-migration-archive
 | ||||
| func (s *MigrationService) DeleteUserMigration(ctx context.Context, id int64) (*Response, error) { | ||||
| 	url := fmt.Sprintf("user/migrations/%v/archive", id) | ||||
| 
 | ||||
|  | @ -198,7 +198,7 @@ func (s *MigrationService) DeleteUserMigration(ctx context.Context, id int64) (* | |||
| // You should unlock each migrated repository and delete them when the migration
 | ||||
| // is complete and you no longer need the source data.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/migrations/users/#unlock-a-user-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/migrations/#unlock-a-user-repository
 | ||||
| func (s *MigrationService) UnlockUserRepo(ctx context.Context, id int64, repo string) (*Response, error) { | ||||
| 	url := fmt.Sprintf("user/migrations/%v/repos/%v/lock", id, repo) | ||||
| 
 | ||||
|  | @ -39,7 +39,7 @@ type markdownRequest struct { | |||
| 
 | ||||
| // Markdown renders an arbitrary Markdown document.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/markdown/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/markdown/
 | ||||
| func (c *Client) Markdown(ctx context.Context, text string, opts *MarkdownOptions) (string, *Response, error) { | ||||
| 	request := &markdownRequest{Text: String(text)} | ||||
| 	if opts != nil { | ||||
|  | @ -67,7 +67,7 @@ func (c *Client) Markdown(ctx context.Context, text string, opts *MarkdownOption | |||
| 
 | ||||
| // ListEmojis returns the emojis available to use on GitHub.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/emojis/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/emojis/
 | ||||
| func (c *Client) ListEmojis(ctx context.Context) (map[string]string, *Response, error) { | ||||
| 	req, err := c.NewRequest("GET", "emojis", nil) | ||||
| 	if err != nil { | ||||
|  | @ -97,7 +97,7 @@ func (c *CodeOfConduct) String() string { | |||
| 
 | ||||
| // ListCodesOfConduct returns all codes of conduct.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/codes_of_conduct/#list-all-codes-of-conduct
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/codes_of_conduct/#list-all-codes-of-conduct
 | ||||
| func (c *Client) ListCodesOfConduct(ctx context.Context) ([]*CodeOfConduct, *Response, error) { | ||||
| 	req, err := c.NewRequest("GET", "codes_of_conduct", nil) | ||||
| 	if err != nil { | ||||
|  | @ -118,7 +118,7 @@ func (c *Client) ListCodesOfConduct(ctx context.Context) ([]*CodeOfConduct, *Res | |||
| 
 | ||||
| // GetCodeOfConduct returns an individual code of conduct.
 | ||||
| //
 | ||||
| // https://developer.github.com/v3/codes_of_conduct/#get-an-individual-code-of-conduct
 | ||||
| // https://docs.github.com/en/free-pro-team@latest/rest/reference/codes_of_conduct/#get-an-individual-code-of-conduct
 | ||||
| func (c *Client) GetCodeOfConduct(ctx context.Context, key string) (*CodeOfConduct, *Response, error) { | ||||
| 	u := fmt.Sprintf("codes_of_conduct/%s", key) | ||||
| 	req, err := c.NewRequest("GET", u, nil) | ||||
|  | @ -162,13 +162,21 @@ type APIMeta struct { | |||
| 	// An Array of IP addresses specifying the addresses that source imports
 | ||||
| 	// will originate from on GitHub.com.
 | ||||
| 	Importer []string `json:"importer,omitempty"` | ||||
| 
 | ||||
| 	// An array of IP addresses in CIDR format specifying the IP addresses
 | ||||
| 	// GitHub Actions will originate from.
 | ||||
| 	Actions []string `json:"actions,omitempty"` | ||||
| 
 | ||||
| 	// An array of IP addresses in CIDR format specifying the IP addresses
 | ||||
| 	// Dependabot will originate from.
 | ||||
| 	Dependabot []string `json:"dependabot,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // APIMeta returns information about GitHub.com, the service. Or, if you access
 | ||||
| // this endpoint on your organization’s GitHub Enterprise installation, this
 | ||||
| // endpoint provides information about that installation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/meta/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/meta#get-github-meta-information
 | ||||
| func (c *Client) APIMeta(ctx context.Context) (*APIMeta, *Response, error) { | ||||
| 	req, err := c.NewRequest("GET", "meta", nil) | ||||
| 	if err != nil { | ||||
|  | @ -14,7 +14,7 @@ import ( | |||
| // OrganizationsService provides access to the organization related functions
 | ||||
| // in the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/
 | ||||
| type OrganizationsService service | ||||
| 
 | ||||
| // Organization represents a GitHub organization account.
 | ||||
|  | @ -73,6 +73,13 @@ type Organization struct { | |||
| 	// operation and does not consider 'internal' repositories during 'get' operation
 | ||||
| 	MembersAllowedRepositoryCreationType *string `json:"members_allowed_repository_creation_type,omitempty"` | ||||
| 
 | ||||
| 	// MembersCanCreatePages toggles whether organization members can create GitHub Pages sites.
 | ||||
| 	MembersCanCreatePages *bool `json:"members_can_create_pages,omitempty"` | ||||
| 	// MembersCanCreatePublicPages toggles whether organization members can create public GitHub Pages sites.
 | ||||
| 	MembersCanCreatePublicPages *bool `json:"members_can_create_public_pages,omitempty"` | ||||
| 	// MembersCanCreatePrivatePages toggles whether organization members can create private GitHub Pages sites.
 | ||||
| 	MembersCanCreatePrivatePages *bool `json:"members_can_create_private_pages,omitempty"` | ||||
| 
 | ||||
| 	// API URLs
 | ||||
| 	URL              *string `json:"url,omitempty"` | ||||
| 	EventsURL        *string `json:"events_url,omitempty"` | ||||
|  | @ -125,7 +132,7 @@ type OrganizationsListOptions struct { | |||
| // listing the next set of organizations, use the ID of the last-returned organization
 | ||||
| // as the opts.Since parameter for the next call.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/#list-organizations
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#list-organizations
 | ||||
| func (s *OrganizationsService) ListAll(ctx context.Context, opts *OrganizationsListOptions) ([]*Organization, *Response, error) { | ||||
| 	u, err := addOptions("organizations", opts) | ||||
| 	if err != nil { | ||||
|  | @ -148,8 +155,8 @@ func (s *OrganizationsService) ListAll(ctx context.Context, opts *OrganizationsL | |||
| // List the organizations for a user. Passing the empty string will list
 | ||||
| // organizations for the authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/#oauth-scope-requirements
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/#list-organizations-for-a-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#list-organizations-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#list-organizations-for-a-user
 | ||||
| func (s *OrganizationsService) List(ctx context.Context, user string, opts *ListOptions) ([]*Organization, *Response, error) { | ||||
| 	var u string | ||||
| 	if user != "" { | ||||
|  | @ -178,7 +185,7 @@ func (s *OrganizationsService) List(ctx context.Context, user string, opts *List | |||
| 
 | ||||
| // Get fetches an organization by name.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/#get-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#get-an-organization
 | ||||
| func (s *OrganizationsService) Get(ctx context.Context, org string) (*Organization, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v", org) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -219,7 +226,7 @@ func (s *OrganizationsService) GetByID(ctx context.Context, id int64) (*Organiza | |||
| 
 | ||||
| // Edit an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/#members_can_create_repositories
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#update-an-organization
 | ||||
| func (s *OrganizationsService) Edit(ctx context.Context, name string, org *Organization) (*Organization, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v", name) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, org) | ||||
|  | @ -241,7 +248,7 @@ func (s *OrganizationsService) Edit(ctx context.Context, name string, org *Organ | |||
| 
 | ||||
| // ListInstallations lists installations for an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/#list-app-installations-for-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#list-app-installations-for-an-organization
 | ||||
| func (s *OrganizationsService) ListInstallations(ctx context.Context, org string, opts *ListOptions) (*OrganizationInstallations, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/installations", org) | ||||
| 
 | ||||
|  | @ -255,9 +262,6 @@ func (s *OrganizationsService) ListInstallations(ctx context.Context, org string | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	req.Header.Set("Accept", mediaTypeIntegrationPreview) | ||||
| 
 | ||||
| 	result := new(OrganizationInstallations) | ||||
| 	resp, err := s.client.Do(ctx, req, result) | ||||
| 	if err != nil { | ||||
							
								
								
									
										58
									
								
								vendor/github.com/google/go-github/v37/github/orgs_actions_allowed.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							
							
						
						
									
										58
									
								
								vendor/github.com/google/go-github/v37/github/orgs_actions_allowed.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							|  | @ -0,0 +1,58 @@ | |||
| // Copyright 2021 The go-github AUTHORS. All rights reserved.
 | ||||
| //
 | ||||
| // Use of this source code is governed by a BSD-style
 | ||||
| // license that can be found in the LICENSE file.
 | ||||
| 
 | ||||
| package github | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| // ActionsAllowed represents selected actions that are allowed in an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#get-allowed-actions-for-an-organization
 | ||||
| type ActionsAllowed struct { | ||||
| 	GithubOwnedAllowed *bool    `json:"github_owned_allowed,omitempty"` | ||||
| 	VerifiedAllowed    *bool    `json:"verified_allowed,omitempty"` | ||||
| 	PatternsAllowed    []string `json:"patterns_allowed,omitempty"` | ||||
| } | ||||
| 
 | ||||
| func (a ActionsAllowed) String() string { | ||||
| 	return Stringify(a) | ||||
| } | ||||
| 
 | ||||
| // GetActionsAllowed gets the actions that are allowed in an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#get-allowed-actions-for-an-organization
 | ||||
| func (s *OrganizationsService) GetActionsAllowed(ctx context.Context, org string) (*ActionsAllowed, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/permissions/selected-actions", org) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	actionsAllowed := new(ActionsAllowed) | ||||
| 	resp, err := s.client.Do(ctx, req, actionsAllowed) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return actionsAllowed, resp, nil | ||||
| } | ||||
| 
 | ||||
| // EditActionsAllowed sets the actions that are allowed in an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#set-allowed-actions-for-an-organization
 | ||||
| func (s *OrganizationsService) EditActionsAllowed(ctx context.Context, org string, actionsAllowed ActionsAllowed) (*ActionsAllowed, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/permissions/selected-actions", org) | ||||
| 	req, err := s.client.NewRequest("PUT", u, actionsAllowed) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	p := new(ActionsAllowed) | ||||
| 	resp, err := s.client.Do(ctx, req, p) | ||||
| 	return p, resp, err | ||||
| } | ||||
							
								
								
									
										58
									
								
								vendor/github.com/google/go-github/v37/github/orgs_actions_permissions.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							
							
						
						
									
										58
									
								
								vendor/github.com/google/go-github/v37/github/orgs_actions_permissions.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							|  | @ -0,0 +1,58 @@ | |||
| // Copyright 2021 The go-github AUTHORS. All rights reserved.
 | ||||
| //
 | ||||
| // Use of this source code is governed by a BSD-style
 | ||||
| // license that can be found in the LICENSE file.
 | ||||
| 
 | ||||
| package github | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| // ActionsPermissions represents a policy for repositories and allowed actions in an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#permissions
 | ||||
| type ActionsPermissions struct { | ||||
| 	EnabledRepositories *string `json:"enabled_repositories,omitempty"` | ||||
| 	AllowedActions      *string `json:"allowed_actions,omitempty"` | ||||
| 	SelectedActionsURL  *string `json:"selected_actions_url,omitempty"` | ||||
| } | ||||
| 
 | ||||
| func (a ActionsPermissions) String() string { | ||||
| 	return Stringify(a) | ||||
| } | ||||
| 
 | ||||
| // GetActionsPermissions gets the GitHub Actions permissions policy for repositories and allowed actions in an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#get-github-actions-permissions-for-an-organization
 | ||||
| func (s *OrganizationsService) GetActionsPermissions(ctx context.Context, org string) (*ActionsPermissions, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/permissions", org) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	permissions := new(ActionsPermissions) | ||||
| 	resp, err := s.client.Do(ctx, req, permissions) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return permissions, resp, nil | ||||
| } | ||||
| 
 | ||||
| // EditActionsPermissions sets the permissions policy for repositories and allowed actions in an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/actions#set-github-actions-permissions-for-an-organization
 | ||||
| func (s *OrganizationsService) EditActionsPermissions(ctx context.Context, org string, actionsPermissions ActionsPermissions) (*ActionsPermissions, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/actions/permissions", org) | ||||
| 	req, err := s.client.NewRequest("PUT", u, actionsPermissions) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	p := new(ActionsPermissions) | ||||
| 	resp, err := s.client.Do(ctx, req, p) | ||||
| 	return p, resp, err | ||||
| } | ||||
|  | @ -0,0 +1,113 @@ | |||
| // Copyright 2021 The go-github AUTHORS. All rights reserved.
 | ||||
| //
 | ||||
| // Use of this source code is governed by a BSD-style
 | ||||
| // license that can be found in the LICENSE file.
 | ||||
| 
 | ||||
| package github | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| // GetAuditLogOptions sets up optional parameters to query audit-log endpoint.
 | ||||
| type GetAuditLogOptions struct { | ||||
| 	Phrase  *string `json:"phrase,omitempty"`  // A search phrase. (Optional.)
 | ||||
| 	Include *string `json:"include,omitempty"` // Event type includes. Can be one of "web", "git", "all". Default: "web". (Optional.)
 | ||||
| 	Order   *string `json:"order,omitempty"`   // The order of audit log events. Can be one of "asc" or "desc". Default: "desc". (Optional.)
 | ||||
| 
 | ||||
| 	ListCursorOptions | ||||
| } | ||||
| 
 | ||||
| // HookConfig describes metadata about a webhook configuration.
 | ||||
| type HookConfig struct { | ||||
| 	ContentType *string `json:"content_type,omitempty"` | ||||
| 	InsecureSSL *string `json:"insecure_ssl,omitempty"` | ||||
| 	URL         *string `json:"url,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // AuditEntry describes the fields that may be represented by various audit-log "action" entries.
 | ||||
| // For a list of actions see - https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/reviewing-the-audit-log-for-your-organization#audit-log-actions
 | ||||
| type AuditEntry struct { | ||||
| 	Action                *string     `json:"action,omitempty"` // The name of the action that was performed, for example `user.login` or `repo.create`.
 | ||||
| 	Active                *bool       `json:"active,omitempty"` | ||||
| 	ActiveWas             *bool       `json:"active_was,omitempty"` | ||||
| 	Actor                 *string     `json:"actor,omitempty"` // The actor who performed the action.
 | ||||
| 	BlockedUser           *string     `json:"blocked_user,omitempty"` | ||||
| 	Business              *string     `json:"business,omitempty"` | ||||
| 	CancelledAt           *Timestamp  `json:"cancelled_at,omitempty"` | ||||
| 	CompletedAt           *Timestamp  `json:"completed_at,omitempty"` | ||||
| 	Conclusion            *string     `json:"conclusion,omitempty"` | ||||
| 	Config                *HookConfig `json:"config,omitempty"` | ||||
| 	ConfigWas             *HookConfig `json:"config_was,omitempty"` | ||||
| 	ContentType           *string     `json:"content_type,omitempty"` | ||||
| 	CreatedAt             *Timestamp  `json:"created_at,omitempty"` | ||||
| 	DeployKeyFingerprint  *string     `json:"deploy_key_fingerprint,omitempty"` | ||||
| 	DocumentID            *string     `json:"_document_id,omitempty"` | ||||
| 	Emoji                 *string     `json:"emoji,omitempty"` | ||||
| 	EnvironmentName       *string     `json:"environment_name,omitempty"` | ||||
| 	Event                 *string     `json:"event,omitempty"` | ||||
| 	Events                []string    `json:"events,omitempty"` | ||||
| 	EventsWere            []string    `json:"events_were,omitempty"` | ||||
| 	Explanation           *string     `json:"explanation,omitempty"` | ||||
| 	Fingerprint           *string     `json:"fingerprint,omitempty"` | ||||
| 	HeadBranch            *string     `json:"head_branch,omitempty"` | ||||
| 	HeadSHA               *string     `json:"head_sha,omitempty"` | ||||
| 	HookID                *int64      `json:"hook_id,omitempty"` | ||||
| 	IsHostedRunner        *bool       `json:"is_hosted_runner,omitempty"` | ||||
| 	JobName               *string     `json:"job_name,omitempty"` | ||||
| 	LimitedAvailability   *bool       `json:"limited_availability,omitempty"` | ||||
| 	Message               *string     `json:"message,omitempty"` | ||||
| 	Name                  *string     `json:"name,omitempty"` | ||||
| 	OldUser               *string     `json:"old_user,omitempty"` | ||||
| 	OpenSSHPublicKey      *string     `json:"openssh_public_key,omitempty"` | ||||
| 	Org                   *string     `json:"org,omitempty"` | ||||
| 	PreviousVisibility    *string     `json:"previous_visibility,omitempty"` | ||||
| 	ReadOnly              *string     `json:"read_only,omitempty"` | ||||
| 	Repo                  *string     `json:"repo,omitempty"` | ||||
| 	Repository            *string     `json:"repository,omitempty"` | ||||
| 	RepositoryPublic      *bool       `json:"repository_public,omitempty"` | ||||
| 	RunnerGroupID         *string     `json:"runner_group_id,omitempty"` | ||||
| 	RunnerGroupName       *string     `json:"runner_group_name,omitempty"` | ||||
| 	RunnerID              *string     `json:"runner_id,omitempty"` | ||||
| 	RunnerLabels          []string    `json:"runner_labels,omitempty"` | ||||
| 	RunnerName            *string     `json:"runner_name,omitempty"` | ||||
| 	SecretsPassed         []string    `json:"secrets_passed,omitempty"` | ||||
| 	SourceVersion         *string     `json:"source_version,omitempty"` | ||||
| 	StartedAt             *Timestamp  `json:"started_at,omitempty"` | ||||
| 	TargetLogin           *string     `json:"target_login,omitempty"` | ||||
| 	TargetVersion         *string     `json:"target_version,omitempty"` | ||||
| 	Team                  *string     `json:"team,omitempty"` | ||||
| 	Timestamp             *Timestamp  `json:"@timestamp,omitempty"`              // The time the audit log event occurred, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time).
 | ||||
| 	TransportProtocolName *string     `json:"transport_protocol_name,omitempty"` // A human readable name for the protocol (for example, HTTP or SSH) used to transfer Git data.
 | ||||
| 	TransportProtocol     *int        `json:"transport_protocol,omitempty"`      // The type of protocol (for example, HTTP=1 or SSH=2) used to transfer Git data.
 | ||||
| 	TriggerID             *int64      `json:"trigger_id,omitempty"` | ||||
| 	User                  *string     `json:"user,omitempty"`       // The user that was affected by the action performed (if available).
 | ||||
| 	Visibility            *string     `json:"visibility,omitempty"` // The repository visibility, for example `public` or `private`.
 | ||||
| 	WorkflowID            *int64      `json:"workflow_id,omitempty"` | ||||
| 	WorkflowRunID         *int64      `json:"workflow_run_id,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // GetAuditLog gets the audit-log entries for an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/orgs#get-the-audit-log-for-an-organization
 | ||||
| func (s *OrganizationsService) GetAuditLog(ctx context.Context, org string, opts *GetAuditLogOptions) ([]*AuditEntry, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/audit-log", org) | ||||
| 	u, err := addOptions(u, opts) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	var auditEntries []*AuditEntry | ||||
| 	resp, err := s.client.Do(ctx, req, &auditEntries) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return auditEntries, resp, nil | ||||
| } | ||||
|  | @ -12,7 +12,7 @@ import ( | |||
| 
 | ||||
| // ListHooks lists all Hooks for the specified organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/hooks/#list-organization-webhooks
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#list-organization-webhooks
 | ||||
| func (s *OrganizationsService) ListHooks(ctx context.Context, org string, opts *ListOptions) ([]*Hook, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/hooks", org) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -36,7 +36,7 @@ func (s *OrganizationsService) ListHooks(ctx context.Context, org string, opts * | |||
| 
 | ||||
| // GetHook returns a single specified Hook.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/hooks/#get-an-organization-webhook
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#get-an-organization-webhook
 | ||||
| func (s *OrganizationsService) GetHook(ctx context.Context, org string, id int64) (*Hook, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/hooks/%d", org, id) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -54,7 +54,7 @@ func (s *OrganizationsService) GetHook(ctx context.Context, org string, id int64 | |||
| // Note that only a subset of the hook fields are used and hook must
 | ||||
| // not be nil.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/hooks/#create-an-organization-webhook
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#create-an-organization-webhook
 | ||||
| func (s *OrganizationsService) CreateHook(ctx context.Context, org string, hook *Hook) (*Hook, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/hooks", org) | ||||
| 
 | ||||
|  | @ -81,7 +81,7 @@ func (s *OrganizationsService) CreateHook(ctx context.Context, org string, hook | |||
| 
 | ||||
| // EditHook updates a specified Hook.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/hooks/#update-an-organization-webhook
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#update-an-organization-webhook
 | ||||
| func (s *OrganizationsService) EditHook(ctx context.Context, org string, id int64, hook *Hook) (*Hook, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/hooks/%d", org, id) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, hook) | ||||
|  | @ -95,7 +95,7 @@ func (s *OrganizationsService) EditHook(ctx context.Context, org string, id int6 | |||
| 
 | ||||
| // PingHook triggers a 'ping' event to be sent to the Hook.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/hooks/#ping-an-organization-webhook
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#ping-an-organization-webhook
 | ||||
| func (s *OrganizationsService) PingHook(ctx context.Context, org string, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/hooks/%d/pings", org, id) | ||||
| 	req, err := s.client.NewRequest("POST", u, nil) | ||||
|  | @ -107,7 +107,7 @@ func (s *OrganizationsService) PingHook(ctx context.Context, org string, id int6 | |||
| 
 | ||||
| // DeleteHook deletes a specified Hook.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/hooks/#delete-an-organization-webhook
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#delete-an-organization-webhook
 | ||||
| func (s *OrganizationsService) DeleteHook(ctx context.Context, org string, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/hooks/%d", org, id) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -71,8 +71,8 @@ type ListMembersOptions struct { | |||
| // user is an owner of the organization, this will return both concealed and
 | ||||
| // public members, otherwise it will only return public members.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#list-organization-members
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#list-public-organization-members
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#list-organization-members
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#list-public-organization-members
 | ||||
| func (s *OrganizationsService) ListMembers(ctx context.Context, org string, opts *ListMembersOptions) ([]*User, *Response, error) { | ||||
| 	var u string | ||||
| 	if opts != nil && opts.PublicOnly { | ||||
|  | @ -101,7 +101,7 @@ func (s *OrganizationsService) ListMembers(ctx context.Context, org string, opts | |||
| 
 | ||||
| // IsMember checks if a user is a member of an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#check-organization-membership-for-a-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#check-organization-membership-for-a-user
 | ||||
| func (s *OrganizationsService) IsMember(ctx context.Context, org, user string) (bool, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/members/%v", org, user) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -116,7 +116,7 @@ func (s *OrganizationsService) IsMember(ctx context.Context, org, user string) ( | |||
| 
 | ||||
| // IsPublicMember checks if a user is a public member of an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#check-public-organization-membership-for-a-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#check-public-organization-membership-for-a-user
 | ||||
| func (s *OrganizationsService) IsPublicMember(ctx context.Context, org, user string) (bool, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/public_members/%v", org, user) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -131,7 +131,7 @@ func (s *OrganizationsService) IsPublicMember(ctx context.Context, org, user str | |||
| 
 | ||||
| // RemoveMember removes a user from all teams of an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#remove-an-organization-member
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#remove-an-organization-member
 | ||||
| func (s *OrganizationsService) RemoveMember(ctx context.Context, org, user string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/members/%v", org, user) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -145,7 +145,7 @@ func (s *OrganizationsService) RemoveMember(ctx context.Context, org, user strin | |||
| // PublicizeMembership publicizes a user's membership in an organization. (A
 | ||||
| // user cannot publicize the membership for another user.)
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#set-public-organization-membership-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#set-public-organization-membership-for-the-authenticated-user
 | ||||
| func (s *OrganizationsService) PublicizeMembership(ctx context.Context, org, user string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/public_members/%v", org, user) | ||||
| 	req, err := s.client.NewRequest("PUT", u, nil) | ||||
|  | @ -158,7 +158,7 @@ func (s *OrganizationsService) PublicizeMembership(ctx context.Context, org, use | |||
| 
 | ||||
| // ConcealMembership conceals a user's membership in an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#remove-public-organization-membership-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#remove-public-organization-membership-for-the-authenticated-user
 | ||||
| func (s *OrganizationsService) ConcealMembership(ctx context.Context, org, user string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/public_members/%v", org, user) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -181,7 +181,7 @@ type ListOrgMembershipsOptions struct { | |||
| 
 | ||||
| // ListOrgMemberships lists the organization memberships for the authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#list-organization-memberships-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#list-organization-memberships-for-the-authenticated-user
 | ||||
| func (s *OrganizationsService) ListOrgMemberships(ctx context.Context, opts *ListOrgMembershipsOptions) ([]*Membership, *Response, error) { | ||||
| 	u := "user/memberships/orgs" | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -207,8 +207,8 @@ func (s *OrganizationsService) ListOrgMemberships(ctx context.Context, opts *Lis | |||
| // Passing an empty string for user will get the membership for the
 | ||||
| // authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#get-an-organization-membership-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#get-organization-membership-for-a-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#get-an-organization-membership-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#get-organization-membership-for-a-user
 | ||||
| func (s *OrganizationsService) GetOrgMembership(ctx context.Context, user, org string) (*Membership, *Response, error) { | ||||
| 	var u string | ||||
| 	if user != "" { | ||||
|  | @ -235,8 +235,8 @@ func (s *OrganizationsService) GetOrgMembership(ctx context.Context, user, org s | |||
| // Passing an empty string for user will edit the membership for the
 | ||||
| // authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#update-an-organization-membership-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#set-organization-membership-for-a-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#update-an-organization-membership-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#set-organization-membership-for-a-user
 | ||||
| func (s *OrganizationsService) EditOrgMembership(ctx context.Context, user, org string, membership *Membership) (*Membership, *Response, error) { | ||||
| 	var u, method string | ||||
| 	if user != "" { | ||||
|  | @ -264,7 +264,7 @@ func (s *OrganizationsService) EditOrgMembership(ctx context.Context, user, org | |||
| // RemoveOrgMembership removes user from the specified organization. If the
 | ||||
| // user has been invited to the organization, this will cancel their invitation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#remove-organization-membership-for-a-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#remove-organization-membership-for-a-user
 | ||||
| func (s *OrganizationsService) RemoveOrgMembership(ctx context.Context, user, org string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/memberships/%v", org, user) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -277,7 +277,7 @@ func (s *OrganizationsService) RemoveOrgMembership(ctx context.Context, user, or | |||
| 
 | ||||
| // ListPendingOrgInvitations returns a list of pending invitations.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#list-pending-organization-invitations
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#list-pending-organization-invitations
 | ||||
| func (s *OrganizationsService) ListPendingOrgInvitations(ctx context.Context, org string, opts *ListOptions) ([]*Invitation, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/invitations", org) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -322,7 +322,7 @@ type CreateOrgInvitationOptions struct { | |||
| // In order to create invitations in an organization,
 | ||||
| // the authenticated user must be an organization owner.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#create-an-organization-invitation
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#create-an-organization-invitation
 | ||||
| func (s *OrganizationsService) CreateOrgInvitation(ctx context.Context, org string, opts *CreateOrgInvitationOptions) (*Invitation, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/invitations", org) | ||||
| 
 | ||||
|  | @ -342,7 +342,7 @@ func (s *OrganizationsService) CreateOrgInvitation(ctx context.Context, org stri | |||
| // ListOrgInvitationTeams lists all teams associated with an invitation. In order to see invitations in an organization,
 | ||||
| // the authenticated user must be an organization owner.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/members/#list-organization-invitation-teams
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#list-organization-invitation-teams
 | ||||
| func (s *OrganizationsService) ListOrgInvitationTeams(ctx context.Context, org, invitationID string, opts *ListOptions) ([]*Team, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/invitations/%v/teams", org, invitationID) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -362,3 +362,27 @@ func (s *OrganizationsService) ListOrgInvitationTeams(ctx context.Context, org, | |||
| 	} | ||||
| 	return orgInvitationTeams, resp, nil | ||||
| } | ||||
| 
 | ||||
| // ListFailedOrgInvitations returns a list of failed inviatations.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/orgs#list-failed-organization-invitations
 | ||||
| func (s *OrganizationsService) ListFailedOrgInvitations(ctx context.Context, org string, opts *ListOptions) ([]*Invitation, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/failed_invitations", org) | ||||
| 	u, err := addOptions(u, opts) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	var failedInvitations []*Invitation | ||||
| 	resp, err := s.client.Do(ctx, req, &failedInvitations) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return failedInvitations, resp, nil | ||||
| } | ||||
|  | @ -27,7 +27,7 @@ type ListOutsideCollaboratorsOptions struct { | |||
| // Warning: The API may change without advance notice during the preview period.
 | ||||
| // Preview features are not supported for production use.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/outside_collaborators/#list-outside-collaborators-for-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#list-outside-collaborators-for-an-organization
 | ||||
| func (s *OrganizationsService) ListOutsideCollaborators(ctx context.Context, org string, opts *ListOutsideCollaboratorsOptions) ([]*User, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/outside_collaborators", org) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -52,7 +52,7 @@ func (s *OrganizationsService) ListOutsideCollaborators(ctx context.Context, org | |||
| // RemoveOutsideCollaborator removes a user from the list of outside collaborators;
 | ||||
| // consequently, removing them from all the organization's repositories.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/outside_collaborators/#remove-outside-collaborator-from-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#remove-outside-collaborator-from-an-organization
 | ||||
| func (s *OrganizationsService) RemoveOutsideCollaborator(ctx context.Context, org string, user string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/outside_collaborators/%v", org, user) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -69,7 +69,7 @@ func (s *OrganizationsService) RemoveOutsideCollaborator(ctx context.Context, or | |||
| // Responses for converting a non-member or the last owner to an outside collaborator
 | ||||
| // are listed in GitHub API docs.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/outside_collaborators/#convert-an-organization-member-to-outside-collaborator
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#convert-an-organization-member-to-outside-collaborator
 | ||||
| func (s *OrganizationsService) ConvertMemberToOutsideCollaborator(ctx context.Context, org string, user string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/outside_collaborators/%v", org, user) | ||||
| 	req, err := s.client.NewRequest("PUT", u, nil) | ||||
|  | @ -12,7 +12,7 @@ import ( | |||
| 
 | ||||
| // ListProjects lists the projects for an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/#list-organization-projects
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#list-organization-projects
 | ||||
| func (s *OrganizationsService) ListProjects(ctx context.Context, org string, opts *ProjectListOptions) ([]*Project, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/projects", org) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -39,7 +39,7 @@ func (s *OrganizationsService) ListProjects(ctx context.Context, org string, opt | |||
| 
 | ||||
| // CreateProject creates a GitHub Project for the specified organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/#create-an-organization-project
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#create-an-organization-project
 | ||||
| func (s *OrganizationsService) CreateProject(ctx context.Context, org string, opts *ProjectOptions) (*Project, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/projects", org) | ||||
| 	req, err := s.client.NewRequest("POST", u, opts) | ||||
|  | @ -12,7 +12,7 @@ import ( | |||
| 
 | ||||
| // ListBlockedUsers lists all the users blocked by an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/blocking/#list-users-blocked-by-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#list-users-blocked-by-an-organization
 | ||||
| func (s *OrganizationsService) ListBlockedUsers(ctx context.Context, org string, opts *ListOptions) ([]*User, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/blocks", org) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -39,7 +39,7 @@ func (s *OrganizationsService) ListBlockedUsers(ctx context.Context, org string, | |||
| 
 | ||||
| // IsBlocked reports whether specified user is blocked from an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/blocking/#check-if-a-user-is-blocked-by-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#check-if-a-user-is-blocked-by-an-organization
 | ||||
| func (s *OrganizationsService) IsBlocked(ctx context.Context, org string, user string) (bool, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/blocks/%v", org, user) | ||||
| 
 | ||||
|  | @ -58,7 +58,7 @@ func (s *OrganizationsService) IsBlocked(ctx context.Context, org string, user s | |||
| 
 | ||||
| // BlockUser blocks specified user from an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/blocking/#block-a-user-from-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#block-a-user-from-an-organization
 | ||||
| func (s *OrganizationsService) BlockUser(ctx context.Context, org string, user string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/blocks/%v", org, user) | ||||
| 
 | ||||
|  | @ -75,7 +75,7 @@ func (s *OrganizationsService) BlockUser(ctx context.Context, org string, user s | |||
| 
 | ||||
| // UnblockUser unblocks specified user from an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/orgs/blocking/#unblock-a-user-from-an-organization
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/orgs/#unblock-a-user-from-an-organization
 | ||||
| func (s *OrganizationsService) UnblockUser(ctx context.Context, org string, user string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/blocks/%v", org, user) | ||||
| 
 | ||||
|  | @ -13,7 +13,7 @@ import ( | |||
| // ProjectsService provides access to the projects functions in the
 | ||||
| // GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/
 | ||||
| type ProjectsService service | ||||
| 
 | ||||
| // Project represents a GitHub Project.
 | ||||
|  | @ -41,7 +41,7 @@ func (p Project) String() string { | |||
| 
 | ||||
| // GetProject gets a GitHub Project for a repo.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/#get-a-project
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#get-a-project
 | ||||
| func (s *ProjectsService) GetProject(ctx context.Context, id int64) (*Project, *Response, error) { | ||||
| 	u := fmt.Sprintf("projects/%v", id) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -88,7 +88,7 @@ type ProjectOptions struct { | |||
| 
 | ||||
| // UpdateProject updates a repository project.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/#update-a-project
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#update-a-project
 | ||||
| func (s *ProjectsService) UpdateProject(ctx context.Context, id int64, opts *ProjectOptions) (*Project, *Response, error) { | ||||
| 	u := fmt.Sprintf("projects/%v", id) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, opts) | ||||
|  | @ -110,7 +110,7 @@ func (s *ProjectsService) UpdateProject(ctx context.Context, id int64, opts *Pro | |||
| 
 | ||||
| // DeleteProject deletes a GitHub Project from a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/#delete-a-project
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#delete-a-project
 | ||||
| func (s *ProjectsService) DeleteProject(ctx context.Context, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("projects/%v", id) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -126,7 +126,7 @@ func (s *ProjectsService) DeleteProject(ctx context.Context, id int64) (*Respons | |||
| 
 | ||||
| // ProjectColumn represents a column of a GitHub Project.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/projects/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/projects/
 | ||||
| type ProjectColumn struct { | ||||
| 	ID         *int64     `json:"id,omitempty"` | ||||
| 	Name       *string    `json:"name,omitempty"` | ||||
|  | @ -140,7 +140,7 @@ type ProjectColumn struct { | |||
| 
 | ||||
| // ListProjectColumns lists the columns of a GitHub Project for a repo.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/columns/#list-project-columns
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#list-project-columns
 | ||||
| func (s *ProjectsService) ListProjectColumns(ctx context.Context, projectID int64, opts *ListOptions) ([]*ProjectColumn, *Response, error) { | ||||
| 	u := fmt.Sprintf("projects/%v/columns", projectID) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -167,7 +167,7 @@ func (s *ProjectsService) ListProjectColumns(ctx context.Context, projectID int6 | |||
| 
 | ||||
| // GetProjectColumn gets a column of a GitHub Project for a repo.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/columns/#get-a-project-column
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#get-a-project-column
 | ||||
| func (s *ProjectsService) GetProjectColumn(ctx context.Context, id int64) (*ProjectColumn, *Response, error) { | ||||
| 	u := fmt.Sprintf("projects/columns/%v", id) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -197,7 +197,7 @@ type ProjectColumnOptions struct { | |||
| 
 | ||||
| // CreateProjectColumn creates a column for the specified (by number) project.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/columns/#create-a-project-column
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#create-a-project-column
 | ||||
| func (s *ProjectsService) CreateProjectColumn(ctx context.Context, projectID int64, opts *ProjectColumnOptions) (*ProjectColumn, *Response, error) { | ||||
| 	u := fmt.Sprintf("projects/%v/columns", projectID) | ||||
| 	req, err := s.client.NewRequest("POST", u, opts) | ||||
|  | @ -219,7 +219,7 @@ func (s *ProjectsService) CreateProjectColumn(ctx context.Context, projectID int | |||
| 
 | ||||
| // UpdateProjectColumn updates a column of a GitHub Project.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/columns/#update-a-project-column
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#update-an-existing-project-column
 | ||||
| func (s *ProjectsService) UpdateProjectColumn(ctx context.Context, columnID int64, opts *ProjectColumnOptions) (*ProjectColumn, *Response, error) { | ||||
| 	u := fmt.Sprintf("projects/columns/%v", columnID) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, opts) | ||||
|  | @ -241,7 +241,7 @@ func (s *ProjectsService) UpdateProjectColumn(ctx context.Context, columnID int6 | |||
| 
 | ||||
| // DeleteProjectColumn deletes a column from a GitHub Project.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/columns/#delete-a-project-column
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#delete-a-project-column
 | ||||
| func (s *ProjectsService) DeleteProjectColumn(ctx context.Context, columnID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("projects/columns/%v", columnID) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -265,7 +265,7 @@ type ProjectColumnMoveOptions struct { | |||
| 
 | ||||
| // MoveProjectColumn moves a column within a GitHub Project.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/columns/#move-a-project-column
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#move-a-project-column
 | ||||
| func (s *ProjectsService) MoveProjectColumn(ctx context.Context, columnID int64, opts *ProjectColumnMoveOptions) (*Response, error) { | ||||
| 	u := fmt.Sprintf("projects/columns/%v/moves", columnID) | ||||
| 	req, err := s.client.NewRequest("POST", u, opts) | ||||
|  | @ -281,7 +281,7 @@ func (s *ProjectsService) MoveProjectColumn(ctx context.Context, columnID int64, | |||
| 
 | ||||
| // ProjectCard represents a card in a column of a GitHub Project.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/cards/#get-a-project-card
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/cards/#get-a-project-card
 | ||||
| type ProjectCard struct { | ||||
| 	URL        *string    `json:"url,omitempty"` | ||||
| 	ColumnURL  *string    `json:"column_url,omitempty"` | ||||
|  | @ -316,7 +316,7 @@ type ProjectCardListOptions struct { | |||
| 
 | ||||
| // ListProjectCards lists the cards in a column of a GitHub Project.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/cards/#list-project-cards
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#list-project-cards
 | ||||
| func (s *ProjectsService) ListProjectCards(ctx context.Context, columnID int64, opts *ProjectCardListOptions) ([]*ProjectCard, *Response, error) { | ||||
| 	u := fmt.Sprintf("projects/columns/%v/cards", columnID) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -343,7 +343,7 @@ func (s *ProjectsService) ListProjectCards(ctx context.Context, columnID int64, | |||
| 
 | ||||
| // GetProjectCard gets a card in a column of a GitHub Project.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/cards/#get-a-project-card
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#get-a-project-card
 | ||||
| func (s *ProjectsService) GetProjectCard(ctx context.Context, cardID int64) (*ProjectCard, *Response, error) { | ||||
| 	u := fmt.Sprintf("projects/columns/cards/%v", cardID) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -381,7 +381,7 @@ type ProjectCardOptions struct { | |||
| 
 | ||||
| // CreateProjectCard creates a card in the specified column of a GitHub Project.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/cards/#create-a-project-card
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#create-a-project-card
 | ||||
| func (s *ProjectsService) CreateProjectCard(ctx context.Context, columnID int64, opts *ProjectCardOptions) (*ProjectCard, *Response, error) { | ||||
| 	u := fmt.Sprintf("projects/columns/%v/cards", columnID) | ||||
| 	req, err := s.client.NewRequest("POST", u, opts) | ||||
|  | @ -403,7 +403,7 @@ func (s *ProjectsService) CreateProjectCard(ctx context.Context, columnID int64, | |||
| 
 | ||||
| // UpdateProjectCard updates a card of a GitHub Project.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/cards/#update-a-project-card
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#update-an-existing-project-card
 | ||||
| func (s *ProjectsService) UpdateProjectCard(ctx context.Context, cardID int64, opts *ProjectCardOptions) (*ProjectCard, *Response, error) { | ||||
| 	u := fmt.Sprintf("projects/columns/cards/%v", cardID) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, opts) | ||||
|  | @ -425,7 +425,7 @@ func (s *ProjectsService) UpdateProjectCard(ctx context.Context, cardID int64, o | |||
| 
 | ||||
| // DeleteProjectCard deletes a card from a GitHub Project.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/cards/#delete-a-project-card
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#delete-a-project-card
 | ||||
| func (s *ProjectsService) DeleteProjectCard(ctx context.Context, cardID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("projects/columns/cards/%v", cardID) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -453,7 +453,7 @@ type ProjectCardMoveOptions struct { | |||
| 
 | ||||
| // MoveProjectCard moves a card within a GitHub Project.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/cards/#move-a-project-card
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#move-a-project-card
 | ||||
| func (s *ProjectsService) MoveProjectCard(ctx context.Context, cardID int64, opts *ProjectCardMoveOptions) (*Response, error) { | ||||
| 	u := fmt.Sprintf("projects/columns/cards/%v/moves", cardID) | ||||
| 	req, err := s.client.NewRequest("POST", u, opts) | ||||
|  | @ -483,7 +483,7 @@ type ProjectCollaboratorOptions struct { | |||
| // AddProjectCollaborator adds a collaborator to an organization project and sets
 | ||||
| // their permission level. You must be an organization owner or a project admin to add a collaborator.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/collaborators/#add-project-collaborator
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#add-project-collaborator
 | ||||
| func (s *ProjectsService) AddProjectCollaborator(ctx context.Context, id int64, username string, opts *ProjectCollaboratorOptions) (*Response, error) { | ||||
| 	u := fmt.Sprintf("projects/%v/collaborators/%v", id, username) | ||||
| 	req, err := s.client.NewRequest("PUT", u, opts) | ||||
|  | @ -500,7 +500,7 @@ func (s *ProjectsService) AddProjectCollaborator(ctx context.Context, id int64, | |||
| // RemoveProjectCollaborator removes a collaborator from an organization project.
 | ||||
| // You must be an organization owner or a project admin to remove a collaborator.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/collaborators/#remove-project-collaborator
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#remove-user-as-a-collaborator
 | ||||
| func (s *ProjectsService) RemoveProjectCollaborator(ctx context.Context, id int64, username string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("projects/%v/collaborators/%v", id, username) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -536,7 +536,7 @@ type ListCollaboratorOptions struct { | |||
| // with access through default organization permissions, and organization owners. You must be an
 | ||||
| // organization owner or a project admin to list collaborators.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/collaborators/#list-project-collaborators
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#list-project-collaborators
 | ||||
| func (s *ProjectsService) ListProjectCollaborators(ctx context.Context, id int64, opts *ListCollaboratorOptions) ([]*User, *Response, error) { | ||||
| 	u := fmt.Sprintf("projects/%v/collaborators", id) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -574,7 +574,7 @@ type ProjectPermissionLevel struct { | |||
| // project. Possible values for the permission key: "admin", "write", "read", "none".
 | ||||
| // You must be an organization owner or a project admin to review a user's permission level.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/collaborators/#get-project-permission-for-a-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#get-project-permission-for-a-user
 | ||||
| func (s *ProjectsService) ReviewProjectCollaboratorPermission(ctx context.Context, id int64, username string) (*ProjectPermissionLevel, *Response, error) { | ||||
| 	u := fmt.Sprintf("projects/%v/collaborators/%v/permission", id, username) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -9,63 +9,71 @@ import ( | |||
| 	"bytes" | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 	"strings" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
| // PullRequestsService handles communication with the pull request related
 | ||||
| // methods of the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/
 | ||||
| type PullRequestsService service | ||||
| 
 | ||||
| // PullRequestAutoMerge represents the "auto_merge" response for a PullRequest.
 | ||||
| type PullRequestAutoMerge struct { | ||||
| 	EnabledBy     *User   `json:"enabled_by,omitempty"` | ||||
| 	MergeMethod   *string `json:"merge_method,omitempty"` | ||||
| 	CommitTitle   *string `json:"commit_title,omitempty"` | ||||
| 	CommitMessage *string `json:"commit_message,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // PullRequest represents a GitHub pull request on a repository.
 | ||||
| type PullRequest struct { | ||||
| 	ID                  *int64     `json:"id,omitempty"` | ||||
| 	Number              *int       `json:"number,omitempty"` | ||||
| 	State               *string    `json:"state,omitempty"` | ||||
| 	Locked              *bool      `json:"locked,omitempty"` | ||||
| 	Title               *string    `json:"title,omitempty"` | ||||
| 	Body                *string    `json:"body,omitempty"` | ||||
| 	CreatedAt           *time.Time `json:"created_at,omitempty"` | ||||
| 	UpdatedAt           *time.Time `json:"updated_at,omitempty"` | ||||
| 	ClosedAt            *time.Time `json:"closed_at,omitempty"` | ||||
| 	MergedAt            *time.Time `json:"merged_at,omitempty"` | ||||
| 	Labels              []*Label   `json:"labels,omitempty"` | ||||
| 	User                *User      `json:"user,omitempty"` | ||||
| 	Draft               *bool      `json:"draft,omitempty"` | ||||
| 	Merged              *bool      `json:"merged,omitempty"` | ||||
| 	Mergeable           *bool      `json:"mergeable,omitempty"` | ||||
| 	MergeableState      *string    `json:"mergeable_state,omitempty"` | ||||
| 	MergedBy            *User      `json:"merged_by,omitempty"` | ||||
| 	MergeCommitSHA      *string    `json:"merge_commit_sha,omitempty"` | ||||
| 	Rebaseable          *bool      `json:"rebaseable,omitempty"` | ||||
| 	Comments            *int       `json:"comments,omitempty"` | ||||
| 	Commits             *int       `json:"commits,omitempty"` | ||||
| 	Additions           *int       `json:"additions,omitempty"` | ||||
| 	Deletions           *int       `json:"deletions,omitempty"` | ||||
| 	ChangedFiles        *int       `json:"changed_files,omitempty"` | ||||
| 	URL                 *string    `json:"url,omitempty"` | ||||
| 	HTMLURL             *string    `json:"html_url,omitempty"` | ||||
| 	IssueURL            *string    `json:"issue_url,omitempty"` | ||||
| 	StatusesURL         *string    `json:"statuses_url,omitempty"` | ||||
| 	DiffURL             *string    `json:"diff_url,omitempty"` | ||||
| 	PatchURL            *string    `json:"patch_url,omitempty"` | ||||
| 	CommitsURL          *string    `json:"commits_url,omitempty"` | ||||
| 	CommentsURL         *string    `json:"comments_url,omitempty"` | ||||
| 	ReviewCommentsURL   *string    `json:"review_comments_url,omitempty"` | ||||
| 	ReviewCommentURL    *string    `json:"review_comment_url,omitempty"` | ||||
| 	ReviewComments      *int       `json:"review_comments,omitempty"` | ||||
| 	Assignee            *User      `json:"assignee,omitempty"` | ||||
| 	Assignees           []*User    `json:"assignees,omitempty"` | ||||
| 	Milestone           *Milestone `json:"milestone,omitempty"` | ||||
| 	MaintainerCanModify *bool      `json:"maintainer_can_modify,omitempty"` | ||||
| 	AuthorAssociation   *string    `json:"author_association,omitempty"` | ||||
| 	NodeID              *string    `json:"node_id,omitempty"` | ||||
| 	RequestedReviewers  []*User    `json:"requested_reviewers,omitempty"` | ||||
| 	ID                  *int64                `json:"id,omitempty"` | ||||
| 	Number              *int                  `json:"number,omitempty"` | ||||
| 	State               *string               `json:"state,omitempty"` | ||||
| 	Locked              *bool                 `json:"locked,omitempty"` | ||||
| 	Title               *string               `json:"title,omitempty"` | ||||
| 	Body                *string               `json:"body,omitempty"` | ||||
| 	CreatedAt           *time.Time            `json:"created_at,omitempty"` | ||||
| 	UpdatedAt           *time.Time            `json:"updated_at,omitempty"` | ||||
| 	ClosedAt            *time.Time            `json:"closed_at,omitempty"` | ||||
| 	MergedAt            *time.Time            `json:"merged_at,omitempty"` | ||||
| 	Labels              []*Label              `json:"labels,omitempty"` | ||||
| 	User                *User                 `json:"user,omitempty"` | ||||
| 	Draft               *bool                 `json:"draft,omitempty"` | ||||
| 	Merged              *bool                 `json:"merged,omitempty"` | ||||
| 	Mergeable           *bool                 `json:"mergeable,omitempty"` | ||||
| 	MergeableState      *string               `json:"mergeable_state,omitempty"` | ||||
| 	MergedBy            *User                 `json:"merged_by,omitempty"` | ||||
| 	MergeCommitSHA      *string               `json:"merge_commit_sha,omitempty"` | ||||
| 	Rebaseable          *bool                 `json:"rebaseable,omitempty"` | ||||
| 	Comments            *int                  `json:"comments,omitempty"` | ||||
| 	Commits             *int                  `json:"commits,omitempty"` | ||||
| 	Additions           *int                  `json:"additions,omitempty"` | ||||
| 	Deletions           *int                  `json:"deletions,omitempty"` | ||||
| 	ChangedFiles        *int                  `json:"changed_files,omitempty"` | ||||
| 	URL                 *string               `json:"url,omitempty"` | ||||
| 	HTMLURL             *string               `json:"html_url,omitempty"` | ||||
| 	IssueURL            *string               `json:"issue_url,omitempty"` | ||||
| 	StatusesURL         *string               `json:"statuses_url,omitempty"` | ||||
| 	DiffURL             *string               `json:"diff_url,omitempty"` | ||||
| 	PatchURL            *string               `json:"patch_url,omitempty"` | ||||
| 	CommitsURL          *string               `json:"commits_url,omitempty"` | ||||
| 	CommentsURL         *string               `json:"comments_url,omitempty"` | ||||
| 	ReviewCommentsURL   *string               `json:"review_comments_url,omitempty"` | ||||
| 	ReviewCommentURL    *string               `json:"review_comment_url,omitempty"` | ||||
| 	ReviewComments      *int                  `json:"review_comments,omitempty"` | ||||
| 	Assignee            *User                 `json:"assignee,omitempty"` | ||||
| 	Assignees           []*User               `json:"assignees,omitempty"` | ||||
| 	Milestone           *Milestone            `json:"milestone,omitempty"` | ||||
| 	MaintainerCanModify *bool                 `json:"maintainer_can_modify,omitempty"` | ||||
| 	AuthorAssociation   *string               `json:"author_association,omitempty"` | ||||
| 	NodeID              *string               `json:"node_id,omitempty"` | ||||
| 	RequestedReviewers  []*User               `json:"requested_reviewers,omitempty"` | ||||
| 	AutoMerge           *PullRequestAutoMerge `json:"auto_merge,omitempty"` | ||||
| 
 | ||||
| 	// RequestedTeams is populated as part of the PullRequestEvent.
 | ||||
| 	// See, https://developer.github.com/v3/activity/events/types/#pullrequestevent for an example.
 | ||||
| 	// See, https://docs.github.com/en/developers/webhooks-and-events/github-event-types#pullrequestevent for an example.
 | ||||
| 	RequestedTeams []*Team `json:"requested_teams,omitempty"` | ||||
| 
 | ||||
| 	Links *PRLinks           `json:"_links,omitempty"` | ||||
|  | @ -81,12 +89,12 @@ func (p PullRequest) String() string { | |||
| 	return Stringify(p) | ||||
| } | ||||
| 
 | ||||
| // PRLink represents a single link object from Github pull request _links.
 | ||||
| // PRLink represents a single link object from GitHub pull request _links.
 | ||||
| type PRLink struct { | ||||
| 	HRef *string `json:"href,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // PRLinks represents the "_links" object in a Github pull request.
 | ||||
| // PRLinks represents the "_links" object in a GitHub pull request.
 | ||||
| type PRLinks struct { | ||||
| 	Self           *PRLink `json:"self,omitempty"` | ||||
| 	HTML           *PRLink `json:"html,omitempty"` | ||||
|  | @ -135,7 +143,7 @@ type PullRequestListOptions struct { | |||
| 
 | ||||
| // List the pull requests for the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/#list-pull-requests
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#list-pull-requests
 | ||||
| func (s *PullRequestsService) List(ctx context.Context, owner string, repo string, opts *PullRequestListOptions) ([]*PullRequest, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -148,10 +156,6 @@ func (s *PullRequestsService) List(ctx context.Context, owner string, repo strin | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	acceptHeaders := []string{mediaTypeLockReasonPreview} | ||||
| 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) | ||||
| 
 | ||||
| 	var pulls []*PullRequest | ||||
| 	resp, err := s.client.Do(ctx, req, &pulls) | ||||
| 	if err != nil { | ||||
|  | @ -165,7 +169,7 @@ func (s *PullRequestsService) List(ctx context.Context, owner string, repo strin | |||
| //
 | ||||
| // The results will include open and closed pull requests.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/commits/#list-pull-requests-associated-with-a-commit
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-pull-requests-associated-with-a-commit
 | ||||
| func (s *PullRequestsService) ListPullRequestsWithCommit(ctx context.Context, owner, repo, sha string, opts *PullRequestListOptions) ([]*PullRequest, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/commits/%v/pulls", owner, repo, sha) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -179,8 +183,7 @@ func (s *PullRequestsService) ListPullRequestsWithCommit(ctx context.Context, ow | |||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	acceptHeaders := []string{mediaTypeListPullsOrBranchesForCommitPreview, mediaTypeLockReasonPreview} | ||||
| 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) | ||||
| 	req.Header.Set("Accept", mediaTypeListPullsOrBranchesForCommitPreview) | ||||
| 	var pulls []*PullRequest | ||||
| 	resp, err := s.client.Do(ctx, req, &pulls) | ||||
| 	if err != nil { | ||||
|  | @ -192,7 +195,7 @@ func (s *PullRequestsService) ListPullRequestsWithCommit(ctx context.Context, ow | |||
| 
 | ||||
| // Get a single pull request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/#get-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#get-a-pull-request
 | ||||
| func (s *PullRequestsService) Get(ctx context.Context, owner string, repo string, number int) (*PullRequest, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -200,10 +203,6 @@ func (s *PullRequestsService) Get(ctx context.Context, owner string, repo string | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	acceptHeaders := []string{mediaTypeLockReasonPreview} | ||||
| 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) | ||||
| 
 | ||||
| 	pull := new(PullRequest) | ||||
| 	resp, err := s.client.Do(ctx, req, pull) | ||||
| 	if err != nil { | ||||
|  | @ -215,7 +214,7 @@ func (s *PullRequestsService) Get(ctx context.Context, owner string, repo string | |||
| 
 | ||||
| // GetRaw gets a single pull request in raw (diff or patch) format.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/#get-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#get-a-pull-request
 | ||||
| func (s *PullRequestsService) GetRaw(ctx context.Context, owner string, repo string, number int, opts RawOptions) (string, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -254,7 +253,7 @@ type NewPullRequest struct { | |||
| 
 | ||||
| // Create a new pull request on the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/#create-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#create-a-pull-request
 | ||||
| func (s *PullRequestsService) Create(ctx context.Context, owner string, repo string, pull *NewPullRequest) (*PullRequest, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls", owner, repo) | ||||
| 	req, err := s.client.NewRequest("POST", u, pull) | ||||
|  | @ -293,7 +292,7 @@ type PullRequestBranchUpdateResponse struct { | |||
| // A follow up request, after a delay of a second or so, should result
 | ||||
| // in a successful request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/#update-a-pull-request-branch
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#update-a-pull-request-branch
 | ||||
| func (s *PullRequestsService) UpdateBranch(ctx context.Context, owner, repo string, number int, opts *PullRequestBranchUpdateOptions) (*PullRequestBranchUpdateResponse, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d/update-branch", owner, repo, number) | ||||
| 
 | ||||
|  | @ -328,7 +327,7 @@ type pullRequestUpdate struct { | |||
| // The following fields are editable: Title, Body, State, Base.Ref and MaintainerCanModify.
 | ||||
| // Base.Ref updates the base branch of the pull request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/#update-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#update-a-pull-request
 | ||||
| func (s *PullRequestsService) Edit(ctx context.Context, owner string, repo string, number int, pull *PullRequest) (*PullRequest, *Response, error) { | ||||
| 	if pull == nil { | ||||
| 		return nil, nil, fmt.Errorf("pull must be provided") | ||||
|  | @ -354,10 +353,6 @@ func (s *PullRequestsService) Edit(ctx context.Context, owner string, repo strin | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches.
 | ||||
| 	acceptHeaders := []string{mediaTypeLockReasonPreview} | ||||
| 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) | ||||
| 
 | ||||
| 	p := new(PullRequest) | ||||
| 	resp, err := s.client.Do(ctx, req, p) | ||||
| 	if err != nil { | ||||
|  | @ -369,7 +364,7 @@ func (s *PullRequestsService) Edit(ctx context.Context, owner string, repo strin | |||
| 
 | ||||
| // ListCommits lists the commits in a pull request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/#list-commits-on-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#list-commits-on-a-pull-request
 | ||||
| func (s *PullRequestsService) ListCommits(ctx context.Context, owner string, repo string, number int, opts *ListOptions) ([]*RepositoryCommit, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d/commits", owner, repo, number) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -393,7 +388,7 @@ func (s *PullRequestsService) ListCommits(ctx context.Context, owner string, rep | |||
| 
 | ||||
| // ListFiles lists the files in a pull request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/#list-pull-requests-files
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#list-pull-requests-files
 | ||||
| func (s *PullRequestsService) ListFiles(ctx context.Context, owner string, repo string, number int, opts *ListOptions) ([]*CommitFile, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d/files", owner, repo, number) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -417,7 +412,7 @@ func (s *PullRequestsService) ListFiles(ctx context.Context, owner string, repo | |||
| 
 | ||||
| // IsMerged checks if a pull request has been merged.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/#check-if-a-pull-request-has-been-merged
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#check-if-a-pull-request-has-been-merged
 | ||||
| func (s *PullRequestsService) IsMerged(ctx context.Context, owner string, repo string, number int) (bool, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d/merge", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -444,27 +439,36 @@ type PullRequestOptions struct { | |||
| 
 | ||||
| 	// The merge method to use. Possible values include: "merge", "squash", and "rebase" with the default being merge. (Optional.)
 | ||||
| 	MergeMethod string | ||||
| 
 | ||||
| 	// If false, an empty string commit message will use the default commit message. If true, an empty string commit message will be used.
 | ||||
| 	DontDefaultIfBlank bool | ||||
| } | ||||
| 
 | ||||
| type pullRequestMergeRequest struct { | ||||
| 	CommitMessage string `json:"commit_message,omitempty"` | ||||
| 	CommitTitle   string `json:"commit_title,omitempty"` | ||||
| 	MergeMethod   string `json:"merge_method,omitempty"` | ||||
| 	SHA           string `json:"sha,omitempty"` | ||||
| 	CommitMessage *string `json:"commit_message,omitempty"` | ||||
| 	CommitTitle   string  `json:"commit_title,omitempty"` | ||||
| 	MergeMethod   string  `json:"merge_method,omitempty"` | ||||
| 	SHA           string  `json:"sha,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // Merge a pull request.
 | ||||
| // commitMessage is an extra detail to append to automatic commit message.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/#merge-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#merge-a-pull-request
 | ||||
| func (s *PullRequestsService) Merge(ctx context.Context, owner string, repo string, number int, commitMessage string, options *PullRequestOptions) (*PullRequestMergeResult, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d/merge", owner, repo, number) | ||||
| 
 | ||||
| 	pullRequestBody := &pullRequestMergeRequest{CommitMessage: commitMessage} | ||||
| 	pullRequestBody := &pullRequestMergeRequest{} | ||||
| 	if commitMessage != "" { | ||||
| 		pullRequestBody.CommitMessage = &commitMessage | ||||
| 	} | ||||
| 	if options != nil { | ||||
| 		pullRequestBody.CommitTitle = options.CommitTitle | ||||
| 		pullRequestBody.MergeMethod = options.MergeMethod | ||||
| 		pullRequestBody.SHA = options.SHA | ||||
| 		if options.DontDefaultIfBlank && commitMessage == "" { | ||||
| 			pullRequestBody.CommitMessage = &commitMessage | ||||
| 		} | ||||
| 	} | ||||
| 	req, err := s.client.NewRequest("PUT", u, pullRequestBody) | ||||
| 	if err != nil { | ||||
|  | @ -66,9 +66,9 @@ type PullRequestListCommentsOptions struct { | |||
| // pull request number of 0 will return all comments on all pull requests for
 | ||||
| // the repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/comments/#list-review-comments-on-a-pull-request
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/comments/#list-review-comments-in-a-repository
 | ||||
| func (s *PullRequestsService) ListComments(ctx context.Context, owner string, repo string, number int, opts *PullRequestListCommentsOptions) ([]*PullRequestComment, *Response, error) { | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#list-review-comments-on-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#list-review-comments-in-a-repository
 | ||||
| func (s *PullRequestsService) ListComments(ctx context.Context, owner, repo string, number int, opts *PullRequestListCommentsOptions) ([]*PullRequestComment, *Response, error) { | ||||
| 	var u string | ||||
| 	if number == 0 { | ||||
| 		u = fmt.Sprintf("repos/%v/%v/pulls/comments", owner, repo) | ||||
|  | @ -100,8 +100,8 @@ func (s *PullRequestsService) ListComments(ctx context.Context, owner string, re | |||
| 
 | ||||
| // GetComment fetches the specified pull request comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/comments/#get-a-review-comment-for-a-pull-request
 | ||||
| func (s *PullRequestsService) GetComment(ctx context.Context, owner string, repo string, commentID int64) (*PullRequestComment, *Response, error) { | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#get-a-review-comment-for-a-pull-request
 | ||||
| func (s *PullRequestsService) GetComment(ctx context.Context, owner, repo string, commentID int64) (*PullRequestComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/comments/%d", owner, repo, commentID) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
|  | @ -123,8 +123,8 @@ func (s *PullRequestsService) GetComment(ctx context.Context, owner string, repo | |||
| 
 | ||||
| // CreateComment creates a new comment on the specified pull request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/comments/#create-a-review-comment-for-a-pull-request
 | ||||
| func (s *PullRequestsService) CreateComment(ctx context.Context, owner string, repo string, number int, comment *PullRequestComment) (*PullRequestComment, *Response, error) { | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#create-a-review-comment-for-a-pull-request
 | ||||
| func (s *PullRequestsService) CreateComment(ctx context.Context, owner, repo string, number int, comment *PullRequestComment) (*PullRequestComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d/comments", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("POST", u, comment) | ||||
| 	if err != nil { | ||||
|  | @ -145,8 +145,8 @@ func (s *PullRequestsService) CreateComment(ctx context.Context, owner string, r | |||
| 
 | ||||
| // CreateCommentInReplyTo creates a new comment as a reply to an existing pull request comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/comments/#create-a-review-comment-for-a-pull-request
 | ||||
| func (s *PullRequestsService) CreateCommentInReplyTo(ctx context.Context, owner string, repo string, number int, body string, commentID int64) (*PullRequestComment, *Response, error) { | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#create-a-review-comment-for-a-pull-request
 | ||||
| func (s *PullRequestsService) CreateCommentInReplyTo(ctx context.Context, owner, repo string, number int, body string, commentID int64) (*PullRequestComment, *Response, error) { | ||||
| 	comment := &struct { | ||||
| 		Body      string `json:"body,omitempty"` | ||||
| 		InReplyTo int64  `json:"in_reply_to,omitempty"` | ||||
|  | @ -172,8 +172,8 @@ func (s *PullRequestsService) CreateCommentInReplyTo(ctx context.Context, owner | |||
| // EditComment updates a pull request comment.
 | ||||
| // A non-nil comment.Body must be provided. Other comment fields should be left nil.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/comments/#update-a-review-comment-for-a-pull-request
 | ||||
| func (s *PullRequestsService) EditComment(ctx context.Context, owner string, repo string, commentID int64, comment *PullRequestComment) (*PullRequestComment, *Response, error) { | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#update-a-review-comment-for-a-pull-request
 | ||||
| func (s *PullRequestsService) EditComment(ctx context.Context, owner, repo string, commentID int64, comment *PullRequestComment) (*PullRequestComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/comments/%d", owner, repo, commentID) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, comment) | ||||
| 	if err != nil { | ||||
|  | @ -191,8 +191,8 @@ func (s *PullRequestsService) EditComment(ctx context.Context, owner string, rep | |||
| 
 | ||||
| // DeleteComment deletes a pull request comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/comments/#delete-a-review-comment-for-a-pull-request
 | ||||
| func (s *PullRequestsService) DeleteComment(ctx context.Context, owner string, repo string, commentID int64) (*Response, error) { | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#delete-a-review-comment-for-a-pull-request
 | ||||
| func (s *PullRequestsService) DeleteComment(ctx context.Context, owner, repo string, commentID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/comments/%d", owner, repo, commentID) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
| 	if err != nil { | ||||
|  | @ -25,7 +25,7 @@ type Reviewers struct { | |||
| 
 | ||||
| // RequestReviewers creates a review request for the provided reviewers for the specified pull request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/review_requests/#request-reviewers-for-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#request-reviewers-for-a-pull-request
 | ||||
| func (s *PullRequestsService) RequestReviewers(ctx context.Context, owner, repo string, number int, reviewers ReviewersRequest) (*PullRequest, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/pulls/%d/requested_reviewers", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("POST", u, &reviewers) | ||||
|  | @ -44,7 +44,7 @@ func (s *PullRequestsService) RequestReviewers(ctx context.Context, owner, repo | |||
| 
 | ||||
| // ListReviewers lists reviewers whose reviews have been requested on the specified pull request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/review_requests/#list-requested-reviewers-for-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#list-requested-reviewers-for-a-pull-request
 | ||||
| func (s *PullRequestsService) ListReviewers(ctx context.Context, owner, repo string, number int, opts *ListOptions) (*Reviewers, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d/requested_reviewers", owner, repo, number) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -68,7 +68,7 @@ func (s *PullRequestsService) ListReviewers(ctx context.Context, owner, repo str | |||
| 
 | ||||
| // RemoveReviewers removes the review request for the provided reviewers for the specified pull request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/review_requests/#remove-requested-reviewers-from-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#remove-requested-reviewers-from-a-pull-request
 | ||||
| func (s *PullRequestsService) RemoveReviewers(ctx context.Context, owner, repo string, number int, reviewers ReviewersRequest) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/pulls/%d/requested_reviewers", owner, repo, number) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, &reviewers) | ||||
|  | @ -64,7 +64,7 @@ func (r PullRequestReviewRequest) String() string { | |||
| 	return Stringify(r) | ||||
| } | ||||
| 
 | ||||
| func (r PullRequestReviewRequest) isComfortFadePreview() (bool, error) { | ||||
| func (r *PullRequestReviewRequest) isComfortFadePreview() (bool, error) { | ||||
| 	var isCF *bool | ||||
| 	for _, comment := range r.Comments { | ||||
| 		if comment == nil { | ||||
|  | @ -101,11 +101,7 @@ func (r PullRequestReviewDismissalRequest) String() string { | |||
| 
 | ||||
| // ListReviews lists all reviews on the specified pull request.
 | ||||
| //
 | ||||
| // TODO: Follow up with GitHub support about an issue with this method's
 | ||||
| // returned error format and remove this comment once it's fixed.
 | ||||
| // Read more about it here - https://github.com/google/go-github/issues/540
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/reviews/#list-reviews-for-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#list-reviews-for-a-pull-request
 | ||||
| func (s *PullRequestsService) ListReviews(ctx context.Context, owner, repo string, number int, opts *ListOptions) ([]*PullRequestReview, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d/reviews", owner, repo, number) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -133,7 +129,7 @@ func (s *PullRequestsService) ListReviews(ctx context.Context, owner, repo strin | |||
| // returned error format and remove this comment once it's fixed.
 | ||||
| // Read more about it here - https://github.com/google/go-github/issues/540
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/reviews/#get-a-review-for-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#get-a-review-for-a-pull-request
 | ||||
| func (s *PullRequestsService) GetReview(ctx context.Context, owner, repo string, number int, reviewID int64) (*PullRequestReview, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d/reviews/%d", owner, repo, number, reviewID) | ||||
| 
 | ||||
|  | @ -157,7 +153,7 @@ func (s *PullRequestsService) GetReview(ctx context.Context, owner, repo string, | |||
| // returned error format and remove this comment once it's fixed.
 | ||||
| // Read more about it here - https://github.com/google/go-github/issues/540
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/reviews/#delete-a-pending-review-for-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#delete-a-pending-review-for-a-pull-request
 | ||||
| func (s *PullRequestsService) DeletePendingReview(ctx context.Context, owner, repo string, number int, reviewID int64) (*PullRequestReview, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d/reviews/%d", owner, repo, number, reviewID) | ||||
| 
 | ||||
|  | @ -181,7 +177,7 @@ func (s *PullRequestsService) DeletePendingReview(ctx context.Context, owner, re | |||
| // returned error format and remove this comment once it's fixed.
 | ||||
| // Read more about it here - https://github.com/google/go-github/issues/540
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/reviews/#list-comments-for-a-pull-request-review
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#list-comments-for-a-pull-request-review
 | ||||
| func (s *PullRequestsService) ListReviewComments(ctx context.Context, owner, repo string, number int, reviewID int64, opts *ListOptions) ([]*PullRequestComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d/reviews/%d/comments", owner, repo, number, reviewID) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -209,7 +205,7 @@ func (s *PullRequestsService) ListReviewComments(ctx context.Context, owner, rep | |||
| // returned error format and remove this comment once it's fixed.
 | ||||
| // Read more about it here - https://github.com/google/go-github/issues/540
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/reviews/#create-a-review-for-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#create-a-review-for-a-pull-request
 | ||||
| //
 | ||||
| // In order to use multi-line comments, you must use the "comfort fade" preview.
 | ||||
| // This replaces the use of the "Position" field in comments with 4 new fields:
 | ||||
|  | @ -270,7 +266,7 @@ func (s *PullRequestsService) CreateReview(ctx context.Context, owner, repo stri | |||
| 
 | ||||
| // UpdateReview updates the review summary on the specified pull request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/reviews/#update-a-review-for-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#update-a-review-for-a-pull-request
 | ||||
| func (s *PullRequestsService) UpdateReview(ctx context.Context, owner, repo string, number int, reviewID int64, body string) (*PullRequestReview, *Response, error) { | ||||
| 	opts := &struct { | ||||
| 		Body string `json:"body"` | ||||
|  | @ -297,7 +293,7 @@ func (s *PullRequestsService) UpdateReview(ctx context.Context, owner, repo stri | |||
| // returned error format and remove this comment once it's fixed.
 | ||||
| // Read more about it here - https://github.com/google/go-github/issues/540
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/reviews/#submit-a-review-for-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#submit-a-review-for-a-pull-request
 | ||||
| func (s *PullRequestsService) SubmitReview(ctx context.Context, owner, repo string, number int, reviewID int64, review *PullRequestReviewRequest) (*PullRequestReview, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d/reviews/%d/events", owner, repo, number, reviewID) | ||||
| 
 | ||||
|  | @ -321,7 +317,7 @@ func (s *PullRequestsService) SubmitReview(ctx context.Context, owner, repo stri | |||
| // returned error format and remove this comment once it's fixed.
 | ||||
| // Read more about it here - https://github.com/google/go-github/issues/540
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/pulls/reviews/#dismiss-a-review-for-a-pull-request
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls/#dismiss-a-review-for-a-pull-request
 | ||||
| func (s *PullRequestsService) DismissReview(ctx context.Context, owner, repo string, number int, reviewID int64, review *PullRequestReviewDismissalRequest) (*PullRequestReview, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/%d/reviews/%d/dismissals", owner, repo, number, reviewID) | ||||
| 
 | ||||
|  | @ -14,7 +14,7 @@ import ( | |||
| // ReactionsService provides access to the reactions-related functions in the
 | ||||
| // GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/
 | ||||
| type ReactionsService service | ||||
| 
 | ||||
| // Reaction represents a GitHub reaction.
 | ||||
|  | @ -25,7 +25,7 @@ type Reaction struct { | |||
| 	NodeID *string `json:"node_id,omitempty"` | ||||
| 	// Content is the type of reaction.
 | ||||
| 	// Possible values are:
 | ||||
| 	//     "+1", "-1", "laugh", "confused", "heart", "hooray".
 | ||||
| 	//     "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
 | ||||
| 	Content *string `json:"content,omitempty"` | ||||
| } | ||||
| 
 | ||||
|  | @ -38,6 +38,8 @@ type Reactions struct { | |||
| 	Confused   *int    `json:"confused,omitempty"` | ||||
| 	Heart      *int    `json:"heart,omitempty"` | ||||
| 	Hooray     *int    `json:"hooray,omitempty"` | ||||
| 	Rocket     *int    `json:"rocket,omitempty"` | ||||
| 	Eyes       *int    `json:"eyes,omitempty"` | ||||
| 	URL        *string `json:"url,omitempty"` | ||||
| } | ||||
| 
 | ||||
|  | @ -58,7 +60,7 @@ type ListCommentReactionOptions struct { | |||
| 
 | ||||
| // ListCommentReactions lists the reactions for a commit comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#list-reactions-for-a-commit-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#list-reactions-for-a-commit-comment
 | ||||
| func (s *ReactionsService) ListCommentReactions(ctx context.Context, owner, repo string, id int64, opts *ListCommentReactionOptions) ([]*Reaction, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/comments/%v/reactions", owner, repo, id) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -86,9 +88,9 @@ func (s *ReactionsService) ListCommentReactions(ctx context.Context, owner, repo | |||
| // CreateCommentReaction creates a reaction for a commit comment.
 | ||||
| // Note that if you have already created a reaction of type content, the
 | ||||
| // previously created reaction will be returned with Status: 200 OK.
 | ||||
| // The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray".
 | ||||
| // The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#create-reaction-for-a-commit-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#create-reaction-for-a-commit-comment
 | ||||
| func (s *ReactionsService) CreateCommentReaction(ctx context.Context, owner, repo string, id int64, content string) (*Reaction, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/comments/%v/reactions", owner, repo, id) | ||||
| 
 | ||||
|  | @ -112,7 +114,7 @@ func (s *ReactionsService) CreateCommentReaction(ctx context.Context, owner, rep | |||
| 
 | ||||
| // DeleteCommentReaction deletes the reaction for a commit comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#delete-a-commit-comment-reaction
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#delete-a-commit-comment-reaction
 | ||||
| func (s *ReactionsService) DeleteCommentReaction(ctx context.Context, owner, repo string, commentID, reactionID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/comments/%v/reactions/%v", owner, repo, commentID, reactionID) | ||||
| 
 | ||||
|  | @ -121,7 +123,7 @@ func (s *ReactionsService) DeleteCommentReaction(ctx context.Context, owner, rep | |||
| 
 | ||||
| // DeleteCommentReactionByID deletes the reaction for a commit comment by repository ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#delete-a-commit-comment-reaction
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#delete-a-commit-comment-reaction
 | ||||
| func (s *ReactionsService) DeleteCommentReactionByID(ctx context.Context, repoID, commentID, reactionID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repositories/%v/comments/%v/reactions/%v", repoID, commentID, reactionID) | ||||
| 
 | ||||
|  | @ -130,7 +132,7 @@ func (s *ReactionsService) DeleteCommentReactionByID(ctx context.Context, repoID | |||
| 
 | ||||
| // ListIssueReactions lists the reactions for an issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#list-reactions-for-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#list-reactions-for-an-issue
 | ||||
| func (s *ReactionsService) ListIssueReactions(ctx context.Context, owner, repo string, number int, opts *ListOptions) ([]*Reaction, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%v/reactions", owner, repo, number) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -158,9 +160,9 @@ func (s *ReactionsService) ListIssueReactions(ctx context.Context, owner, repo s | |||
| // CreateIssueReaction creates a reaction for an issue.
 | ||||
| // Note that if you have already created a reaction of type content, the
 | ||||
| // previously created reaction will be returned with Status: 200 OK.
 | ||||
| // The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray".
 | ||||
| // The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#create-reaction-for-an-issue
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#create-reaction-for-an-issue
 | ||||
| func (s *ReactionsService) CreateIssueReaction(ctx context.Context, owner, repo string, number int, content string) (*Reaction, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/%v/reactions", owner, repo, number) | ||||
| 
 | ||||
|  | @ -184,7 +186,7 @@ func (s *ReactionsService) CreateIssueReaction(ctx context.Context, owner, repo | |||
| 
 | ||||
| // DeleteIssueReaction deletes the reaction to an issue.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#delete-an-issue-reaction
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#delete-an-issue-reaction
 | ||||
| func (s *ReactionsService) DeleteIssueReaction(ctx context.Context, owner, repo string, issueNumber int, reactionID int64) (*Response, error) { | ||||
| 	url := fmt.Sprintf("repos/%v/%v/issues/%v/reactions/%v", owner, repo, issueNumber, reactionID) | ||||
| 
 | ||||
|  | @ -193,7 +195,7 @@ func (s *ReactionsService) DeleteIssueReaction(ctx context.Context, owner, repo | |||
| 
 | ||||
| // DeleteIssueReactionByID deletes the reaction to an issue by repository ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#delete-an-issue-reaction
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#delete-an-issue-reaction
 | ||||
| func (s *ReactionsService) DeleteIssueReactionByID(ctx context.Context, repoID, issueNumber int, reactionID int64) (*Response, error) { | ||||
| 	url := fmt.Sprintf("repositories/%v/issues/%v/reactions/%v", repoID, issueNumber, reactionID) | ||||
| 
 | ||||
|  | @ -202,7 +204,7 @@ func (s *ReactionsService) DeleteIssueReactionByID(ctx context.Context, repoID, | |||
| 
 | ||||
| // ListIssueCommentReactions lists the reactions for an issue comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#list-reactions-for-an-issue-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#list-reactions-for-an-issue-comment
 | ||||
| func (s *ReactionsService) ListIssueCommentReactions(ctx context.Context, owner, repo string, id int64, opts *ListOptions) ([]*Reaction, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/comments/%v/reactions", owner, repo, id) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -230,9 +232,9 @@ func (s *ReactionsService) ListIssueCommentReactions(ctx context.Context, owner, | |||
| // CreateIssueCommentReaction creates a reaction for an issue comment.
 | ||||
| // Note that if you have already created a reaction of type content, the
 | ||||
| // previously created reaction will be returned with Status: 200 OK.
 | ||||
| // The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray".
 | ||||
| // The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#create-reaction-for-an-issue-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#create-reaction-for-an-issue-comment
 | ||||
| func (s *ReactionsService) CreateIssueCommentReaction(ctx context.Context, owner, repo string, id int64, content string) (*Reaction, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/issues/comments/%v/reactions", owner, repo, id) | ||||
| 
 | ||||
|  | @ -256,7 +258,7 @@ func (s *ReactionsService) CreateIssueCommentReaction(ctx context.Context, owner | |||
| 
 | ||||
| // DeleteIssueCommentReaction deletes the reaction to an issue comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#delete-an-issue-comment-reaction
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#delete-an-issue-comment-reaction
 | ||||
| func (s *ReactionsService) DeleteIssueCommentReaction(ctx context.Context, owner, repo string, commentID, reactionID int64) (*Response, error) { | ||||
| 	url := fmt.Sprintf("repos/%v/%v/issues/comments/%v/reactions/%v", owner, repo, commentID, reactionID) | ||||
| 
 | ||||
|  | @ -265,7 +267,7 @@ func (s *ReactionsService) DeleteIssueCommentReaction(ctx context.Context, owner | |||
| 
 | ||||
| // DeleteIssueCommentReactionByID deletes the reaction to an issue comment by repository ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#delete-an-issue-comment-reaction
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#delete-an-issue-comment-reaction
 | ||||
| func (s *ReactionsService) DeleteIssueCommentReactionByID(ctx context.Context, repoID, commentID, reactionID int64) (*Response, error) { | ||||
| 	url := fmt.Sprintf("repositories/%v/issues/comments/%v/reactions/%v", repoID, commentID, reactionID) | ||||
| 
 | ||||
|  | @ -274,7 +276,7 @@ func (s *ReactionsService) DeleteIssueCommentReactionByID(ctx context.Context, r | |||
| 
 | ||||
| // ListPullRequestCommentReactions lists the reactions for a pull request review comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#list-reactions-for-a-pull-request-review-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#list-reactions-for-a-pull-request-review-comment
 | ||||
| func (s *ReactionsService) ListPullRequestCommentReactions(ctx context.Context, owner, repo string, id int64, opts *ListOptions) ([]*Reaction, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/comments/%v/reactions", owner, repo, id) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -302,9 +304,9 @@ func (s *ReactionsService) ListPullRequestCommentReactions(ctx context.Context, | |||
| // CreatePullRequestCommentReaction creates a reaction for a pull request review comment.
 | ||||
| // Note that if you have already created a reaction of type content, the
 | ||||
| // previously created reaction will be returned with Status: 200 OK.
 | ||||
| // The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray".
 | ||||
| // The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#create-reaction-for-a-pull-request-review-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#create-reaction-for-a-pull-request-review-comment
 | ||||
| func (s *ReactionsService) CreatePullRequestCommentReaction(ctx context.Context, owner, repo string, id int64, content string) (*Reaction, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pulls/comments/%v/reactions", owner, repo, id) | ||||
| 
 | ||||
|  | @ -328,7 +330,7 @@ func (s *ReactionsService) CreatePullRequestCommentReaction(ctx context.Context, | |||
| 
 | ||||
| // DeletePullRequestCommentReaction deletes the reaction to a pull request review comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#delete-a-pull-request-comment-reaction
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#delete-a-pull-request-comment-reaction
 | ||||
| func (s *ReactionsService) DeletePullRequestCommentReaction(ctx context.Context, owner, repo string, commentID, reactionID int64) (*Response, error) { | ||||
| 	url := fmt.Sprintf("repos/%v/%v/pulls/comments/%v/reactions/%v", owner, repo, commentID, reactionID) | ||||
| 
 | ||||
|  | @ -337,7 +339,7 @@ func (s *ReactionsService) DeletePullRequestCommentReaction(ctx context.Context, | |||
| 
 | ||||
| // DeletePullRequestCommentReactionByID deletes the reaction to a pull request review comment by repository ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#delete-a-pull-request-comment-reaction
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#delete-a-pull-request-comment-reaction
 | ||||
| func (s *ReactionsService) DeletePullRequestCommentReactionByID(ctx context.Context, repoID, commentID, reactionID int64) (*Response, error) { | ||||
| 	url := fmt.Sprintf("repositories/%v/pulls/comments/%v/reactions/%v", repoID, commentID, reactionID) | ||||
| 
 | ||||
|  | @ -346,7 +348,7 @@ func (s *ReactionsService) DeletePullRequestCommentReactionByID(ctx context.Cont | |||
| 
 | ||||
| // ListTeamDiscussionReactions lists the reactions for a team discussion.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#list-reactions-for-a-team-discussion-legacy
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#list-reactions-for-a-team-discussion-legacy
 | ||||
| func (s *ReactionsService) ListTeamDiscussionReactions(ctx context.Context, teamID int64, discussionNumber int, opts *ListOptions) ([]*Reaction, *Response, error) { | ||||
| 	u := fmt.Sprintf("teams/%v/discussions/%v/reactions", teamID, discussionNumber) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -371,9 +373,9 @@ func (s *ReactionsService) ListTeamDiscussionReactions(ctx context.Context, team | |||
| } | ||||
| 
 | ||||
| // CreateTeamDiscussionReaction creates a reaction for a team discussion.
 | ||||
| // The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray".
 | ||||
| // The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#create-reaction-for-a-team-discussion-legacy
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#create-reaction-for-a-team-discussion-legacy
 | ||||
| func (s *ReactionsService) CreateTeamDiscussionReaction(ctx context.Context, teamID int64, discussionNumber int, content string) (*Reaction, *Response, error) { | ||||
| 	u := fmt.Sprintf("teams/%v/discussions/%v/reactions", teamID, discussionNumber) | ||||
| 
 | ||||
|  | @ -396,7 +398,7 @@ func (s *ReactionsService) CreateTeamDiscussionReaction(ctx context.Context, tea | |||
| 
 | ||||
| // DeleteTeamDiscussionReaction deletes the reaction to a team discussion.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#delete-team-discussion-reaction
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#delete-team-discussion-reaction
 | ||||
| func (s *ReactionsService) DeleteTeamDiscussionReaction(ctx context.Context, org, teamSlug string, discussionNumber int, reactionID int64) (*Response, error) { | ||||
| 	url := fmt.Sprintf("orgs/%v/teams/%v/discussions/%v/reactions/%v", org, teamSlug, discussionNumber, reactionID) | ||||
| 
 | ||||
|  | @ -405,7 +407,7 @@ func (s *ReactionsService) DeleteTeamDiscussionReaction(ctx context.Context, org | |||
| 
 | ||||
| // DeleteTeamDiscussionReactionByOrgIDAndTeamID deletes the reaction to a team discussion by organization ID and team ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#delete-team-discussion-reaction
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#delete-team-discussion-reaction
 | ||||
| func (s *ReactionsService) DeleteTeamDiscussionReactionByOrgIDAndTeamID(ctx context.Context, orgID, teamID, discussionNumber int, reactionID int64) (*Response, error) { | ||||
| 	url := fmt.Sprintf("organizations/%v/team/%v/discussions/%v/reactions/%v", orgID, teamID, discussionNumber, reactionID) | ||||
| 
 | ||||
|  | @ -414,7 +416,7 @@ func (s *ReactionsService) DeleteTeamDiscussionReactionByOrgIDAndTeamID(ctx cont | |||
| 
 | ||||
| // ListTeamDiscussionCommentReactions lists the reactions for a team discussion comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#list-reactions-for-a-team-discussion-comment-legacy
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#list-reactions-for-a-team-discussion-comment-legacy
 | ||||
| func (s *ReactionsService) ListTeamDiscussionCommentReactions(ctx context.Context, teamID int64, discussionNumber, commentNumber int, opts *ListOptions) ([]*Reaction, *Response, error) { | ||||
| 	u := fmt.Sprintf("teams/%v/discussions/%v/comments/%v/reactions", teamID, discussionNumber, commentNumber) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -432,15 +434,15 @@ func (s *ReactionsService) ListTeamDiscussionCommentReactions(ctx context.Contex | |||
| 	var m []*Reaction | ||||
| 	resp, err := s.client.Do(ctx, req, &m) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 	return m, resp, nil | ||||
| } | ||||
| 
 | ||||
| // CreateTeamDiscussionCommentReaction creates a reaction for a team discussion comment.
 | ||||
| // The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray".
 | ||||
| // The content should have one of the following values: "+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", or "eyes".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#create-reaction-for-a-team-discussion-comment-legacy
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#create-reaction-for-a-team-discussion-comment-legacy
 | ||||
| func (s *ReactionsService) CreateTeamDiscussionCommentReaction(ctx context.Context, teamID int64, discussionNumber, commentNumber int, content string) (*Reaction, *Response, error) { | ||||
| 	u := fmt.Sprintf("teams/%v/discussions/%v/comments/%v/reactions", teamID, discussionNumber, commentNumber) | ||||
| 
 | ||||
|  | @ -463,7 +465,7 @@ func (s *ReactionsService) CreateTeamDiscussionCommentReaction(ctx context.Conte | |||
| 
 | ||||
| // DeleteTeamDiscussionCommentReaction deletes the reaction to a team discussion comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#delete-team-discussion-comment-reaction
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#delete-team-discussion-comment-reaction
 | ||||
| func (s *ReactionsService) DeleteTeamDiscussionCommentReaction(ctx context.Context, org, teamSlug string, discussionNumber, commentNumber int, reactionID int64) (*Response, error) { | ||||
| 	url := fmt.Sprintf("orgs/%v/teams/%v/discussions/%v/comments/%v/reactions/%v", org, teamSlug, discussionNumber, commentNumber, reactionID) | ||||
| 
 | ||||
|  | @ -472,7 +474,7 @@ func (s *ReactionsService) DeleteTeamDiscussionCommentReaction(ctx context.Conte | |||
| 
 | ||||
| // DeleteTeamDiscussionCommentReactionByOrgIDAndTeamID deletes the reaction to a team discussion comment by organization ID and team ID.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/reactions/#delete-team-discussion-comment-reaction
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/reactions/#delete-team-discussion-comment-reaction
 | ||||
| func (s *ReactionsService) DeleteTeamDiscussionCommentReactionByOrgIDAndTeamID(ctx context.Context, orgID, teamID, discussionNumber, commentNumber int, reactionID int64) (*Response, error) { | ||||
| 	url := fmt.Sprintf("organizations/%v/team/%v/discussions/%v/comments/%v/reactions/%v", orgID, teamID, discussionNumber, commentNumber, reactionID) | ||||
| 
 | ||||
|  | @ -9,58 +9,61 @@ import ( | |||
| 	"context" | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
| 	"net/http" | ||||
| 	"strings" | ||||
| ) | ||||
| 
 | ||||
| // RepositoriesService handles communication with the repository related
 | ||||
| // methods of the GitHub API.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/
 | ||||
| type RepositoriesService service | ||||
| 
 | ||||
| // Repository represents a GitHub repository.
 | ||||
| type Repository struct { | ||||
| 	ID                  *int64           `json:"id,omitempty"` | ||||
| 	NodeID              *string          `json:"node_id,omitempty"` | ||||
| 	Owner               *User            `json:"owner,omitempty"` | ||||
| 	Name                *string          `json:"name,omitempty"` | ||||
| 	FullName            *string          `json:"full_name,omitempty"` | ||||
| 	Description         *string          `json:"description,omitempty"` | ||||
| 	Homepage            *string          `json:"homepage,omitempty"` | ||||
| 	CodeOfConduct       *CodeOfConduct   `json:"code_of_conduct,omitempty"` | ||||
| 	DefaultBranch       *string          `json:"default_branch,omitempty"` | ||||
| 	MasterBranch        *string          `json:"master_branch,omitempty"` | ||||
| 	CreatedAt           *Timestamp       `json:"created_at,omitempty"` | ||||
| 	PushedAt            *Timestamp       `json:"pushed_at,omitempty"` | ||||
| 	UpdatedAt           *Timestamp       `json:"updated_at,omitempty"` | ||||
| 	HTMLURL             *string          `json:"html_url,omitempty"` | ||||
| 	CloneURL            *string          `json:"clone_url,omitempty"` | ||||
| 	GitURL              *string          `json:"git_url,omitempty"` | ||||
| 	MirrorURL           *string          `json:"mirror_url,omitempty"` | ||||
| 	SSHURL              *string          `json:"ssh_url,omitempty"` | ||||
| 	SVNURL              *string          `json:"svn_url,omitempty"` | ||||
| 	Language            *string          `json:"language,omitempty"` | ||||
| 	Fork                *bool            `json:"fork,omitempty"` | ||||
| 	ForksCount          *int             `json:"forks_count,omitempty"` | ||||
| 	NetworkCount        *int             `json:"network_count,omitempty"` | ||||
| 	OpenIssuesCount     *int             `json:"open_issues_count,omitempty"` | ||||
| 	StargazersCount     *int             `json:"stargazers_count,omitempty"` | ||||
| 	SubscribersCount    *int             `json:"subscribers_count,omitempty"` | ||||
| 	WatchersCount       *int             `json:"watchers_count,omitempty"` | ||||
| 	Size                *int             `json:"size,omitempty"` | ||||
| 	AutoInit            *bool            `json:"auto_init,omitempty"` | ||||
| 	Parent              *Repository      `json:"parent,omitempty"` | ||||
| 	Source              *Repository      `json:"source,omitempty"` | ||||
| 	TemplateRepository  *Repository      `json:"template_repository,omitempty"` | ||||
| 	Organization        *Organization    `json:"organization,omitempty"` | ||||
| 	Permissions         *map[string]bool `json:"permissions,omitempty"` | ||||
| 	AllowRebaseMerge    *bool            `json:"allow_rebase_merge,omitempty"` | ||||
| 	AllowSquashMerge    *bool            `json:"allow_squash_merge,omitempty"` | ||||
| 	AllowMergeCommit    *bool            `json:"allow_merge_commit,omitempty"` | ||||
| 	DeleteBranchOnMerge *bool            `json:"delete_branch_on_merge,omitempty"` | ||||
| 	Topics              []string         `json:"topics,omitempty"` | ||||
| 	Archived            *bool            `json:"archived,omitempty"` | ||||
| 	Disabled            *bool            `json:"disabled,omitempty"` | ||||
| 	ID                  *int64          `json:"id,omitempty"` | ||||
| 	NodeID              *string         `json:"node_id,omitempty"` | ||||
| 	Owner               *User           `json:"owner,omitempty"` | ||||
| 	Name                *string         `json:"name,omitempty"` | ||||
| 	FullName            *string         `json:"full_name,omitempty"` | ||||
| 	Description         *string         `json:"description,omitempty"` | ||||
| 	Homepage            *string         `json:"homepage,omitempty"` | ||||
| 	CodeOfConduct       *CodeOfConduct  `json:"code_of_conduct,omitempty"` | ||||
| 	DefaultBranch       *string         `json:"default_branch,omitempty"` | ||||
| 	MasterBranch        *string         `json:"master_branch,omitempty"` | ||||
| 	CreatedAt           *Timestamp      `json:"created_at,omitempty"` | ||||
| 	PushedAt            *Timestamp      `json:"pushed_at,omitempty"` | ||||
| 	UpdatedAt           *Timestamp      `json:"updated_at,omitempty"` | ||||
| 	HTMLURL             *string         `json:"html_url,omitempty"` | ||||
| 	CloneURL            *string         `json:"clone_url,omitempty"` | ||||
| 	GitURL              *string         `json:"git_url,omitempty"` | ||||
| 	MirrorURL           *string         `json:"mirror_url,omitempty"` | ||||
| 	SSHURL              *string         `json:"ssh_url,omitempty"` | ||||
| 	SVNURL              *string         `json:"svn_url,omitempty"` | ||||
| 	Language            *string         `json:"language,omitempty"` | ||||
| 	Fork                *bool           `json:"fork,omitempty"` | ||||
| 	ForksCount          *int            `json:"forks_count,omitempty"` | ||||
| 	NetworkCount        *int            `json:"network_count,omitempty"` | ||||
| 	OpenIssuesCount     *int            `json:"open_issues_count,omitempty"` | ||||
| 	OpenIssues          *int            `json:"open_issues,omitempty"` // Deprecated: Replaced by OpenIssuesCount. For backward compatibility OpenIssues is still populated.
 | ||||
| 	StargazersCount     *int            `json:"stargazers_count,omitempty"` | ||||
| 	SubscribersCount    *int            `json:"subscribers_count,omitempty"` | ||||
| 	WatchersCount       *int            `json:"watchers_count,omitempty"` // Deprecated: Replaced by StargazersCount. For backward compatibility WatchersCount is still populated.
 | ||||
| 	Watchers            *int            `json:"watchers,omitempty"`       // Deprecated: Replaced by StargazersCount. For backward compatibility Watchers is still populated.
 | ||||
| 	Size                *int            `json:"size,omitempty"` | ||||
| 	AutoInit            *bool           `json:"auto_init,omitempty"` | ||||
| 	Parent              *Repository     `json:"parent,omitempty"` | ||||
| 	Source              *Repository     `json:"source,omitempty"` | ||||
| 	TemplateRepository  *Repository     `json:"template_repository,omitempty"` | ||||
| 	Organization        *Organization   `json:"organization,omitempty"` | ||||
| 	Permissions         map[string]bool `json:"permissions,omitempty"` | ||||
| 	AllowRebaseMerge    *bool           `json:"allow_rebase_merge,omitempty"` | ||||
| 	AllowSquashMerge    *bool           `json:"allow_squash_merge,omitempty"` | ||||
| 	AllowMergeCommit    *bool           `json:"allow_merge_commit,omitempty"` | ||||
| 	DeleteBranchOnMerge *bool           `json:"delete_branch_on_merge,omitempty"` | ||||
| 	Topics              []string        `json:"topics,omitempty"` | ||||
| 	Archived            *bool           `json:"archived,omitempty"` | ||||
| 	Disabled            *bool           `json:"disabled,omitempty"` | ||||
| 
 | ||||
| 	// Only provided when using RepositoriesService.Get while in preview
 | ||||
| 	License *License `json:"license,omitempty"` | ||||
|  | @ -119,7 +122,7 @@ type Repository struct { | |||
| 	TeamsURL         *string `json:"teams_url,omitempty"` | ||||
| 
 | ||||
| 	// TextMatches is only populated from search results that request text matches
 | ||||
| 	// See: search.go and https://developer.github.com/v3/search/#text-match-metadata
 | ||||
| 	// See: search.go and https://docs.github.com/en/free-pro-team@latest/rest/reference/search/#text-match-metadata
 | ||||
| 	TextMatches []*TextMatch `json:"text_matches,omitempty"` | ||||
| 
 | ||||
| 	// Visibility is only used for Create and Edit endpoints. The visibility field
 | ||||
|  | @ -182,8 +185,8 @@ type RepositoryListOptions struct { | |||
| // List the repositories for a user. Passing the empty string will list
 | ||||
| // repositories for the authenticated user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#list-repositories-for-a-user
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#list-repositories-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-repositories-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-repositories-for-a-user
 | ||||
| func (s *RepositoriesService) List(ctx context.Context, user string, opts *RepositoryListOptions) ([]*Repository, *Response, error) { | ||||
| 	var u string | ||||
| 	if user != "" { | ||||
|  | @ -202,7 +205,7 @@ func (s *RepositoriesService) List(ctx context.Context, user string, opts *Repos | |||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept headers when APIs fully launch.
 | ||||
| 	acceptHeaders := []string{mediaTypeTopicsPreview} | ||||
| 	acceptHeaders := []string{mediaTypeTopicsPreview, mediaTypeRepositoryVisibilityPreview} | ||||
| 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) | ||||
| 
 | ||||
| 	var repos []*Repository | ||||
|  | @ -234,7 +237,7 @@ type RepositoryListByOrgOptions struct { | |||
| 
 | ||||
| // ListByOrg lists the repositories for an organization.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#list-organization-repositories
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-organization-repositories
 | ||||
| func (s *RepositoriesService) ListByOrg(ctx context.Context, org string, opts *RepositoryListByOrgOptions) ([]*Repository, *Response, error) { | ||||
| 	u := fmt.Sprintf("orgs/%v/repos", org) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -248,7 +251,7 @@ func (s *RepositoriesService) ListByOrg(ctx context.Context, org string, opts *R | |||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept headers when APIs fully launch.
 | ||||
| 	acceptHeaders := []string{mediaTypeTopicsPreview} | ||||
| 	acceptHeaders := []string{mediaTypeTopicsPreview, mediaTypeRepositoryVisibilityPreview} | ||||
| 	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) | ||||
| 
 | ||||
| 	var repos []*Repository | ||||
|  | @ -269,7 +272,7 @@ type RepositoryListAllOptions struct { | |||
| 
 | ||||
| // ListAll lists all GitHub repositories in the order that they were created.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#list-public-repositories
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-public-repositories
 | ||||
| func (s *RepositoriesService) ListAll(ctx context.Context, opts *RepositoryListAllOptions) ([]*Repository, *Response, error) { | ||||
| 	u, err := addOptions("repositories", opts) | ||||
| 	if err != nil { | ||||
|  | @ -327,8 +330,13 @@ type createRepoRequest struct { | |||
| // Note that only a subset of the repo fields are used and repo must
 | ||||
| // not be nil.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#create-a-repository-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#create-an-organization-repository
 | ||||
| // Also note that this method will return the response without actually
 | ||||
| // waiting for GitHub to finish creating the repository and letting the
 | ||||
| // changes propagate throughout its servers. You may set up a loop with
 | ||||
| // exponential back-off to verify repository's creation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-a-repository-for-the-authenticated-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-an-organization-repository
 | ||||
| func (s *RepositoriesService) Create(ctx context.Context, org string, repo *Repository) (*Repository, *Response, error) { | ||||
| 	var u string | ||||
| 	if org != "" { | ||||
|  | @ -380,12 +388,13 @@ type TemplateRepoRequest struct { | |||
| 	Owner       *string `json:"owner,omitempty"` | ||||
| 	Description *string `json:"description,omitempty"` | ||||
| 
 | ||||
| 	Private *bool `json:"private,omitempty"` | ||||
| 	IncludeAllBranches *bool `json:"include_all_branches,omitempty"` | ||||
| 	Private            *bool `json:"private,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // CreateFromTemplate generates a repository from a template.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#create-a-repository-using-a-template
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-a-repository-using-a-template
 | ||||
| func (s *RepositoriesService) CreateFromTemplate(ctx context.Context, templateOwner, templateRepo string, templateRepoReq *TemplateRepoRequest) (*Repository, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/generate", templateOwner, templateRepo) | ||||
| 
 | ||||
|  | @ -406,7 +415,7 @@ func (s *RepositoriesService) CreateFromTemplate(ctx context.Context, templateOw | |||
| 
 | ||||
| // Get fetches a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#get-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-repository
 | ||||
| func (s *RepositoriesService) Get(ctx context.Context, owner, repo string) (*Repository, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -415,7 +424,7 @@ func (s *RepositoriesService) Get(ctx context.Context, owner, repo string) (*Rep | |||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when the license support fully launches
 | ||||
| 	// https://developer.github.com/v3/licenses/#get-a-repositorys-license
 | ||||
| 	// https://docs.github.com/en/free-pro-team@latest/rest/reference/licenses/#get-a-repositorys-license
 | ||||
| 	acceptHeaders := []string{ | ||||
| 		mediaTypeCodesOfConductPreview, | ||||
| 		mediaTypeTopicsPreview, | ||||
|  | @ -435,7 +444,7 @@ func (s *RepositoriesService) Get(ctx context.Context, owner, repo string) (*Rep | |||
| 
 | ||||
| // GetCodeOfConduct gets the contents of a repository's code of conduct.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/codes_of_conduct/#get-the-code-of-conduct-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/codes-of-conduct/#get-the-code-of-conduct-for-a-repository
 | ||||
| func (s *RepositoriesService) GetCodeOfConduct(ctx context.Context, owner, repo string) (*CodeOfConduct, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/community/code_of_conduct", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -476,7 +485,7 @@ func (s *RepositoriesService) GetByID(ctx context.Context, id int64) (*Repositor | |||
| 
 | ||||
| // Edit updates a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#update-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#update-a-repository
 | ||||
| func (s *RepositoriesService) Edit(ctx context.Context, owner, repo string, repository *Repository) (*Repository, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v", owner, repo) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, repository) | ||||
|  | @ -497,7 +506,7 @@ func (s *RepositoriesService) Edit(ctx context.Context, owner, repo string, repo | |||
| 
 | ||||
| // Delete a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#delete-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-a-repository
 | ||||
| func (s *RepositoriesService) Delete(ctx context.Context, owner, repo string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v", owner, repo) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -529,6 +538,8 @@ type Contributor struct { | |||
| 	Type              *string `json:"type,omitempty"` | ||||
| 	SiteAdmin         *bool   `json:"site_admin,omitempty"` | ||||
| 	Contributions     *int    `json:"contributions,omitempty"` | ||||
| 	Name              *string `json:"name,omitempty"` | ||||
| 	Email             *string `json:"email,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ListContributorsOptions specifies the optional parameters to the
 | ||||
|  | @ -542,7 +553,7 @@ type ListContributorsOptions struct { | |||
| 
 | ||||
| // GetVulnerabilityAlerts checks if vulnerability alerts are enabled for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#check-if-vulnerability-alerts-are-enabled-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#check-if-vulnerability-alerts-are-enabled-for-a-repository
 | ||||
| func (s *RepositoriesService) GetVulnerabilityAlerts(ctx context.Context, owner, repository string) (bool, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/vulnerability-alerts", owner, repository) | ||||
| 
 | ||||
|  | @ -562,7 +573,7 @@ func (s *RepositoriesService) GetVulnerabilityAlerts(ctx context.Context, owner, | |||
| 
 | ||||
| // EnableVulnerabilityAlerts enables vulnerability alerts and the dependency graph for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#enable-vulnerability-alerts
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#enable-vulnerability-alerts
 | ||||
| func (s *RepositoriesService) EnableVulnerabilityAlerts(ctx context.Context, owner, repository string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/vulnerability-alerts", owner, repository) | ||||
| 
 | ||||
|  | @ -579,7 +590,7 @@ func (s *RepositoriesService) EnableVulnerabilityAlerts(ctx context.Context, own | |||
| 
 | ||||
| // DisableVulnerabilityAlerts disables vulnerability alerts and the dependency graph for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#disable-vulnerability-alerts
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#disable-vulnerability-alerts
 | ||||
| func (s *RepositoriesService) DisableVulnerabilityAlerts(ctx context.Context, owner, repository string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/vulnerability-alerts", owner, repository) | ||||
| 
 | ||||
|  | @ -596,7 +607,7 @@ func (s *RepositoriesService) DisableVulnerabilityAlerts(ctx context.Context, ow | |||
| 
 | ||||
| // EnableAutomatedSecurityFixes enables the automated security fixes for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#enable-automated-security-fixes
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#enable-automated-security-fixes
 | ||||
| func (s *RepositoriesService) EnableAutomatedSecurityFixes(ctx context.Context, owner, repository string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/automated-security-fixes", owner, repository) | ||||
| 
 | ||||
|  | @ -613,7 +624,7 @@ func (s *RepositoriesService) EnableAutomatedSecurityFixes(ctx context.Context, | |||
| 
 | ||||
| // DisableAutomatedSecurityFixes disables vulnerability alerts and the dependency graph for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#disable-automated-security-fixes
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#disable-automated-security-fixes
 | ||||
| func (s *RepositoriesService) DisableAutomatedSecurityFixes(ctx context.Context, owner, repository string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/automated-security-fixes", owner, repository) | ||||
| 
 | ||||
|  | @ -630,7 +641,7 @@ func (s *RepositoriesService) DisableAutomatedSecurityFixes(ctx context.Context, | |||
| 
 | ||||
| // ListContributors lists contributors for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#list-repository-contributors
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-repository-contributors
 | ||||
| func (s *RepositoriesService) ListContributors(ctx context.Context, owner string, repository string, opts *ListContributorsOptions) ([]*Contributor, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/contributors", owner, repository) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -646,7 +657,7 @@ func (s *RepositoriesService) ListContributors(ctx context.Context, owner string | |||
| 	var contributor []*Contributor | ||||
| 	resp, err := s.client.Do(ctx, req, &contributor) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return contributor, resp, nil | ||||
|  | @ -661,7 +672,7 @@ func (s *RepositoriesService) ListContributors(ctx context.Context, owner string | |||
| //       "Python": 7769
 | ||||
| //     }
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#list-repository-languages
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-repository-languages
 | ||||
| func (s *RepositoriesService) ListLanguages(ctx context.Context, owner string, repo string) (map[string]int, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/languages", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -680,7 +691,7 @@ func (s *RepositoriesService) ListLanguages(ctx context.Context, owner string, r | |||
| 
 | ||||
| // ListTeams lists the teams for the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#list-repository-teams
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-repository-teams
 | ||||
| func (s *RepositoriesService) ListTeams(ctx context.Context, owner string, repo string, opts *ListOptions) ([]*Team, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/teams", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -712,7 +723,7 @@ type RepositoryTag struct { | |||
| 
 | ||||
| // ListTags lists tags for the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#list-repository-tags
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-repository-tags
 | ||||
| func (s *RepositoriesService) ListTags(ctx context.Context, owner string, repo string, opts *ListOptions) ([]*RepositoryTag, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/tags", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -743,13 +754,14 @@ type Branch struct { | |||
| 
 | ||||
| // Protection represents a repository branch's protection.
 | ||||
| type Protection struct { | ||||
| 	RequiredStatusChecks       *RequiredStatusChecks          `json:"required_status_checks"` | ||||
| 	RequiredPullRequestReviews *PullRequestReviewsEnforcement `json:"required_pull_request_reviews"` | ||||
| 	EnforceAdmins              *AdminEnforcement              `json:"enforce_admins"` | ||||
| 	Restrictions               *BranchRestrictions            `json:"restrictions"` | ||||
| 	RequireLinearHistory       *RequireLinearHistory          `json:"required_linear_history"` | ||||
| 	AllowForcePushes           *AllowForcePushes              `json:"allow_force_pushes"` | ||||
| 	AllowDeletions             *AllowDeletions                `json:"allow_deletions"` | ||||
| 	RequiredStatusChecks           *RequiredStatusChecks           `json:"required_status_checks"` | ||||
| 	RequiredPullRequestReviews     *PullRequestReviewsEnforcement  `json:"required_pull_request_reviews"` | ||||
| 	EnforceAdmins                  *AdminEnforcement               `json:"enforce_admins"` | ||||
| 	Restrictions                   *BranchRestrictions             `json:"restrictions"` | ||||
| 	RequireLinearHistory           *RequireLinearHistory           `json:"required_linear_history"` | ||||
| 	AllowForcePushes               *AllowForcePushes               `json:"allow_force_pushes"` | ||||
| 	AllowDeletions                 *AllowDeletions                 `json:"allow_deletions"` | ||||
| 	RequiredConversationResolution *RequiredConversationResolution `json:"required_conversation_resolution"` | ||||
| } | ||||
| 
 | ||||
| // ProtectionRequest represents a request to create/edit a branch's protection.
 | ||||
|  | @ -826,7 +838,7 @@ type PullRequestReviewsEnforcementUpdate struct { | |||
| 	RequiredApprovingReviewCount int `json:"required_approving_review_count"` | ||||
| } | ||||
| 
 | ||||
| // RequireLinearHistory represents the configuration to enfore branches with no merge commit.
 | ||||
| // RequireLinearHistory represents the configuration to enforce branches with no merge commit.
 | ||||
| type RequireLinearHistory struct { | ||||
| 	Enabled bool `json:"enabled"` | ||||
| } | ||||
|  | @ -841,6 +853,11 @@ type AllowForcePushes struct { | |||
| 	Enabled bool `json:"enabled"` | ||||
| } | ||||
| 
 | ||||
| // RequiredConversationResolution, if enabled, requires all comments on the pull request to be resolved before it can be merged to a protected branch.
 | ||||
| type RequiredConversationResolution struct { | ||||
| 	Enabled bool `json:"enabled"` | ||||
| } | ||||
| 
 | ||||
| // AdminEnforcement represents the configuration to enforce required status checks for repository administrators.
 | ||||
| type AdminEnforcement struct { | ||||
| 	URL     *string `json:"url,omitempty"` | ||||
|  | @ -900,7 +917,7 @@ type SignaturesProtectedBranch struct { | |||
| 
 | ||||
| // ListBranches lists branches for the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#list-branches
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-branches
 | ||||
| func (s *RepositoriesService) ListBranches(ctx context.Context, owner string, repo string, opts *BranchListOptions) ([]*Branch, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -913,9 +930,6 @@ func (s *RepositoriesService) ListBranches(ctx context.Context, owner string, re | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches
 | ||||
| 	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview) | ||||
| 
 | ||||
| 	var branches []*Branch | ||||
| 	resp, err := s.client.Do(ctx, req, &branches) | ||||
| 	if err != nil { | ||||
|  | @ -927,29 +941,55 @@ func (s *RepositoriesService) ListBranches(ctx context.Context, owner string, re | |||
| 
 | ||||
| // GetBranch gets the specified branch for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#get-a-branch
 | ||||
| func (s *RepositoriesService) GetBranch(ctx context.Context, owner, repo, branch string) (*Branch, *Response, error) { | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-branch
 | ||||
| func (s *RepositoriesService) GetBranch(ctx context.Context, owner, repo, branch string, followRedirects bool) (*Branch, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 
 | ||||
| 	resp, err := s.getBranchFromURL(ctx, u, followRedirects) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 	defer resp.Body.Close() | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches
 | ||||
| 	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview) | ||||
| 
 | ||||
| 	b := new(Branch) | ||||
| 	resp, err := s.client.Do(ctx, req, b) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	if resp.StatusCode != http.StatusOK { | ||||
| 		return nil, newResponse(resp), fmt.Errorf("unexpected status code: %s", resp.Status) | ||||
| 	} | ||||
| 
 | ||||
| 	return b, resp, nil | ||||
| 	b := new(Branch) | ||||
| 	err = json.NewDecoder(resp.Body).Decode(b) | ||||
| 	return b, newResponse(resp), err | ||||
| } | ||||
| 
 | ||||
| func (s *RepositoriesService) getBranchFromURL(ctx context.Context, u string, followRedirects bool) (*http.Response, error) { | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	var resp *http.Response | ||||
| 	// Use http.DefaultTransport if no custom Transport is configured
 | ||||
| 	req = withContext(ctx, req) | ||||
| 	if s.client.client.Transport == nil { | ||||
| 		resp, err = http.DefaultTransport.RoundTrip(req) | ||||
| 	} else { | ||||
| 		resp, err = s.client.client.Transport.RoundTrip(req) | ||||
| 	} | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// If redirect response is returned, follow it
 | ||||
| 	if followRedirects && resp.StatusCode == http.StatusMovedPermanently { | ||||
| 		resp.Body.Close() | ||||
| 		u = resp.Header.Get("Location") | ||||
| 		resp, err = s.getBranchFromURL(ctx, u, false) | ||||
| 	} | ||||
| 	return resp, err | ||||
| } | ||||
| 
 | ||||
| // GetBranchProtection gets the protection of a given branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#get-branch-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-branch-protection
 | ||||
| func (s *RepositoriesService) GetBranchProtection(ctx context.Context, owner, repo, branch string) (*Protection, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -971,7 +1011,7 @@ func (s *RepositoriesService) GetBranchProtection(ctx context.Context, owner, re | |||
| 
 | ||||
| // GetRequiredStatusChecks gets the required status checks for a given protected branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#get-status-checks-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-status-checks-protection
 | ||||
| func (s *RepositoriesService) GetRequiredStatusChecks(ctx context.Context, owner, repo, branch string) (*RequiredStatusChecks, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/required_status_checks", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -979,9 +1019,6 @@ func (s *RepositoriesService) GetRequiredStatusChecks(ctx context.Context, owner | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches
 | ||||
| 	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview) | ||||
| 
 | ||||
| 	p := new(RequiredStatusChecks) | ||||
| 	resp, err := s.client.Do(ctx, req, p) | ||||
| 	if err != nil { | ||||
|  | @ -993,7 +1030,7 @@ func (s *RepositoriesService) GetRequiredStatusChecks(ctx context.Context, owner | |||
| 
 | ||||
| // ListRequiredStatusChecksContexts lists the required status checks contexts for a given protected branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#get-all-status-check-contexts
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-all-status-check-contexts
 | ||||
| func (s *RepositoriesService) ListRequiredStatusChecksContexts(ctx context.Context, owner, repo, branch string) (contexts []string, resp *Response, err error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/required_status_checks/contexts", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -1001,9 +1038,6 @@ func (s *RepositoriesService) ListRequiredStatusChecksContexts(ctx context.Conte | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches
 | ||||
| 	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview) | ||||
| 
 | ||||
| 	resp, err = s.client.Do(ctx, req, &contexts) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
|  | @ -1014,7 +1048,7 @@ func (s *RepositoriesService) ListRequiredStatusChecksContexts(ctx context.Conte | |||
| 
 | ||||
| // UpdateBranchProtection updates the protection of a given branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#update-branch-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#update-branch-protection
 | ||||
| func (s *RepositoriesService) UpdateBranchProtection(ctx context.Context, owner, repo, branch string, preq *ProtectionRequest) (*Protection, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("PUT", u, preq) | ||||
|  | @ -1036,7 +1070,7 @@ func (s *RepositoriesService) UpdateBranchProtection(ctx context.Context, owner, | |||
| 
 | ||||
| // RemoveBranchProtection removes the protection of a given branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#delete-branch-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-branch-protection
 | ||||
| func (s *RepositoriesService) RemoveBranchProtection(ctx context.Context, owner, repo, branch string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -1044,15 +1078,12 @@ func (s *RepositoriesService) RemoveBranchProtection(ctx context.Context, owner, | |||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches
 | ||||
| 	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview) | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // GetSignaturesProtectedBranch gets required signatures of protected branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#get-commit-signature-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-commit-signature-protection
 | ||||
| func (s *RepositoriesService) GetSignaturesProtectedBranch(ctx context.Context, owner, repo, branch string) (*SignaturesProtectedBranch, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/required_signatures", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -1075,7 +1106,7 @@ func (s *RepositoriesService) GetSignaturesProtectedBranch(ctx context.Context, | |||
| // RequireSignaturesOnProtectedBranch makes signed commits required on a protected branch.
 | ||||
| // It requires admin access and branch protection to be enabled.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#create-commit-signature-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-commit-signature-protection
 | ||||
| func (s *RepositoriesService) RequireSignaturesOnProtectedBranch(ctx context.Context, owner, repo, branch string) (*SignaturesProtectedBranch, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/required_signatures", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("POST", u, nil) | ||||
|  | @ -1097,7 +1128,7 @@ func (s *RepositoriesService) RequireSignaturesOnProtectedBranch(ctx context.Con | |||
| 
 | ||||
| // OptionalSignaturesOnProtectedBranch removes required signed commits on a given branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#delete-commit-signature-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-commit-signature-protection
 | ||||
| func (s *RepositoriesService) OptionalSignaturesOnProtectedBranch(ctx context.Context, owner, repo, branch string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/required_signatures", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -1113,7 +1144,7 @@ func (s *RepositoriesService) OptionalSignaturesOnProtectedBranch(ctx context.Co | |||
| 
 | ||||
| // UpdateRequiredStatusChecks updates the required status checks for a given protected branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#update-status-check-potection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#update-status-check-protection
 | ||||
| func (s *RepositoriesService) UpdateRequiredStatusChecks(ctx context.Context, owner, repo, branch string, sreq *RequiredStatusChecksRequest) (*RequiredStatusChecks, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/required_status_checks", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, sreq) | ||||
|  | @ -1130,9 +1161,22 @@ func (s *RepositoriesService) UpdateRequiredStatusChecks(ctx context.Context, ow | |||
| 	return sc, resp, nil | ||||
| } | ||||
| 
 | ||||
| // RemoveRequiredStatusChecks removes the required status checks for a given protected branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos#remove-status-check-protection
 | ||||
| func (s *RepositoriesService) RemoveRequiredStatusChecks(ctx context.Context, owner, repo, branch string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/required_status_checks", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // License gets the contents of a repository's license if one is detected.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/licenses/#get-the-license-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/licenses/#get-the-license-for-a-repository
 | ||||
| func (s *RepositoriesService) License(ctx context.Context, owner, repo string) (*RepositoryLicense, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/license", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -1151,7 +1195,7 @@ func (s *RepositoriesService) License(ctx context.Context, owner, repo string) ( | |||
| 
 | ||||
| // GetPullRequestReviewEnforcement gets pull request review enforcement of a protected branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#get-pull-request-review-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-pull-request-review-protection
 | ||||
| func (s *RepositoriesService) GetPullRequestReviewEnforcement(ctx context.Context, owner, repo, branch string) (*PullRequestReviewsEnforcement, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/required_pull_request_reviews", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -1174,7 +1218,7 @@ func (s *RepositoriesService) GetPullRequestReviewEnforcement(ctx context.Contex | |||
| // UpdatePullRequestReviewEnforcement patches pull request review enforcement of a protected branch.
 | ||||
| // It requires admin access and branch protection to be enabled.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#update-pull-request-review-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#update-pull-request-review-protection
 | ||||
| func (s *RepositoriesService) UpdatePullRequestReviewEnforcement(ctx context.Context, owner, repo, branch string, patch *PullRequestReviewsEnforcementUpdate) (*PullRequestReviewsEnforcement, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/required_pull_request_reviews", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, patch) | ||||
|  | @ -1197,7 +1241,7 @@ func (s *RepositoriesService) UpdatePullRequestReviewEnforcement(ctx context.Con | |||
| // DisableDismissalRestrictions disables dismissal restrictions of a protected branch.
 | ||||
| // It requires admin access and branch protection to be enabled.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#update-pull-request-review-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#update-pull-request-review-protection
 | ||||
| func (s *RepositoriesService) DisableDismissalRestrictions(ctx context.Context, owner, repo, branch string) (*PullRequestReviewsEnforcement, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/required_pull_request_reviews", owner, repo, branch) | ||||
| 
 | ||||
|  | @ -1224,7 +1268,7 @@ func (s *RepositoriesService) DisableDismissalRestrictions(ctx context.Context, | |||
| 
 | ||||
| // RemovePullRequestReviewEnforcement removes pull request enforcement of a protected branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#delete-pull-request-review-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-pull-request-review-protection
 | ||||
| func (s *RepositoriesService) RemovePullRequestReviewEnforcement(ctx context.Context, owner, repo, branch string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/required_pull_request_reviews", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -1232,15 +1276,12 @@ func (s *RepositoriesService) RemovePullRequestReviewEnforcement(ctx context.Con | |||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches
 | ||||
| 	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview) | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
| // GetAdminEnforcement gets admin enforcement information of a protected branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#get-admin-branch-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-admin-branch-protection
 | ||||
| func (s *RepositoriesService) GetAdminEnforcement(ctx context.Context, owner, repo, branch string) (*AdminEnforcement, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/enforce_admins", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -1248,9 +1289,6 @@ func (s *RepositoriesService) GetAdminEnforcement(ctx context.Context, owner, re | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches
 | ||||
| 	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview) | ||||
| 
 | ||||
| 	r := new(AdminEnforcement) | ||||
| 	resp, err := s.client.Do(ctx, req, r) | ||||
| 	if err != nil { | ||||
|  | @ -1263,7 +1301,7 @@ func (s *RepositoriesService) GetAdminEnforcement(ctx context.Context, owner, re | |||
| // AddAdminEnforcement adds admin enforcement to a protected branch.
 | ||||
| // It requires admin access and branch protection to be enabled.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#set-admin-branch-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#set-admin-branch-protection
 | ||||
| func (s *RepositoriesService) AddAdminEnforcement(ctx context.Context, owner, repo, branch string) (*AdminEnforcement, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/enforce_admins", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("POST", u, nil) | ||||
|  | @ -1271,9 +1309,6 @@ func (s *RepositoriesService) AddAdminEnforcement(ctx context.Context, owner, re | |||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches
 | ||||
| 	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview) | ||||
| 
 | ||||
| 	r := new(AdminEnforcement) | ||||
| 	resp, err := s.client.Do(ctx, req, r) | ||||
| 	if err != nil { | ||||
|  | @ -1285,7 +1320,7 @@ func (s *RepositoriesService) AddAdminEnforcement(ctx context.Context, owner, re | |||
| 
 | ||||
| // RemoveAdminEnforcement removes admin enforcement from a protected branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#delete-admin-branch-protection
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-admin-branch-protection
 | ||||
| func (s *RepositoriesService) RemoveAdminEnforcement(ctx context.Context, owner, repo, branch string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/enforce_admins", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -1293,9 +1328,6 @@ func (s *RepositoriesService) RemoveAdminEnforcement(ctx context.Context, owner, | |||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: remove custom Accept header when this API fully launches
 | ||||
| 	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview) | ||||
| 
 | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
| 
 | ||||
|  | @ -1306,7 +1338,7 @@ type repositoryTopics struct { | |||
| 
 | ||||
| // ListAllTopics lists topics for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#get-all-repository-topics
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-all-repository-topics
 | ||||
| func (s *RepositoriesService) ListAllTopics(ctx context.Context, owner, repo string) ([]string, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/topics", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -1328,7 +1360,7 @@ func (s *RepositoriesService) ListAllTopics(ctx context.Context, owner, repo str | |||
| 
 | ||||
| // ReplaceAllTopics replaces topics for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#replace-all-repository-topics
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#replace-all-repository-topics
 | ||||
| func (s *RepositoriesService) ReplaceAllTopics(ctx context.Context, owner, repo string, topics []string) ([]string, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/topics", owner, repo) | ||||
| 	t := &repositoryTopics{ | ||||
|  | @ -1354,10 +1386,10 @@ func (s *RepositoriesService) ReplaceAllTopics(ctx context.Context, owner, repo | |||
| 	return t.Names, resp, nil | ||||
| } | ||||
| 
 | ||||
| // ListApps lists the Github apps that have push access to a given protected branch.
 | ||||
| // It requires the Github apps to have `write` access to the `content` permission.
 | ||||
| // ListApps lists the GitHub apps that have push access to a given protected branch.
 | ||||
| // It requires the GitHub apps to have `write` access to the `content` permission.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#list-apps-with-access-to-the-protected-branch
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-apps-with-access-to-the-protected-branch
 | ||||
| func (s *RepositoriesService) ListApps(ctx context.Context, owner, repo, branch string) ([]*App, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/restrictions/apps", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -1376,11 +1408,11 @@ func (s *RepositoriesService) ListApps(ctx context.Context, owner, repo, branch | |||
| 
 | ||||
| // ReplaceAppRestrictions replaces the apps that have push access to a given protected branch.
 | ||||
| // It removes all apps that previously had push access and grants push access to the new list of apps.
 | ||||
| // It requires the Github apps to have `write` access to the `content` permission.
 | ||||
| // It requires the GitHub apps to have `write` access to the `content` permission.
 | ||||
| //
 | ||||
| // Note: The list of users, apps, and teams in total is limited to 100 items.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#set-app-access-restrictions
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#set-app-access-restrictions
 | ||||
| func (s *RepositoriesService) ReplaceAppRestrictions(ctx context.Context, owner, repo, branch string, slug []string) ([]*App, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/restrictions/apps", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("PUT", u, slug) | ||||
|  | @ -1391,18 +1423,18 @@ func (s *RepositoriesService) ReplaceAppRestrictions(ctx context.Context, owner, | |||
| 	var apps []*App | ||||
| 	resp, err := s.client.Do(ctx, req, &apps) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return apps, resp, nil | ||||
| } | ||||
| 
 | ||||
| // AddAppRestrictions grants the specified apps push access to a given protected branch.
 | ||||
| // It requires the Github apps to have `write` access to the `content` permission.
 | ||||
| // It requires the GitHub apps to have `write` access to the `content` permission.
 | ||||
| //
 | ||||
| // Note: The list of users, apps, and teams in total is limited to 100 items.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#add-app-access-restrictions
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#add-app-access-restrictions
 | ||||
| func (s *RepositoriesService) AddAppRestrictions(ctx context.Context, owner, repo, branch string, slug []string) ([]*App, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/restrictions/apps", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("POST", u, slug) | ||||
|  | @ -1413,18 +1445,18 @@ func (s *RepositoriesService) AddAppRestrictions(ctx context.Context, owner, rep | |||
| 	var apps []*App | ||||
| 	resp, err := s.client.Do(ctx, req, &apps) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return apps, resp, nil | ||||
| } | ||||
| 
 | ||||
| // RemoveAppRestrictions removes the ability of an app to push to this branch.
 | ||||
| // It requires the Github apps to have `write` access to the `content` permission.
 | ||||
| // It requires the GitHub apps to have `write` access to the `content` permission.
 | ||||
| //
 | ||||
| // Note: The list of users, apps, and teams in total is limited to 100 items.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/branches/#remove-app-access-restrictions
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#remove-app-access-restrictions
 | ||||
| func (s *RepositoriesService) RemoveAppRestrictions(ctx context.Context, owner, repo, branch string, slug []string) ([]*App, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/restrictions/apps", owner, repo, branch) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, slug) | ||||
|  | @ -1435,7 +1467,7 @@ func (s *RepositoriesService) RemoveAppRestrictions(ctx context.Context, owner, | |||
| 	var apps []*App | ||||
| 	resp, err := s.client.Do(ctx, req, &apps) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return apps, resp, nil | ||||
|  | @ -1455,7 +1487,7 @@ type TransferRequest struct { | |||
| // A follow up request, after a delay of a second or so, should result
 | ||||
| // in a successful request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#transfer-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#transfer-a-repository
 | ||||
| func (s *RepositoriesService) Transfer(ctx context.Context, owner, repo string, transfer TransferRequest) (*Repository, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/transfer", owner, repo) | ||||
| 
 | ||||
|  | @ -1484,7 +1516,7 @@ type DispatchRequestOptions struct { | |||
| 
 | ||||
| // Dispatch triggers a repository_dispatch event in a GitHub Actions workflow.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/#create-a-repository-dispatch-event
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-a-repository-dispatch-event
 | ||||
| func (s *RepositoriesService) Dispatch(ctx context.Context, owner, repo string, opts DispatchRequestOptions) (*Repository, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/dispatches", owner, repo) | ||||
| 
 | ||||
|  | @ -27,7 +27,7 @@ type ListCollaboratorsOptions struct { | |||
| } | ||||
| 
 | ||||
| // CollaboratorInvitation represents an invitation created when adding a collaborator.
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/collaborators/#response-when-a-new-invitation-is-created
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/collaborators/#response-when-a-new-invitation-is-created
 | ||||
| type CollaboratorInvitation struct { | ||||
| 	ID          *int64      `json:"id,omitempty"` | ||||
| 	Repo        *Repository `json:"repository,omitempty"` | ||||
|  | @ -41,7 +41,7 @@ type CollaboratorInvitation struct { | |||
| 
 | ||||
| // ListCollaborators lists the GitHub users that have access to the repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/collaborators/#list-repository-collaborators
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-repository-collaborators
 | ||||
| func (s *RepositoriesService) ListCollaborators(ctx context.Context, owner, repo string, opts *ListCollaboratorsOptions) ([]*User, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/collaborators", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -68,7 +68,7 @@ func (s *RepositoriesService) ListCollaborators(ctx context.Context, owner, repo | |||
| // Note: This will return false if the user is not a collaborator OR the user
 | ||||
| // is not a GitHub user.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/collaborators/#check-if-a-user-is-a-repository-collaborator
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#check-if-a-user-is-a-repository-collaborator
 | ||||
| func (s *RepositoriesService) IsCollaborator(ctx context.Context, owner, repo, user string) (bool, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/collaborators/%v", owner, repo, user) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -91,7 +91,7 @@ type RepositoryPermissionLevel struct { | |||
| } | ||||
| 
 | ||||
| // GetPermissionLevel retrieves the specific permission level a collaborator has for a given repository.
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/collaborators/#get-repository-permissions-for-a-user
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-repository-permissions-for-a-user
 | ||||
| func (s *RepositoriesService) GetPermissionLevel(ctx context.Context, owner, repo, user string) (*RepositoryPermissionLevel, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/collaborators/%v/permission", owner, repo, user) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -125,7 +125,7 @@ type RepositoryAddCollaboratorOptions struct { | |||
| // AddCollaborator sends an invitation to the specified GitHub user
 | ||||
| // to become a collaborator to the given repo.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/collaborators/#add-a-repository-collaborator
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#add-a-repository-collaborator
 | ||||
| func (s *RepositoriesService) AddCollaborator(ctx context.Context, owner, repo, user string, opts *RepositoryAddCollaboratorOptions) (*CollaboratorInvitation, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/collaborators/%v", owner, repo, user) | ||||
| 	req, err := s.client.NewRequest("PUT", u, opts) | ||||
|  | @ -143,7 +143,7 @@ func (s *RepositoriesService) AddCollaborator(ctx context.Context, owner, repo, | |||
| // RemoveCollaborator removes the specified GitHub user as collaborator from the given repo.
 | ||||
| // Note: Does not return error if a valid user that is not a collaborator is removed.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/collaborators/#remove-a-repository-collaborator
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#remove-a-repository-collaborator
 | ||||
| func (s *RepositoriesService) RemoveCollaborator(ctx context.Context, owner, repo, user string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/collaborators/%v", owner, repo, user) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -36,7 +36,7 @@ func (r RepositoryComment) String() string { | |||
| 
 | ||||
| // ListComments lists all the comments for the repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/comments/#list-commit-comments-for-a-repository
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-commit-comments-for-a-repository
 | ||||
| func (s *RepositoriesService) ListComments(ctx context.Context, owner, repo string, opts *ListOptions) ([]*RepositoryComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/comments", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -63,7 +63,7 @@ func (s *RepositoriesService) ListComments(ctx context.Context, owner, repo stri | |||
| 
 | ||||
| // ListCommitComments lists all the comments for a given commit SHA.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/comments/#list-commit-comments
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-commit-comments
 | ||||
| func (s *RepositoriesService) ListCommitComments(ctx context.Context, owner, repo, sha string, opts *ListOptions) ([]*RepositoryComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/commits/%v/comments", owner, repo, sha) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -91,7 +91,7 @@ func (s *RepositoriesService) ListCommitComments(ctx context.Context, owner, rep | |||
| // CreateComment creates a comment for the given commit.
 | ||||
| // Note: GitHub allows for comments to be created for non-existing files and positions.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/comments/#create-a-commit-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-a-commit-comment
 | ||||
| func (s *RepositoriesService) CreateComment(ctx context.Context, owner, repo, sha string, comment *RepositoryComment) (*RepositoryComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/commits/%v/comments", owner, repo, sha) | ||||
| 	req, err := s.client.NewRequest("POST", u, comment) | ||||
|  | @ -110,7 +110,7 @@ func (s *RepositoriesService) CreateComment(ctx context.Context, owner, repo, sh | |||
| 
 | ||||
| // GetComment gets a single comment from a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/comments/#get-a-commit-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-commit-comment
 | ||||
| func (s *RepositoriesService) GetComment(ctx context.Context, owner, repo string, id int64) (*RepositoryComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/comments/%v", owner, repo, id) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -132,7 +132,7 @@ func (s *RepositoriesService) GetComment(ctx context.Context, owner, repo string | |||
| 
 | ||||
| // UpdateComment updates the body of a single comment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/comments/#update-a-commit-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#update-a-commit-comment
 | ||||
| func (s *RepositoriesService) UpdateComment(ctx context.Context, owner, repo string, id int64, comment *RepositoryComment) (*RepositoryComment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/comments/%v", owner, repo, id) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, comment) | ||||
|  | @ -151,7 +151,7 @@ func (s *RepositoriesService) UpdateComment(ctx context.Context, owner, repo str | |||
| 
 | ||||
| // DeleteComment deletes a single comment from a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/comments/#delete-a-commit-comment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-a-commit-comment
 | ||||
| func (s *RepositoriesService) DeleteComment(ctx context.Context, owner, repo string, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/comments/%v", owner, repo, id) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -9,6 +9,7 @@ import ( | |||
| 	"bytes" | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 	"net/url" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
|  | @ -123,7 +124,7 @@ type BranchCommit struct { | |||
| 
 | ||||
| // ListCommits lists the commits of a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/commits/#list-commits
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-commits
 | ||||
| func (s *RepositoriesService) ListCommits(ctx context.Context, owner, repo string, opts *CommitsListOptions) ([]*RepositoryCommit, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/commits", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -147,8 +148,8 @@ func (s *RepositoriesService) ListCommits(ctx context.Context, owner, repo strin | |||
| 
 | ||||
| // GetCommit fetches the specified commit, including all details about it.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/commits/#get-a-single-commit
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/commits/#get-a-commit
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-single-commit
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-commit
 | ||||
| func (s *RepositoriesService) GetCommit(ctx context.Context, owner, repo, sha string) (*RepositoryCommit, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/commits/%v", owner, repo, sha) | ||||
| 
 | ||||
|  | @ -168,7 +169,7 @@ func (s *RepositoriesService) GetCommit(ctx context.Context, owner, repo, sha st | |||
| 
 | ||||
| // GetCommitRaw fetches the specified commit in raw (diff or patch) format.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/commits/#get-a-commit
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-commit
 | ||||
| func (s *RepositoriesService) GetCommitRaw(ctx context.Context, owner string, repo string, sha string, opts RawOptions) (string, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/commits/%v", owner, repo, sha) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -197,7 +198,7 @@ func (s *RepositoriesService) GetCommitRaw(ctx context.Context, owner string, re | |||
| // GetCommitSHA1 gets the SHA-1 of a commit reference. If a last-known SHA1 is
 | ||||
| // supplied and no new commits have occurred, a 304 Unmodified response is returned.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/commits/#get-a-commit
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-commit
 | ||||
| func (s *RepositoriesService) GetCommitSHA1(ctx context.Context, owner, repo, ref, lastSHA string) (string, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/commits/%v", owner, repo, refURLEscape(ref)) | ||||
| 
 | ||||
|  | @ -221,11 +222,13 @@ func (s *RepositoriesService) GetCommitSHA1(ctx context.Context, owner, repo, re | |||
| } | ||||
| 
 | ||||
| // CompareCommits compares a range of commits with each other.
 | ||||
| // todo: support media formats - https://github.com/google/go-github/issues/6
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/commits/#compare-two-commits
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#compare-two-commits
 | ||||
| func (s *RepositoriesService) CompareCommits(ctx context.Context, owner, repo string, base, head string) (*CommitsComparison, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/compare/%v...%v", owner, repo, base, head) | ||||
| 	escapedBase := url.QueryEscape(base) | ||||
| 	escapedHead := url.QueryEscape(head) | ||||
| 
 | ||||
| 	u := fmt.Sprintf("repos/%v/%v/compare/%v...%v", owner, repo, escapedBase, escapedHead) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
|  | @ -241,10 +244,46 @@ func (s *RepositoriesService) CompareCommits(ctx context.Context, owner, repo st | |||
| 	return comp, resp, nil | ||||
| } | ||||
| 
 | ||||
| // CompareCommitsRaw compares a range of commits with each other in raw (diff or patch) format.
 | ||||
| //
 | ||||
| // Both "base" and "head" must be branch names in "repo".
 | ||||
| // To compare branches across other repositories in the same network as "repo",
 | ||||
| // use the format "<USERNAME>:branch".
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#compare-two-commits
 | ||||
| func (s *RepositoriesService) CompareCommitsRaw(ctx context.Context, owner, repo, base, head string, opts RawOptions) (string, *Response, error) { | ||||
| 	escapedBase := url.QueryEscape(base) | ||||
| 	escapedHead := url.QueryEscape(head) | ||||
| 
 | ||||
| 	u := fmt.Sprintf("repos/%v/%v/compare/%v...%v", owner, repo, escapedBase, escapedHead) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return "", nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	switch opts.Type { | ||||
| 	case Diff: | ||||
| 		req.Header.Set("Accept", mediaTypeV3Diff) | ||||
| 	case Patch: | ||||
| 		req.Header.Set("Accept", mediaTypeV3Patch) | ||||
| 	default: | ||||
| 		return "", nil, fmt.Errorf("unsupported raw type %d", opts.Type) | ||||
| 	} | ||||
| 
 | ||||
| 	var buf bytes.Buffer | ||||
| 	resp, err := s.client.Do(ctx, req, &buf) | ||||
| 	if err != nil { | ||||
| 		return "", resp, err | ||||
| 	} | ||||
| 
 | ||||
| 	return buf.String(), resp, nil | ||||
| } | ||||
| 
 | ||||
| // ListBranchesHeadCommit gets all branches where the given commit SHA is the HEAD,
 | ||||
| // or latest commit for the branch.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/commits/#list-branches-for-head-commit
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-branches-for-head-commit
 | ||||
| func (s *RepositoriesService) ListBranchesHeadCommit(ctx context.Context, owner, repo, sha string) ([]*BranchCommit, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/commits/%v/branches-where-head", owner, repo, sha) | ||||
| 
 | ||||
|  | @ -38,7 +38,7 @@ type CommunityHealthMetrics struct { | |||
| 
 | ||||
| // GetCommunityHealthMetrics retrieves all the community health  metrics for a  repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/community/#get-community-profile-metrics
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-community-profile-metrics
 | ||||
| func (s *RepositoriesService) GetCommunityHealthMetrics(ctx context.Context, owner, repo string) (*CommunityHealthMetrics, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/community/profile", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -4,7 +4,7 @@ | |||
| // license that can be found in the LICENSE file.
 | ||||
| 
 | ||||
| // Repository contents API methods.
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/contents/
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/contents/
 | ||||
| 
 | ||||
| package github | ||||
| 
 | ||||
|  | @ -18,6 +18,7 @@ import ( | |||
| 	"net/http" | ||||
| 	"net/url" | ||||
| 	"path" | ||||
| 	"strings" | ||||
| ) | ||||
| 
 | ||||
| // RepositoryContent represents a file or directory in a github repository.
 | ||||
|  | @ -94,7 +95,7 @@ func (r *RepositoryContent) GetContent() (string, error) { | |||
| 
 | ||||
| // GetReadme gets the Readme file for the repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/contents/#get-a-repository-readme
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-repository-readme
 | ||||
| func (s *RepositoriesService) GetReadme(ctx context.Context, owner, repo string, opts *RepositoryContentGetOptions) (*RepositoryContent, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/readme", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -117,26 +118,60 @@ func (s *RepositoriesService) GetReadme(ctx context.Context, owner, repo string, | |||
| // specified file. This function will work with files of any size, as opposed
 | ||||
| // to GetContents which is limited to 1 Mb files. It is the caller's
 | ||||
| // responsibility to close the ReadCloser.
 | ||||
| func (s *RepositoriesService) DownloadContents(ctx context.Context, owner, repo, filepath string, opts *RepositoryContentGetOptions) (io.ReadCloser, error) { | ||||
| //
 | ||||
| // It is possible for the download to result in a failed response when the
 | ||||
| // returned error is nil. Callers should check the returned Response status
 | ||||
| // code to verify the content is from a successful response.
 | ||||
| func (s *RepositoriesService) DownloadContents(ctx context.Context, owner, repo, filepath string, opts *RepositoryContentGetOptions) (io.ReadCloser, *Response, error) { | ||||
| 	dir := path.Dir(filepath) | ||||
| 	filename := path.Base(filepath) | ||||
| 	_, dirContents, _, err := s.GetContents(ctx, owner, repo, dir, opts) | ||||
| 	_, dirContents, resp, err := s.GetContents(ctx, owner, repo, dir, opts) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 	for _, contents := range dirContents { | ||||
| 		if *contents.Name == filename { | ||||
| 			if contents.DownloadURL == nil || *contents.DownloadURL == "" { | ||||
| 				return nil, fmt.Errorf("No download link found for %s", filepath) | ||||
| 				return nil, resp, fmt.Errorf("No download link found for %s", filepath) | ||||
| 			} | ||||
| 			resp, err := s.client.client.Get(*contents.DownloadURL) | ||||
| 			dlResp, err := s.client.client.Get(*contents.DownloadURL) | ||||
| 			if err != nil { | ||||
| 				return nil, err | ||||
| 				return nil, &Response{Response: dlResp}, err | ||||
| 			} | ||||
| 			return resp.Body, nil | ||||
| 			return dlResp.Body, &Response{Response: dlResp}, nil | ||||
| 		} | ||||
| 	} | ||||
| 	return nil, fmt.Errorf("No file named %s found in %s", filename, dir) | ||||
| 	return nil, resp, fmt.Errorf("No file named %s found in %s", filename, dir) | ||||
| } | ||||
| 
 | ||||
| // DownloadContentsWithMeta is identical to DownloadContents but additionally
 | ||||
| // returns the RepositoryContent of the requested file. This additional data
 | ||||
| // is useful for future operations involving the requested file. For merely
 | ||||
| // reading the content of a file, DownloadContents is perfectly adequate.
 | ||||
| //
 | ||||
| // It is possible for the download to result in a failed response when the
 | ||||
| // returned error is nil. Callers should check the returned Response status
 | ||||
| // code to verify the content is from a successful response.
 | ||||
| func (s *RepositoriesService) DownloadContentsWithMeta(ctx context.Context, owner, repo, filepath string, opts *RepositoryContentGetOptions) (io.ReadCloser, *RepositoryContent, *Response, error) { | ||||
| 	dir := path.Dir(filepath) | ||||
| 	filename := path.Base(filepath) | ||||
| 	_, dirContents, resp, err := s.GetContents(ctx, owner, repo, dir, opts) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, resp, err | ||||
| 	} | ||||
| 	for _, contents := range dirContents { | ||||
| 		if *contents.Name == filename { | ||||
| 			if contents.DownloadURL == nil || *contents.DownloadURL == "" { | ||||
| 				return nil, contents, resp, fmt.Errorf("No download link found for %s", filepath) | ||||
| 			} | ||||
| 			dlResp, err := s.client.client.Get(*contents.DownloadURL) | ||||
| 			if err != nil { | ||||
| 				return nil, contents, &Response{Response: dlResp}, err | ||||
| 			} | ||||
| 			return dlResp.Body, contents, &Response{Response: dlResp}, nil | ||||
| 		} | ||||
| 	} | ||||
| 	return nil, nil, resp, fmt.Errorf("No file named %s found in %s", filename, dir) | ||||
| } | ||||
| 
 | ||||
| // GetContents can return either the metadata and content of a single file
 | ||||
|  | @ -146,9 +181,9 @@ func (s *RepositoriesService) DownloadContents(ctx context.Context, owner, repo, | |||
| // as possible, both result types will be returned but only one will contain a
 | ||||
| // value and the other will be nil.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/contents/#get-repository-content
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-repository-content
 | ||||
| func (s *RepositoriesService) GetContents(ctx context.Context, owner, repo, path string, opts *RepositoryContentGetOptions) (fileContent *RepositoryContent, directoryContent []*RepositoryContent, resp *Response, err error) { | ||||
| 	escapedPath := (&url.URL{Path: path}).String() | ||||
| 	escapedPath := (&url.URL{Path: strings.TrimSuffix(path, "/")}).String() | ||||
| 	u := fmt.Sprintf("repos/%s/%s/contents/%s", owner, repo, escapedPath) | ||||
| 	u, err = addOptions(u, opts) | ||||
| 	if err != nil { | ||||
|  | @ -177,7 +212,7 @@ func (s *RepositoriesService) GetContents(ctx context.Context, owner, repo, path | |||
| // CreateFile creates a new file in a repository at the given path and returns
 | ||||
| // the commit and file metadata.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/contents/#create-or-update-file-contents
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-or-update-file-contents
 | ||||
| func (s *RepositoriesService) CreateFile(ctx context.Context, owner, repo, path string, opts *RepositoryContentFileOptions) (*RepositoryContentResponse, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/contents/%s", owner, repo, path) | ||||
| 	req, err := s.client.NewRequest("PUT", u, opts) | ||||
|  | @ -195,7 +230,7 @@ func (s *RepositoriesService) CreateFile(ctx context.Context, owner, repo, path | |||
| // UpdateFile updates a file in a repository at the given path and returns the
 | ||||
| // commit and file metadata. Requires the blob SHA of the file being updated.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/contents/#create-or-update-file-contents
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-or-update-file-contents
 | ||||
| func (s *RepositoriesService) UpdateFile(ctx context.Context, owner, repo, path string, opts *RepositoryContentFileOptions) (*RepositoryContentResponse, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/contents/%s", owner, repo, path) | ||||
| 	req, err := s.client.NewRequest("PUT", u, opts) | ||||
|  | @ -213,7 +248,7 @@ func (s *RepositoriesService) UpdateFile(ctx context.Context, owner, repo, path | |||
| // DeleteFile deletes a file from a repository and returns the commit.
 | ||||
| // Requires the blob SHA of the file to be deleted.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/contents/#delete-a-file
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-a-file
 | ||||
| func (s *RepositoriesService) DeleteFile(ctx context.Context, owner, repo, path string, opts *RepositoryContentFileOptions) (*RepositoryContentResponse, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/contents/%s", owner, repo, path) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, opts) | ||||
|  | @ -243,7 +278,7 @@ const ( | |||
| // repository. The archiveFormat can be specified by either the github.Tarball
 | ||||
| // or github.Zipball constant.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/contents/#get-archive-link
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/contents/#get-archive-link
 | ||||
| func (s *RepositoriesService) GetArchiveLink(ctx context.Context, owner, repo string, archiveformat ArchiveFormat, opts *RepositoryContentGetOptions, followRedirects bool) (*url.URL, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/%s", owner, repo, archiveformat) | ||||
| 	if opts != nil && opts.Ref != "" { | ||||
|  | @ -63,7 +63,7 @@ type DeploymentsListOptions struct { | |||
| 
 | ||||
| // ListDeployments lists the deployments of a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/deployments/#list-deployments
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-deployments
 | ||||
| func (s *RepositoriesService) ListDeployments(ctx context.Context, owner, repo string, opts *DeploymentsListOptions) ([]*Deployment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/deployments", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -87,7 +87,7 @@ func (s *RepositoriesService) ListDeployments(ctx context.Context, owner, repo s | |||
| 
 | ||||
| // GetDeployment returns a single deployment of a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/deployments/#get-a-deployment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-deployment
 | ||||
| func (s *RepositoriesService) GetDeployment(ctx context.Context, owner, repo string, deploymentID int64) (*Deployment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/deployments/%v", owner, repo, deploymentID) | ||||
| 
 | ||||
|  | @ -107,7 +107,7 @@ func (s *RepositoriesService) GetDeployment(ctx context.Context, owner, repo str | |||
| 
 | ||||
| // CreateDeployment creates a new deployment for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/deployments/#create-a-deployment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-a-deployment
 | ||||
| func (s *RepositoriesService) CreateDeployment(ctx context.Context, owner, repo string, request *DeploymentRequest) (*Deployment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/deployments", owner, repo) | ||||
| 
 | ||||
|  | @ -131,7 +131,7 @@ func (s *RepositoriesService) CreateDeployment(ctx context.Context, owner, repo | |||
| 
 | ||||
| // DeleteDeployment deletes an existing deployment for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/deployments/#delete-a-deployment
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-a-deployment
 | ||||
| func (s *RepositoriesService) DeleteDeployment(ctx context.Context, owner, repo string, deploymentID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/deployments/%v", owner, repo, deploymentID) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -175,7 +175,7 @@ type DeploymentStatusRequest struct { | |||
| 
 | ||||
| // ListDeploymentStatuses lists the statuses of a given deployment of a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/deployments/#list-deployment-statuses
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-deployment-statuses
 | ||||
| func (s *RepositoriesService) ListDeploymentStatuses(ctx context.Context, owner, repo string, deployment int64, opts *ListOptions) ([]*DeploymentStatus, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/deployments/%v/statuses", owner, repo, deployment) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -203,7 +203,7 @@ func (s *RepositoriesService) ListDeploymentStatuses(ctx context.Context, owner, | |||
| 
 | ||||
| // GetDeploymentStatus returns a single deployment status of a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/deployments/#get-a-deployment-status
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-deployment-status
 | ||||
| func (s *RepositoriesService) GetDeploymentStatus(ctx context.Context, owner, repo string, deploymentID, deploymentStatusID int64) (*DeploymentStatus, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/deployments/%v/statuses/%v", owner, repo, deploymentID, deploymentStatusID) | ||||
| 
 | ||||
|  | @ -227,7 +227,7 @@ func (s *RepositoriesService) GetDeploymentStatus(ctx context.Context, owner, re | |||
| 
 | ||||
| // CreateDeploymentStatus creates a new status for a deployment.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/deployments/#create-a-deployment-status
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-a-deployment-status
 | ||||
| func (s *RepositoriesService) CreateDeploymentStatus(ctx context.Context, owner, repo string, deployment int64, request *DeploymentStatusRequest) (*DeploymentStatus, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/deployments/%v/statuses", owner, repo, deployment) | ||||
| 
 | ||||
							
								
								
									
										191
									
								
								vendor/github.com/google/go-github/v37/github/repos_environments.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							
							
						
						
									
										191
									
								
								vendor/github.com/google/go-github/v37/github/repos_environments.go
								
								
									generated
								
								
									vendored
								
								
									Normal file
								
							|  | @ -0,0 +1,191 @@ | |||
| // Copyright 2021 The go-github AUTHORS. All rights reserved.
 | ||||
| //
 | ||||
| // Use of this source code is governed by a BSD-style
 | ||||
| // license that can be found in the LICENSE file.
 | ||||
| 
 | ||||
| package github | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| // Environment represents a single environment in a repository.
 | ||||
| type Environment struct { | ||||
| 	Owner                  *string         `json:"owner,omitempty"` | ||||
| 	Repo                   *string         `json:"repo,omitempty"` | ||||
| 	EnvironmentName        *string         `json:"environment_name,omitempty"` | ||||
| 	WaitTimer              *int            `json:"wait_timer,omitempty"` | ||||
| 	Reviewers              []*EnvReviewers `json:"reviewers,omitempty"` | ||||
| 	DeploymentBranchPolicy *BranchPolicy   `json:"deployment_branch_policy,omitempty"` | ||||
| 	// Return/response only values
 | ||||
| 	ID              *int64            `json:"id,omitempty"` | ||||
| 	NodeID          *string           `json:"node_id,omitempty"` | ||||
| 	Name            *string           `json:"name,omitempty"` | ||||
| 	URL             *string           `json:"url,omitempty"` | ||||
| 	HTMLURL         *string           `json:"html_url,omitempty"` | ||||
| 	CreatedAt       *Timestamp        `json:"created_at,omitempty"` | ||||
| 	UpdatedAt       *Timestamp        `json:"updated_at,omitempty"` | ||||
| 	ProtectionRules []*ProtectionRule `json:"protection_rules,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // EnvReviewers represents a single environment reviewer entry.
 | ||||
| type EnvReviewers struct { | ||||
| 	Type *string `json:"type,omitempty"` | ||||
| 	ID   *int64  `json:"id,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // BranchPolicy represents the options for whether a branch deployment policy is applied to this environment.
 | ||||
| type BranchPolicy struct { | ||||
| 	ProtectedBranches    *bool `json:"protected_branches,omitempty"` | ||||
| 	CustomBranchPolicies *bool `json:"custom_branch_policies,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // EnvResponse represents the slightly different format of response that comes back when you list an environment.
 | ||||
| type EnvResponse struct { | ||||
| 	TotalCount   *int           `json:"total_count,omitempty"` | ||||
| 	Environments []*Environment `json:"environments,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // ProtectionRule represents a single protection rule applied to the environment.
 | ||||
| type ProtectionRule struct { | ||||
| 	ID        *int64              `json:"id,omitempty"` | ||||
| 	NodeID    *string             `json:"node_id,omitempty"` | ||||
| 	Type      *string             `json:"type,omitempty"` | ||||
| 	WaitTimer *int                `json:"wait_timer,omitempty"` | ||||
| 	Reviewers []*RequiredReviewer `json:"reviewers,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // RequiredReviewer represents a required reviewer.
 | ||||
| type RequiredReviewer struct { | ||||
| 	Type     *string     `json:"type,omitempty"` | ||||
| 	Reviewer interface{} `json:"reviewer,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // UnmarshalJSON implements the json.Unmarshaler interface.
 | ||||
| // This helps us handle the fact that RequiredReviewer can have either a User or Team type reviewer field.
 | ||||
| func (r *RequiredReviewer) UnmarshalJSON(data []byte) error { | ||||
| 	type aliasReviewer RequiredReviewer | ||||
| 	var reviewer aliasReviewer | ||||
| 	if err := json.Unmarshal(data, &reviewer); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	r.Type = reviewer.Type | ||||
| 
 | ||||
| 	switch *reviewer.Type { | ||||
| 	case "User": | ||||
| 		reviewer.Reviewer = &User{} | ||||
| 		if err := json.Unmarshal(data, &reviewer); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		r.Reviewer = reviewer.Reviewer | ||||
| 	case "Team": | ||||
| 		reviewer.Reviewer = &Team{} | ||||
| 		if err := json.Unmarshal(data, &reviewer); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		r.Reviewer = reviewer.Reviewer | ||||
| 	default: | ||||
| 		r.Type = nil | ||||
| 		r.Reviewer = nil | ||||
| 		return fmt.Errorf("reviewer.Type is %T, not a string of 'User' or 'Team', unable to unmarshal", reviewer.Type) | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // ListEnvironments lists all environments for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/repos#get-all-environments
 | ||||
| func (s *RepositoriesService) ListEnvironments(ctx context.Context, owner, repo string) (*EnvResponse, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/environments", owner, repo) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	var list *EnvResponse | ||||
| 	resp, err := s.client.Do(ctx, req, &list) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 	return list, resp, nil | ||||
| } | ||||
| 
 | ||||
| // GetEnvironment get a single environment for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/repos#get-an-environment
 | ||||
| func (s *RepositoriesService) GetEnvironment(ctx context.Context, owner, repo, name string) (*Environment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/environments/%s", owner, repo, name) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	var env *Environment | ||||
| 	resp, err := s.client.Do(ctx, req, &env) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 	return env, resp, nil | ||||
| } | ||||
| 
 | ||||
| // MarshalJSON implements the json.Marshaler interface.
 | ||||
| // As the only way to clear a WaitTimer is to set it to 0, a missing WaitTimer object should default to 0, not null.
 | ||||
| func (c *CreateUpdateEnvironment) MarshalJSON() ([]byte, error) { | ||||
| 	type Alias CreateUpdateEnvironment | ||||
| 	if c.WaitTimer == nil { | ||||
| 		c.WaitTimer = Int(0) | ||||
| 	} | ||||
| 	return json.Marshal(&struct { | ||||
| 		*Alias | ||||
| 	}{ | ||||
| 		Alias: (*Alias)(c), | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| // CreateUpdateEnvironment represents the fields required for the create/update operation
 | ||||
| // following the Create/Update release example.
 | ||||
| // See https://github.com/google/go-github/issues/992 for more information.
 | ||||
| // Removed omitempty here as the API expects null values for reviewers and deployment_branch_policy to clear them.
 | ||||
| type CreateUpdateEnvironment struct { | ||||
| 	WaitTimer              *int            `json:"wait_timer"` | ||||
| 	Reviewers              []*EnvReviewers `json:"reviewers"` | ||||
| 	DeploymentBranchPolicy *BranchPolicy   `json:"deployment_branch_policy"` | ||||
| } | ||||
| 
 | ||||
| // CreateUpdateEnvironment create or update a new environment for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/repos#create-or-update-an-environment
 | ||||
| func (s *RepositoriesService) CreateUpdateEnvironment(ctx context.Context, owner, repo, name string, environment *CreateUpdateEnvironment) (*Environment, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/environments/%s", owner, repo, name) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("PUT", u, environment) | ||||
| 	if err != nil { | ||||
| 		return nil, nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	e := new(Environment) | ||||
| 	resp, err := s.client.Do(ctx, req, e) | ||||
| 	if err != nil { | ||||
| 		return nil, resp, err | ||||
| 	} | ||||
| 	return e, resp, nil | ||||
| } | ||||
| 
 | ||||
| // DeleteEnvironment delete an environment from a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://docs.github.com/en/rest/reference/repos#delete-an-environment
 | ||||
| func (s *RepositoriesService) DeleteEnvironment(ctx context.Context, owner, repo, name string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/environments/%s", owner, repo, name) | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return s.client.Do(ctx, req, nil) | ||||
| } | ||||
|  | @ -24,7 +24,7 @@ type RepositoryListForksOptions struct { | |||
| 
 | ||||
| // ListForks lists the forks of the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/forks/#list-forks
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-forks
 | ||||
| func (s *RepositoriesService) ListForks(ctx context.Context, owner, repo string, opts *RepositoryListForksOptions) ([]*Repository, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/forks", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -65,7 +65,7 @@ type RepositoryCreateForkOptions struct { | |||
| // A follow up request, after a delay of a second or so, should result
 | ||||
| // in a successful request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/forks/#create-a-fork
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-a-fork
 | ||||
| func (s *RepositoriesService) CreateFork(ctx context.Context, owner, repo string, opts *RepositoryCreateForkOptions) (*Repository, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/forks", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -19,18 +19,21 @@ import ( | |||
| //
 | ||||
| // GitHub API docs: https://help.github.com/articles/post-receive-hooks
 | ||||
| type WebHookPayload struct { | ||||
| 	After      *string          `json:"after,omitempty"` | ||||
| 	Before     *string          `json:"before,omitempty"` | ||||
| 	Commits    []*WebHookCommit `json:"commits,omitempty"` | ||||
| 	Compare    *string          `json:"compare,omitempty"` | ||||
| 	Created    *bool            `json:"created,omitempty"` | ||||
| 	Deleted    *bool            `json:"deleted,omitempty"` | ||||
| 	Forced     *bool            `json:"forced,omitempty"` | ||||
| 	HeadCommit *WebHookCommit   `json:"head_commit,omitempty"` | ||||
| 	Pusher     *User            `json:"pusher,omitempty"` | ||||
| 	Ref        *string          `json:"ref,omitempty"` | ||||
| 	Repo       *Repository      `json:"repository,omitempty"` | ||||
| 	Sender     *User            `json:"sender,omitempty"` | ||||
| 	Action       *string          `json:"action,omitempty"` | ||||
| 	After        *string          `json:"after,omitempty"` | ||||
| 	Before       *string          `json:"before,omitempty"` | ||||
| 	Commits      []*WebHookCommit `json:"commits,omitempty"` | ||||
| 	Compare      *string          `json:"compare,omitempty"` | ||||
| 	Created      *bool            `json:"created,omitempty"` | ||||
| 	Deleted      *bool            `json:"deleted,omitempty"` | ||||
| 	Forced       *bool            `json:"forced,omitempty"` | ||||
| 	HeadCommit   *WebHookCommit   `json:"head_commit,omitempty"` | ||||
| 	Installation *Installation    `json:"installation,omitempty"` | ||||
| 	Organization *Organization    `json:"organization,omitempty"` | ||||
| 	Pusher       *User            `json:"pusher,omitempty"` | ||||
| 	Ref          *string          `json:"ref,omitempty"` | ||||
| 	Repo         *Repository      `json:"repository,omitempty"` | ||||
| 	Sender       *User            `json:"sender,omitempty"` | ||||
| } | ||||
| 
 | ||||
| func (w WebHookPayload) String() string { | ||||
|  | @ -69,10 +72,15 @@ func (w WebHookAuthor) String() string { | |||
| 
 | ||||
| // Hook represents a GitHub (web and service) hook for a repository.
 | ||||
| type Hook struct { | ||||
| 	CreatedAt *time.Time `json:"created_at,omitempty"` | ||||
| 	UpdatedAt *time.Time `json:"updated_at,omitempty"` | ||||
| 	URL       *string    `json:"url,omitempty"` | ||||
| 	ID        *int64     `json:"id,omitempty"` | ||||
| 	CreatedAt    *time.Time             `json:"created_at,omitempty"` | ||||
| 	UpdatedAt    *time.Time             `json:"updated_at,omitempty"` | ||||
| 	URL          *string                `json:"url,omitempty"` | ||||
| 	ID           *int64                 `json:"id,omitempty"` | ||||
| 	Type         *string                `json:"type,omitempty"` | ||||
| 	Name         *string                `json:"name,omitempty"` | ||||
| 	TestURL      *string                `json:"test_url,omitempty"` | ||||
| 	PingURL      *string                `json:"ping_url,omitempty"` | ||||
| 	LastResponse map[string]interface{} `json:"last_response,omitempty"` | ||||
| 
 | ||||
| 	// Only the following fields are used when creating a hook.
 | ||||
| 	// Config is required.
 | ||||
|  | @ -104,7 +112,7 @@ type createHookRequest struct { | |||
| // Note that only a subset of the hook fields are used and hook must
 | ||||
| // not be nil.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/hooks/#create-a-repository-webhook
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-a-repository-webhook
 | ||||
| func (s *RepositoriesService) CreateHook(ctx context.Context, owner, repo string, hook *Hook) (*Hook, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/hooks", owner, repo) | ||||
| 
 | ||||
|  | @ -131,7 +139,7 @@ func (s *RepositoriesService) CreateHook(ctx context.Context, owner, repo string | |||
| 
 | ||||
| // ListHooks lists all Hooks for the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/hooks/#list-repository-webhooks
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-repository-webhooks
 | ||||
| func (s *RepositoriesService) ListHooks(ctx context.Context, owner, repo string, opts *ListOptions) ([]*Hook, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/hooks", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -155,7 +163,7 @@ func (s *RepositoriesService) ListHooks(ctx context.Context, owner, repo string, | |||
| 
 | ||||
| // GetHook returns a single specified Hook.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/hooks/#get-a-repository-webhook
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-repository-webhook
 | ||||
| func (s *RepositoriesService) GetHook(ctx context.Context, owner, repo string, id int64) (*Hook, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/hooks/%d", owner, repo, id) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -173,7 +181,7 @@ func (s *RepositoriesService) GetHook(ctx context.Context, owner, repo string, i | |||
| 
 | ||||
| // EditHook updates a specified Hook.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/hooks/#update-a-repository-webhook
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#update-a-repository-webhook
 | ||||
| func (s *RepositoriesService) EditHook(ctx context.Context, owner, repo string, id int64, hook *Hook) (*Hook, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/hooks/%d", owner, repo, id) | ||||
| 	req, err := s.client.NewRequest("PATCH", u, hook) | ||||
|  | @ -191,7 +199,7 @@ func (s *RepositoriesService) EditHook(ctx context.Context, owner, repo string, | |||
| 
 | ||||
| // DeleteHook deletes a specified Hook.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/hooks/#delete-a-repository-webhook
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-a-repository-webhook
 | ||||
| func (s *RepositoriesService) DeleteHook(ctx context.Context, owner, repo string, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/hooks/%d", owner, repo, id) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -203,7 +211,7 @@ func (s *RepositoriesService) DeleteHook(ctx context.Context, owner, repo string | |||
| 
 | ||||
| // PingHook triggers a 'ping' event to be sent to the Hook.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/hooks/#ping-a-repository-webhook
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#ping-a-repository-webhook
 | ||||
| func (s *RepositoriesService) PingHook(ctx context.Context, owner, repo string, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/hooks/%d/pings", owner, repo, id) | ||||
| 	req, err := s.client.NewRequest("POST", u, nil) | ||||
|  | @ -215,7 +223,7 @@ func (s *RepositoriesService) PingHook(ctx context.Context, owner, repo string, | |||
| 
 | ||||
| // TestHook triggers a test Hook by github.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/hooks/#test-the-push-repository-webhook
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#test-the-push-repository-webhook
 | ||||
| func (s *RepositoriesService) TestHook(ctx context.Context, owner, repo string, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/hooks/%d/tests", owner, repo, id) | ||||
| 	req, err := s.client.NewRequest("POST", u, nil) | ||||
|  | @ -27,7 +27,7 @@ type RepositoryInvitation struct { | |||
| 
 | ||||
| // ListInvitations lists all currently-open repository invitations.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/invitations/#list-repository-invitations
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-repository-invitations
 | ||||
| func (s *RepositoriesService) ListInvitations(ctx context.Context, owner, repo string, opts *ListOptions) ([]*RepositoryInvitation, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/invitations", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -51,7 +51,7 @@ func (s *RepositoriesService) ListInvitations(ctx context.Context, owner, repo s | |||
| 
 | ||||
| // DeleteInvitation deletes a repository invitation.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/invitations/#delete-a-repository-invitation
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-a-repository-invitation
 | ||||
| func (s *RepositoriesService) DeleteInvitation(ctx context.Context, owner, repo string, invitationID int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/invitations/%v", owner, repo, invitationID) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -68,7 +68,7 @@ func (s *RepositoriesService) DeleteInvitation(ctx context.Context, owner, repo | |||
| // permissions represents the permissions that the associated user will have
 | ||||
| // on the repository. Possible values are: "read", "write", "admin".
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/invitations/#update-a-repository-invitation
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#update-a-repository-invitation
 | ||||
| func (s *RepositoriesService) UpdateInvitation(ctx context.Context, owner, repo string, invitationID int64, permissions string) (*RepositoryInvitation, *Response, error) { | ||||
| 	opts := &struct { | ||||
| 		Permissions string `json:"permissions"` | ||||
|  | @ -14,7 +14,7 @@ import ( | |||
| 
 | ||||
| // ListKeys lists the deploy keys for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/keys/#list-deploy-keys
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-deploy-keys
 | ||||
| func (s *RepositoriesService) ListKeys(ctx context.Context, owner string, repo string, opts *ListOptions) ([]*Key, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/keys", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -38,7 +38,7 @@ func (s *RepositoriesService) ListKeys(ctx context.Context, owner string, repo s | |||
| 
 | ||||
| // GetKey fetches a single deploy key.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/keys/#get-a-deploy-key
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-deploy-key
 | ||||
| func (s *RepositoriesService) GetKey(ctx context.Context, owner string, repo string, id int64) (*Key, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/keys/%v", owner, repo, id) | ||||
| 
 | ||||
|  | @ -58,7 +58,7 @@ func (s *RepositoriesService) GetKey(ctx context.Context, owner string, repo str | |||
| 
 | ||||
| // CreateKey adds a deploy key for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/keys/#create-a-deploy-key
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-a-deploy-key
 | ||||
| func (s *RepositoriesService) CreateKey(ctx context.Context, owner string, repo string, key *Key) (*Key, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/keys", owner, repo) | ||||
| 
 | ||||
|  | @ -78,7 +78,7 @@ func (s *RepositoriesService) CreateKey(ctx context.Context, owner string, repo | |||
| 
 | ||||
| // DeleteKey deletes a deploy key.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/keys/#delete-a-deploy-key
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-a-deploy-key
 | ||||
| func (s *RepositoriesService) DeleteKey(ctx context.Context, owner string, repo string, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/keys/%v", owner, repo, id) | ||||
| 
 | ||||
|  | @ -20,7 +20,7 @@ type RepositoryMergeRequest struct { | |||
| 
 | ||||
| // Merge a branch in the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/merging/#merge-a-branch
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#merge-a-branch
 | ||||
| func (s *RepositoriesService) Merge(ctx context.Context, owner, repo string, request *RepositoryMergeRequest) (*RepositoryCommit, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/merges", owner, repo) | ||||
| 	req, err := s.client.NewRequest("POST", u, request) | ||||
|  | @ -51,7 +51,7 @@ type createPagesRequest struct { | |||
| 
 | ||||
| // EnablePages enables GitHub Pages for the named repo.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/pages/#create-a-github-pages-site
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-a-github-pages-site
 | ||||
| func (s *RepositoriesService) EnablePages(ctx context.Context, owner, repo string, pages *Pages) (*Pages, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pages", owner, repo) | ||||
| 
 | ||||
|  | @ -87,7 +87,7 @@ type PagesUpdate struct { | |||
| 
 | ||||
| // UpdatePages updates GitHub Pages for the named repo.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/pages/#update-information-about-a-github-pages-site
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#update-information-about-a-github-pages-site
 | ||||
| func (s *RepositoriesService) UpdatePages(ctx context.Context, owner, repo string, opts *PagesUpdate) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pages", owner, repo) | ||||
| 
 | ||||
|  | @ -106,7 +106,7 @@ func (s *RepositoriesService) UpdatePages(ctx context.Context, owner, repo strin | |||
| 
 | ||||
| // DisablePages disables GitHub Pages for the named repo.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/pages/#delete-a-github-pages-site
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-a-github-pages-site
 | ||||
| func (s *RepositoriesService) DisablePages(ctx context.Context, owner, repo string) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pages", owner, repo) | ||||
| 	req, err := s.client.NewRequest("DELETE", u, nil) | ||||
|  | @ -122,7 +122,7 @@ func (s *RepositoriesService) DisablePages(ctx context.Context, owner, repo stri | |||
| 
 | ||||
| // GetPagesInfo fetches information about a GitHub Pages site.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/pages/#get-a-github-pages-site
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-github-pages-site
 | ||||
| func (s *RepositoriesService) GetPagesInfo(ctx context.Context, owner, repo string) (*Pages, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pages", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -141,7 +141,7 @@ func (s *RepositoriesService) GetPagesInfo(ctx context.Context, owner, repo stri | |||
| 
 | ||||
| // ListPagesBuilds lists the builds for a GitHub Pages site.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/pages/#list-github-pages-builds
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-github-pages-builds
 | ||||
| func (s *RepositoriesService) ListPagesBuilds(ctx context.Context, owner, repo string, opts *ListOptions) ([]*PagesBuild, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pages/builds", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -165,7 +165,7 @@ func (s *RepositoriesService) ListPagesBuilds(ctx context.Context, owner, repo s | |||
| 
 | ||||
| // GetLatestPagesBuild fetches the latest build information for a GitHub pages site.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/pages/#get-latest-pages-build
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-latest-pages-build
 | ||||
| func (s *RepositoriesService) GetLatestPagesBuild(ctx context.Context, owner, repo string) (*PagesBuild, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pages/builds/latest", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -184,7 +184,7 @@ func (s *RepositoriesService) GetLatestPagesBuild(ctx context.Context, owner, re | |||
| 
 | ||||
| // GetPageBuild fetches the specific build information for a GitHub pages site.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/pages/#get-github-pages-build
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-github-pages-build
 | ||||
| func (s *RepositoriesService) GetPageBuild(ctx context.Context, owner, repo string, id int64) (*PagesBuild, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pages/builds/%v", owner, repo, id) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -203,7 +203,7 @@ func (s *RepositoriesService) GetPageBuild(ctx context.Context, owner, repo stri | |||
| 
 | ||||
| // RequestPageBuild requests a build of a GitHub Pages site without needing to push new commit.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/pages/#request-a-github-pages-build
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#request-a-github-pages-build
 | ||||
| func (s *RepositoriesService) RequestPageBuild(ctx context.Context, owner, repo string) (*PagesBuild, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/pages/builds", owner, repo) | ||||
| 	req, err := s.client.NewRequest("POST", u, nil) | ||||
|  | @ -21,7 +21,7 @@ type ProjectListOptions struct { | |||
| 
 | ||||
| // ListProjects lists the projects for a repo.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/#list-repository-projects
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#list-repository-projects
 | ||||
| func (s *RepositoriesService) ListProjects(ctx context.Context, owner, repo string, opts *ProjectListOptions) ([]*Project, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/projects", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -48,7 +48,7 @@ func (s *RepositoriesService) ListProjects(ctx context.Context, owner, repo stri | |||
| 
 | ||||
| // CreateProject creates a GitHub Project for the specified repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/projects/#create-a-repository-project
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/projects/#create-a-repository-project
 | ||||
| func (s *RepositoriesService) CreateProject(ctx context.Context, owner, repo string, opts *ProjectOptions) (*Project, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/projects", owner, repo) | ||||
| 	req, err := s.client.NewRequest("POST", u, opts) | ||||
|  | @ -19,12 +19,13 @@ import ( | |||
| 
 | ||||
| // RepositoryRelease represents a GitHub release in a repository.
 | ||||
| type RepositoryRelease struct { | ||||
| 	TagName         *string `json:"tag_name,omitempty"` | ||||
| 	TargetCommitish *string `json:"target_commitish,omitempty"` | ||||
| 	Name            *string `json:"name,omitempty"` | ||||
| 	Body            *string `json:"body,omitempty"` | ||||
| 	Draft           *bool   `json:"draft,omitempty"` | ||||
| 	Prerelease      *bool   `json:"prerelease,omitempty"` | ||||
| 	TagName                *string `json:"tag_name,omitempty"` | ||||
| 	TargetCommitish        *string `json:"target_commitish,omitempty"` | ||||
| 	Name                   *string `json:"name,omitempty"` | ||||
| 	Body                   *string `json:"body,omitempty"` | ||||
| 	Draft                  *bool   `json:"draft,omitempty"` | ||||
| 	Prerelease             *bool   `json:"prerelease,omitempty"` | ||||
| 	DiscussionCategoryName *string `json:"discussion_category_name,omitempty"` | ||||
| 
 | ||||
| 	// The following fields are not used in CreateRelease or EditRelease:
 | ||||
| 	ID          *int64          `json:"id,omitempty"` | ||||
|  | @ -68,7 +69,7 @@ func (r ReleaseAsset) String() string { | |||
| 
 | ||||
| // ListReleases lists the releases for a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/releases/#list-releases
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-releases
 | ||||
| func (s *RepositoriesService) ListReleases(ctx context.Context, owner, repo string, opts *ListOptions) ([]*RepositoryRelease, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/releases", owner, repo) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -91,7 +92,7 @@ func (s *RepositoriesService) ListReleases(ctx context.Context, owner, repo stri | |||
| 
 | ||||
| // GetRelease fetches a single release.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/releases/#get-a-release
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-release
 | ||||
| func (s *RepositoriesService) GetRelease(ctx context.Context, owner, repo string, id int64) (*RepositoryRelease, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/releases/%d", owner, repo, id) | ||||
| 	return s.getSingleRelease(ctx, u) | ||||
|  | @ -99,7 +100,7 @@ func (s *RepositoriesService) GetRelease(ctx context.Context, owner, repo string | |||
| 
 | ||||
| // GetLatestRelease fetches the latest published release for the repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/releases/#get-the-latest-release
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-the-latest-release
 | ||||
| func (s *RepositoriesService) GetLatestRelease(ctx context.Context, owner, repo string) (*RepositoryRelease, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/releases/latest", owner, repo) | ||||
| 	return s.getSingleRelease(ctx, u) | ||||
|  | @ -107,7 +108,7 @@ func (s *RepositoriesService) GetLatestRelease(ctx context.Context, owner, repo | |||
| 
 | ||||
| // GetReleaseByTag fetches a release with the specified tag.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/releases/#get-a-release-by-tag-name
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-release-by-tag-name
 | ||||
| func (s *RepositoriesService) GetReleaseByTag(ctx context.Context, owner, repo, tag string) (*RepositoryRelease, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/releases/tags/%s", owner, repo, tag) | ||||
| 	return s.getSingleRelease(ctx, u) | ||||
|  | @ -134,12 +135,13 @@ func (s *RepositoriesService) getSingleRelease(ctx context.Context, url string) | |||
| // See https://github.com/google/go-github/issues/992 for more
 | ||||
| // information.
 | ||||
| type repositoryReleaseRequest struct { | ||||
| 	TagName         *string `json:"tag_name,omitempty"` | ||||
| 	TargetCommitish *string `json:"target_commitish,omitempty"` | ||||
| 	Name            *string `json:"name,omitempty"` | ||||
| 	Body            *string `json:"body,omitempty"` | ||||
| 	Draft           *bool   `json:"draft,omitempty"` | ||||
| 	Prerelease      *bool   `json:"prerelease,omitempty"` | ||||
| 	TagName                *string `json:"tag_name,omitempty"` | ||||
| 	TargetCommitish        *string `json:"target_commitish,omitempty"` | ||||
| 	Name                   *string `json:"name,omitempty"` | ||||
| 	Body                   *string `json:"body,omitempty"` | ||||
| 	Draft                  *bool   `json:"draft,omitempty"` | ||||
| 	Prerelease             *bool   `json:"prerelease,omitempty"` | ||||
| 	DiscussionCategoryName *string `json:"discussion_category_name,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // CreateRelease adds a new release for a repository.
 | ||||
|  | @ -147,17 +149,18 @@ type repositoryReleaseRequest struct { | |||
| // Note that only a subset of the release fields are used.
 | ||||
| // See RepositoryRelease for more information.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/releases/#create-a-release
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#create-a-release
 | ||||
| func (s *RepositoriesService) CreateRelease(ctx context.Context, owner, repo string, release *RepositoryRelease) (*RepositoryRelease, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/releases", owner, repo) | ||||
| 
 | ||||
| 	releaseReq := &repositoryReleaseRequest{ | ||||
| 		TagName:         release.TagName, | ||||
| 		TargetCommitish: release.TargetCommitish, | ||||
| 		Name:            release.Name, | ||||
| 		Body:            release.Body, | ||||
| 		Draft:           release.Draft, | ||||
| 		Prerelease:      release.Prerelease, | ||||
| 		TagName:                release.TagName, | ||||
| 		TargetCommitish:        release.TargetCommitish, | ||||
| 		Name:                   release.Name, | ||||
| 		Body:                   release.Body, | ||||
| 		Draft:                  release.Draft, | ||||
| 		Prerelease:             release.Prerelease, | ||||
| 		DiscussionCategoryName: release.DiscussionCategoryName, | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("POST", u, releaseReq) | ||||
|  | @ -178,17 +181,18 @@ func (s *RepositoriesService) CreateRelease(ctx context.Context, owner, repo str | |||
| // Note that only a subset of the release fields are used.
 | ||||
| // See RepositoryRelease for more information.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/releases/#update-a-release
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#update-a-release
 | ||||
| func (s *RepositoriesService) EditRelease(ctx context.Context, owner, repo string, id int64, release *RepositoryRelease) (*RepositoryRelease, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/releases/%d", owner, repo, id) | ||||
| 
 | ||||
| 	releaseReq := &repositoryReleaseRequest{ | ||||
| 		TagName:         release.TagName, | ||||
| 		TargetCommitish: release.TargetCommitish, | ||||
| 		Name:            release.Name, | ||||
| 		Body:            release.Body, | ||||
| 		Draft:           release.Draft, | ||||
| 		Prerelease:      release.Prerelease, | ||||
| 		TagName:                release.TagName, | ||||
| 		TargetCommitish:        release.TargetCommitish, | ||||
| 		Name:                   release.Name, | ||||
| 		Body:                   release.Body, | ||||
| 		Draft:                  release.Draft, | ||||
| 		Prerelease:             release.Prerelease, | ||||
| 		DiscussionCategoryName: release.DiscussionCategoryName, | ||||
| 	} | ||||
| 
 | ||||
| 	req, err := s.client.NewRequest("PATCH", u, releaseReq) | ||||
|  | @ -206,7 +210,7 @@ func (s *RepositoriesService) EditRelease(ctx context.Context, owner, repo strin | |||
| 
 | ||||
| // DeleteRelease delete a single release from a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/releases/#delete-a-release
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-a-release
 | ||||
| func (s *RepositoriesService) DeleteRelease(ctx context.Context, owner, repo string, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/releases/%d", owner, repo, id) | ||||
| 
 | ||||
|  | @ -219,7 +223,7 @@ func (s *RepositoriesService) DeleteRelease(ctx context.Context, owner, repo str | |||
| 
 | ||||
| // ListReleaseAssets lists the release's assets.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/releases/#list-release-assets
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#list-release-assets
 | ||||
| func (s *RepositoriesService) ListReleaseAssets(ctx context.Context, owner, repo string, id int64, opts *ListOptions) ([]*ReleaseAsset, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/releases/%d/assets", owner, repo, id) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -242,7 +246,7 @@ func (s *RepositoriesService) ListReleaseAssets(ctx context.Context, owner, repo | |||
| 
 | ||||
| // GetReleaseAsset fetches a single release asset.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/releases/#get-a-release-asset
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-release-asset
 | ||||
| func (s *RepositoriesService) GetReleaseAsset(ctx context.Context, owner, repo string, id int64) (*ReleaseAsset, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/releases/assets/%d", owner, repo, id) | ||||
| 
 | ||||
|  | @ -271,7 +275,7 @@ func (s *RepositoriesService) GetReleaseAsset(ctx context.Context, owner, repo s | |||
| // exist, but it's possible to pass any http.Client. If nil is passed the
 | ||||
| // redirectURL will be returned instead.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/releases/#get-a-release-asset
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-a-release-asset
 | ||||
| func (s *RepositoriesService) DownloadReleaseAsset(ctx context.Context, owner, repo string, id int64, followRedirectsClient *http.Client) (rc io.ReadCloser, redirectURL string, err error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/releases/assets/%d", owner, repo, id) | ||||
| 
 | ||||
|  | @ -333,7 +337,7 @@ func (s *RepositoriesService) downloadReleaseAssetFromURL(ctx context.Context, f | |||
| 
 | ||||
| // EditReleaseAsset edits a repository release asset.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/releases/#update-a-release-asset
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#update-a-release-asset
 | ||||
| func (s *RepositoriesService) EditReleaseAsset(ctx context.Context, owner, repo string, id int64, release *ReleaseAsset) (*ReleaseAsset, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/releases/assets/%d", owner, repo, id) | ||||
| 
 | ||||
|  | @ -352,7 +356,7 @@ func (s *RepositoriesService) EditReleaseAsset(ctx context.Context, owner, repo | |||
| 
 | ||||
| // DeleteReleaseAsset delete a single release asset from a repository.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/releases/#delete-a-release-asset
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#delete-a-release-asset
 | ||||
| func (s *RepositoriesService) DeleteReleaseAsset(ctx context.Context, owner, repo string, id int64) (*Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/releases/assets/%d", owner, repo, id) | ||||
| 
 | ||||
|  | @ -366,7 +370,7 @@ func (s *RepositoriesService) DeleteReleaseAsset(ctx context.Context, owner, rep | |||
| // UploadReleaseAsset creates an asset by uploading a file into a release repository.
 | ||||
| // To upload assets that cannot be represented by an os.File, call NewUploadRequest directly.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/releases/#upload-a-release-asset
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#upload-a-release-asset
 | ||||
| func (s *RepositoriesService) UploadReleaseAsset(ctx context.Context, owner, repo string, id int64, opts *UploadOptions, file *os.File) (*ReleaseAsset, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%s/%s/releases/%d/assets", owner, repo, id) | ||||
| 	u, err := addOptions(u, opts) | ||||
|  | @ -45,7 +45,7 @@ func (w WeeklyStats) String() string { | |||
| // it is now computing the requested statistics. A follow up request, after a
 | ||||
| // delay of a second or so, should result in a successful request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/statistics/#get-all-contributor-commit-activity
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-all-contributor-commit-activity
 | ||||
| func (s *RepositoriesService) ListContributorsStats(ctx context.Context, owner, repo string) ([]*ContributorStats, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/stats/contributors", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -84,7 +84,7 @@ func (w WeeklyCommitActivity) String() string { | |||
| // it is now computing the requested statistics. A follow up request, after a
 | ||||
| // delay of a second or so, should result in a successful request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/statistics/#get-the-last-year-of-commit-activity
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-the-last-year-of-commit-activity
 | ||||
| func (s *RepositoriesService) ListCommitActivity(ctx context.Context, owner, repo string) ([]*WeeklyCommitActivity, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/stats/commit_activity", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -111,7 +111,7 @@ func (s *RepositoriesService) ListCommitActivity(ctx context.Context, owner, rep | |||
| // it is now computing the requested statistics. A follow up request, after a
 | ||||
| // delay of a second or so, should result in a successful request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/statistics/#get-the-weekly-commit-activity
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-the-weekly-commit-activity
 | ||||
| func (s *RepositoriesService) ListCodeFrequency(ctx context.Context, owner, repo string) ([]*WeeklyStats, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/stats/code_frequency", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -164,7 +164,7 @@ func (r RepositoryParticipation) String() string { | |||
| // it is now computing the requested statistics. A follow up request, after a
 | ||||
| // delay of a second or so, should result in a successful request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/statistics/#get-the-weekly-commit-count
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-the-weekly-commit-count
 | ||||
| func (s *RepositoriesService) ListParticipation(ctx context.Context, owner, repo string) (*RepositoryParticipation, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/stats/participation", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
|  | @ -197,7 +197,7 @@ type PunchCard struct { | |||
| // it is now computing the requested statistics. A follow up request, after a
 | ||||
| // delay of a second or so, should result in a successful request.
 | ||||
| //
 | ||||
| // GitHub API docs: https://developer.github.com/v3/repos/statistics/#get-the-hourly-commit-count-for-each-day
 | ||||
| // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/repos/#get-the-hourly-commit-count-for-each-day
 | ||||
| func (s *RepositoriesService) ListPunchCard(ctx context.Context, owner, repo string) ([]*PunchCard, *Response, error) { | ||||
| 	u := fmt.Sprintf("repos/%v/%v/stats/punch_card", owner, repo) | ||||
| 	req, err := s.client.NewRequest("GET", u, nil) | ||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue