Documentation ¶
Index ¶
- Constants
- Variables
- func PayloadSignature(payload []byte, key []byte) string
- func ValidatePayload(payload []byte, sig string, key []byte) bool
- type Client
- func (c *Client) AddLabel(org, repo string, number int, label string) error
- func (c *Client) AddRepoLabel(org, repo, label, color string) error
- func (c *Client) AssignIssue(org, repo string, number int, logins []string) error
- func (c *Client) BotName() (string, error)
- func (c *Client) CloseIssue(org, repo string, number int) error
- func (c *Client) ClosePR(org, repo string, number int) error
- func (c *Client) CreateComment(org, repo string, number int, comment string) error
- func (c *Client) CreateCommentReaction(org, repo string, ID int, reaction string) error
- func (c *Client) CreateIssueReaction(org, repo string, ID int, reaction string) error
- func (c *Client) CreateReview(org, repo string, number int, r DraftReview) error
- func (c *Client) CreateStatus(org, repo, ref string, s Status) error
- func (c *Client) DeleteComment(org, repo string, ID int) error
- func (c *Client) DeleteStaleComments(org, repo string, number int, comments []IssueComment, ...) error
- func (c *Client) EditComment(org, repo string, ID int, comment string) error
- func (c *Client) FindIssues(query, sort string, asc bool) ([]Issue, error)
- func (c *Client) GetCombinedStatus(org, repo, ref string) (*CombinedStatus, error)
- func (c *Client) GetFile(org, repo, filepath, commit string) ([]byte, error)
- func (c *Client) GetIssueLabels(org, repo string, number int) ([]Label, error)
- func (c *Client) GetPullRequest(org, repo string, number int) (*PullRequest, error)
- func (c *Client) GetPullRequestChanges(org, repo string, number int) ([]PullRequestChange, error)
- func (c *Client) GetRef(org, repo, ref string) (string, error)
- func (c *Client) GetRepoLabels(org, repo string) ([]Label, error)
- func (c *Client) GetRepos(org string, isUser bool) ([]Repo, error)
- func (c *Client) IsMember(org, user string) (bool, error)
- func (c *Client) ListIssueComments(org, repo string, number int) ([]IssueComment, error)
- func (c *Client) ListPullRequestComments(org, repo string, number int) ([]ReviewComment, error)
- func (c *Client) ListTeamMembers(id int) ([]TeamMember, error)
- func (c *Client) ListTeams(org string) ([]Team, error)
- func (c *Client) Merge(org, repo string, pr int, details MergeDetails) error
- func (c *Client) Query(ctx context.Context, q interface{}, vars map[string]interface{}) error
- func (c *Client) RemoveLabel(org, repo string, number int, label string) error
- func (c *Client) ReopenIssue(org, repo string, number int) error
- func (c *Client) ReopenPR(org, repo string, number int) error
- func (c *Client) RequestReview(org, repo string, number int, logins []string) error
- func (c *Client) UnassignIssue(org, repo string, number int, logins []string) error
- func (c *Client) UnrequestReview(org, repo string, number int, logins []string) error
- func (c *Client) UpdateRepoLabel(org, repo, label, color string) error
- type CombinedStatus
- type Commit
- type Content
- type DraftReview
- type DraftReviewComment
- type ExtraUsers
- type FileNotFound
- type GenericCommentEvent
- type GenericCommentEventAction
- type Issue
- type IssueComment
- type IssueCommentEvent
- type IssueCommentEventAction
- type IssueEvent
- type IssueEventAction
- type IssuesSearchResult
- type Label
- type Logger
- type MergeDetails
- type MissingUsers
- type ModifiedHeadError
- type PullRequest
- type PullRequestBranch
- type PullRequestChange
- type PullRequestEvent
- type PullRequestEventAction
- type PullRequestFileStatus
- type PushEvent
- type Reaction
- type Repo
- type Review
- type ReviewAction
- type ReviewComment
- type ReviewCommentEvent
- type ReviewCommentEventAction
- type ReviewEvent
- type ReviewEventAction
- type Status
- type StatusEvent
- type Team
- type TeamMember
- type UnmergablePRError
- type User
Constants ¶
const ( StatusPending = "pending" StatusSuccess = "success" StatusError = "error" StatusFailure = "failure" )
These are possible State entries for a Status.
const ( ReactionThumbsUp = "+1" ReactionThumbsDown = "-1" ReactionLaugh = "laugh" ReactionConfused = "confused" ReactionHeart = "heart" ReactionHooray = "hooray" )
Possible contents for reactions.
const ( PullRequestActionAssigned PullRequestEventAction = "assigned" PullRequestActionUnassigned = "unassigned" PullRequestActionReviewRequested = "review_requested" PullRequestActionReviewRequestRemoved = "review_request_removed" PullRequestActionLabeled = "labeled" PullRequestActionUnlabeled = "unlabeled" PullRequestActionOpened = "opened" PullRequestActionEdited = "edited" PullRequestActionClosed = "closed" PullRequestActionReopened = "reopened" PullRequestActionSynchronize = "synchronize" )
const ( PullRequestFileModified PullRequestFileStatus = "modified" PullRequestFileAdded = "added" PullRequestFileRemoved = "removed" PullRequestFileRenamed = "renamed" )
const ( IssueActionAssigned IssueEventAction = "assigned" IssueActionUnassigned = "unassigned" IssueActionLabeled = "labeled" IssueActionUnlabeled = "unlabeled" IssueActionOpened = "opened" IssueActionEdited = "edited" IssueActionMilestoned = "milestoned" IssueActionDemilestoned = "demilestoned" IssueActionClosed = "closed" IssueActionReopened = "reopened" )
const ( IssueCommentActionCreated IssueCommentEventAction = "created" IssueCommentActionEdited = "edited" IssueCommentActionDeleted = "deleted" )
const ( ReviewActionSubmitted ReviewEventAction = "submitted" ReviewActionEdited = "edited" ReviewActionDismissed = "dismissed" )
const ( ReviewCommentActionCreated ReviewCommentEventAction = "created" ReviewCommentActionEdited = "edited" ReviewCommentActionDeleted = "deleted" )
const ( Approve ReviewAction = "APPROVE" RequestChanges = "REQUEST_CHANGES" Comment = "COMMENT" )
Possible review actions. Leave Action blank for a pending review.
const ( GenericCommentActionCreated GenericCommentEventAction = "created" // "opened", "submitted" GenericCommentActionEdited = "edited" GenericCommentActionDeleted = "deleted" // "dismissed" )
Comments indicate values that are coerced to the specified value.
Variables ¶
var NormLogin = strings.ToLower
NormLogin normalizes GitHub login strings
Functions ¶
func PayloadSignature ¶
PayloadSignature returns the signature that matches the payload.
Types ¶
type Client ¶
type Client struct { // If Logger is non-nil, log all method calls with it. Logger Logger // contains filtered or unexported fields }
func NewDryRunClient ¶
NewDryRunClient creates a new client that will not perform mutating actions such as setting statuses or commenting, but it will still query GitHub and use up API tokens.
func NewFakeClient ¶
func NewFakeClient() *Client
NewFakeClient creates a new client that will not perform any actions at all.
func (*Client) AddRepoLabel ¶
Adds Label label/color to given org/repo
func (*Client) AssignIssue ¶
func (*Client) CloseIssue ¶
CloseIssue closes the existing, open issue provided
func (*Client) CreateComment ¶
CreateComment creates a comment on the issue.
func (*Client) CreateCommentReaction ¶
func (*Client) CreateIssueReaction ¶
func (*Client) CreateReview ¶
func (c *Client) CreateReview(org, repo string, number int, r DraftReview) error
CreateReview creates a review using the draft.
func (*Client) CreateStatus ¶
CreateStatus creates or updates the status of a commit.
func (*Client) DeleteComment ¶
DeleteComment deletes the comment.
func (*Client) DeleteStaleComments ¶
func (c *Client) DeleteStaleComments(org, repo string, number int, comments []IssueComment, isStale func(IssueComment) bool) error
DeleteStaleComments iterates over comments on an issue/PR, deleting those which the 'isStale' function identifies as stale. If 'comments' is nil, the comments will be fetched from github.
func (*Client) EditComment ¶
func (*Client) FindIssues ¶
FindIssues uses the github search API to find issues which match a particular query.
Input query the same way you would into the website. Order returned results with sort (usually "updated"). Control whether oldest/newest is first with asc.
See https://help.github.com/articles/searching-issues-and-pull-requests/ for details.
func (*Client) GetCombinedStatus ¶
func (c *Client) GetCombinedStatus(org, repo, ref string) (*CombinedStatus, error)
GetCombinedStatus returns the latest statuses for a given ref.
func (*Client) GetFile ¶
GetFile uses github repo contents API to retrieve the content of a file with commit sha. If commit is empty, it will grab content from repo's default branch, usually master. TODO(krzyzacy): Support retrieve a directory
func (*Client) GetIssueLabels ¶
func (*Client) GetPullRequest ¶
func (c *Client) GetPullRequest(org, repo string, number int) (*PullRequest, error)
GetPullRequest gets a pull request.
func (*Client) GetPullRequestChanges ¶
func (c *Client) GetPullRequestChanges(org, repo string, number int) ([]PullRequestChange, error)
GetPullRequestChanges gets a list of files modified in a pull request.
func (*Client) ListIssueComments ¶
func (c *Client) ListIssueComments(org, repo string, number int) ([]IssueComment, error)
ListIssueComments returns all comments on an issue. This may use more than one API token.
func (*Client) ListPullRequestComments ¶
func (c *Client) ListPullRequestComments(org, repo string, number int) ([]ReviewComment, error)
ListPullRequestComments returns all comments on a pull request. This may use more than one API token.
func (*Client) ListTeamMembers ¶
func (c *Client) ListTeamMembers(id int) ([]TeamMember, error)
ListTeamMembers gets a list of team members for the given team id
func (*Client) Merge ¶
func (c *Client) Merge(org, repo string, pr int, details MergeDetails) error
Merge merges a PR.
func (*Client) RemoveLabel ¶
func (*Client) ReopenIssue ¶
ReopenIssue re-opens the existing, closed issue provided
func (*Client) RequestReview ¶
RequestReview tries to add the users listed in 'logins' as requested reviewers of the specified PR. If any user in the 'logins' slice is not a contributor of the repo, the entire POST will fail without adding any reviewers. The github API response does not specify which user(s) were invalid so if we fail to request reviews from the members of 'logins' we try to request reviews from each member individually. We try first with all users in 'logins' for efficiency in the common case.
func (*Client) UnassignIssue ¶
func (*Client) UnrequestReview ¶
UnrequestReview tries to remove the users listed in 'logins' from the requested reviewers of the specified PR. The github API treats deletions of review requests differently than creations. Specifically, if 'logins' contains a user that isn't a requested reviewer, other users that are valid are still removed. Furthermore, the API response lists the set of requested reviewers after the deletion (unlike request creations), so we can determine if each deletion was successful. The API responds with http status code 200 no matter what the content of 'logins' is.
func (*Client) UpdateRepoLabel ¶
Updates org/repo label to label/color
type CombinedStatus ¶
type CombinedStatus struct {
Statuses []Status `json:"statuses"`
}
CombinedStatus is the latest statuses for a ref.
type DraftReview ¶
type DraftReview struct { // If unspecified, defaults to the most recent commit in the PR. CommitSHA string `json:"commit_id,omitempty"` Body string `json:"body"` // If unspecified, defaults to PENDING. Action ReviewAction `json:"event,omitempty"` Comments []DraftReviewComment `json:"comments,omitempty"` }
DraftReview is what we give GitHub when we want to make a PR Review. This is different than what we receive when we ask for a Review.
type DraftReviewComment ¶
type DraftReviewComment struct { Path string `json:"path"` // Position in the patch, not the line number in the file. Position int `json:"position"` Body string `json:"body"` }
DraftReviewComment is a comment in a draft review.
type ExtraUsers ¶
type ExtraUsers struct { Users []string // contains filtered or unexported fields }
func (ExtraUsers) Error ¶
func (e ExtraUsers) Error() string
type FileNotFound ¶
type FileNotFound struct {
// contains filtered or unexported fields
}
func (*FileNotFound) Error ¶
func (e *FileNotFound) Error() string
type GenericCommentEvent ¶
type GenericCommentEventAction ¶
type GenericCommentEventAction string
type Issue ¶
type Issue struct { User User `json:"user"` Number int `json:"number"` Title string `json:"title"` State string `json:"state"` HTMLURL string `json:"html_url"` Labels []Label `json:"labels"` Assignees []User `json:"assignees"` Body string `json:"body"` // This will be non-nil if it is a pull request. PullRequest *struct{} `json:"pull_request,omitempty"` }
func (Issue) IsAssignee ¶
func (Issue) IsPullRequest ¶
type IssueComment ¶
type IssueCommentEvent ¶
type IssueCommentEvent struct { Action IssueCommentEventAction `json:"action"` Issue Issue `json:"issue"` Comment IssueComment `json:"comment"` Repo Repo `json:"repository"` }
type IssueCommentEventAction ¶
type IssueCommentEventAction string
IssueCommentEventAction enumerates the triggers for this webhook payload type. See also: https://developer.github.com/v3/activity/events/types/#issuecommentevent
type IssueEvent ¶
type IssueEvent struct { Action IssueEventAction `json:"action"` Issue Issue `json:"issue"` Repo Repo `json:"repository"` }
type IssueEventAction ¶
type IssueEventAction string
IssueEventAction enumerates the triggers for this webhook payload type. See also: https://developer.github.com/v3/activity/events/types/#issuesevent
type IssuesSearchResult ¶
type IssuesSearchResult struct { Total int `json:"total_count,omitempty"` Issues []Issue `json:"items,omitempty"` }
IssuesSearchResult represents the result of an issues search.
type MergeDetails ¶
type MergeDetails struct { // CommitTitle defaults to the automatic message. CommitTitle string `json:"commit_title,omitempty"` // CommitMessage defaults to the automatic message. CommitMessage string `json:"commit_message,omitempty"` // The PR HEAD must match this to prevent races. SHA string `json:"sha,omitempty"` // Can be "merge", "squash", or "rebase". Defaults to merge. MergeMethod string `json:"merge_method,omitempty"` }
MergeDetails contains desired properties of the merge. See https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button
type MissingUsers ¶
type MissingUsers struct { Users []string // contains filtered or unexported fields }
func (MissingUsers) Error ¶
func (m MissingUsers) Error() string
type ModifiedHeadError ¶
type ModifiedHeadError string
func (ModifiedHeadError) Error ¶
func (e ModifiedHeadError) Error() string
type PullRequest ¶
type PullRequest struct { Number int `json:"number"` HTMLURL string `json:"html_url"` User User `json:"user"` Base PullRequestBranch `json:"base"` Head PullRequestBranch `json:"head"` Title string `json:"title"` Body string `json:"body"` RequestedReviewers []User `json:"requested_reviewers"` Assignees []User `json:"assignees"` State string `json:"state"` Merged bool `json:"merged"` // ref https://developer.github.com/v3/pulls/#get-a-single-pull-request // If Merged is true, MergeSHA is the SHA of the merge commit, or squashed commit // If Merged is false, MergeSHA is a commit SHA that github created to test if // the PR can be merged automatically. MergeSHA *string `json:"merge_commit_sha"` }
PullRequest contains information about a PullRequest.
type PullRequestBranch ¶
type PullRequestBranch struct { Ref string `json:"ref"` SHA string `json:"sha"` Repo Repo `json:"repo"` }
PullRequestBranch contains information about a particular branch in a PR.
type PullRequestChange ¶
type PullRequestChange struct { SHA string `json:"sha"` Filename string `json:"filename"` Status string `json:"status"` Additions int `json:"additions"` Deletions int `json:"deletions"` Changes int `json:"changes"` Patch string `json:"patch"` }
PullRequestChange contains information about what a PR changed.
type PullRequestEvent ¶
type PullRequestEvent struct { Action PullRequestEventAction `json:"action"` Number int `json:"number"` PullRequest PullRequest `json:"pull_request"` Repo Repo `json:"repository"` Label Label `json:"label"` }
PullRequestEvent is what GitHub sends us when a PR is changed.
type PullRequestEventAction ¶
type PullRequestEventAction string
PullRequestEventAction enumerates the triggers for this webhook payload type. See also: https://developer.github.com/v3/activity/events/types/#pullrequestevent
type PullRequestFileStatus ¶
type PullRequestFileStatus string
PullRequestFileStatus enumerates the statuses for this webhook payload type.
type PushEvent ¶
type PushEvent struct { Ref string `json:"ref"` Before string `json:"before"` After string `json:"after"` Compare string `json:"compare"` Commits []Commit `json:"commits"` // Pusher is the user that pushed the commit, valid in a webhook event. Pusher User `json:"pusher"` // Sender contains more information that Pusher about the user. Sender User `json:"sender"` Repo Repo `json:"repository"` }
type Repo ¶
type Repo struct { Owner User `json:"owner"` Name string `json:"name"` FullName string `json:"full_name"` HTMLURL string `json:"html_url"` }
Repo contains general repository information.
type Review ¶
type Review struct { ID int `json:"id"` User User `json:"user"` Body string `json:"body"` State string `json:"state"` HTMLURL string `json:"html_url"` }
Review describes a Pull Request review.
type ReviewAction ¶
type ReviewAction string
ReviewAction is the action that a review can be made with.
type ReviewComment ¶
type ReviewComment struct { ID int `json:"id"` ReviewID int `json:"pull_request_review_id"` User User `json:"user"` Body string `json:"body"` Path string `json:"path"` HTMLURL string `json:"html_url"` // Position will be nil if the code has changed such that the comment is no // longer relevant. Position *int `json:"position"` }
ReviewComment describes a Pull Request review.
type ReviewCommentEvent ¶
type ReviewCommentEvent struct { Action ReviewCommentEventAction `json:"action"` PullRequest PullRequest `json:"pull_request"` Repo Repo `json:"repository"` Comment ReviewComment `json:"comment"` }
ReviewCommentEvent is what GitHub sends us when a PR review comment is changed.
type ReviewCommentEventAction ¶
type ReviewCommentEventAction string
ReviewCommentEventAction enumerates the triggers for this webhook payload type. See also: https://developer.github.com/v3/activity/events/types/#pullrequestreviewcommentevent
type ReviewEvent ¶
type ReviewEvent struct { Action ReviewEventAction `json:"action"` PullRequest PullRequest `json:"pull_request"` Repo Repo `json:"repository"` Review Review `json:"review"` }
ReviewEvent is what GitHub sends us when a PR review is changed.
type ReviewEventAction ¶
type ReviewEventAction string
ReviewEventAction enumerates the triggers for this webhook payload type. See also: https://developer.github.com/v3/activity/events/types/#pullrequestreviewevent
type Status ¶
type Status struct { State string `json:"state"` TargetURL string `json:"target_url,omitempty"` Description string `json:"description,omitempty"` Context string `json:"context,omitempty"` }
Status is used to set a commit status line.
type StatusEvent ¶
type StatusEvent struct { SHA string `json:"sha,omitempty"` State string `json:"state,omitempty"` Description string `json:"description,omitempty"` TargetURL string `json:"target_url,omitempty"` ID int `json:"id,omitempty"` Name string `json:"name,omitempty"` Context string `json:"context,omitempty"` Sender User `json:"sender,omitempty"` Repo Repo `json:"repository,omitempty"` }
type TeamMember ¶
type TeamMember struct {
Login string `json:"login"`
}
TeamMember is a member of an organizational team
type UnmergablePRError ¶
type UnmergablePRError string
func (UnmergablePRError) Error ¶
func (e UnmergablePRError) Error() string