Documentation ¶
Index ¶
- Constants
- Variables
- func HasLabel(label string, issueLabels []Label) bool
- func ImageTooBig(url string) (bool, error)
- func PayloadSignature(payload []byte, key []byte) string
- func ValidatePayload(payload []byte, sig string, key []byte) bool
- func ValidateWebhook(w http.ResponseWriter, r *http.Request, hmacSecret []byte) (string, string, []byte, bool, int)
- type AlternativeClientError
- type Branch
- type BranchProtectionRequest
- type Client
- func (c *Client) AddLabel(org, repo string, number int, label string) error
- func (c *Client) AddRepoLabel(org, repo, label, description, color string) error
- func (c *Client) AssignIssue(org, repo string, number int, logins []string) error
- func (c *Client) BotName() (string, error)
- func (c *Client) ClearMilestone(org, repo string, num int) 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) CreateFork(owner, repo string) error
- func (c *Client) CreateIssueReaction(org, repo string, id int, reaction string) error
- func (c *Client) CreatePullRequest(org, repo, title, body, head, base string, canModify bool) (int, error)
- func (c *Client) CreateReview(org, repo string, number int, r DraftReview) error
- func (c *Client) CreateStatus(org, repo, SHA string, s Status) error
- func (c *Client) CreateTeam(org string, team Team) (*Team, error)
- func (c *Client) DeleteComment(org, repo string, id int) error
- func (c *Client) DeleteRepoLabel(org, repo, label string) error
- func (c *Client) DeleteStaleComments(org, repo string, number int, comments []IssueComment, ...) error
- func (c *Client) DeleteTeam(id int) error
- func (c *Client) EditComment(org, repo string, id int, comment string) error
- func (c *Client) EditOrg(name string, config Organization) (*Organization, error)
- func (c *Client) EditTeam(t Team) (*Team, error)
- func (c *Client) Email() (string, error)
- func (c *Client) FindIssues(query, sort string, asc bool) ([]Issue, error)
- func (c *Client) GetBranches(org, repo string, onlyProtected bool) ([]Branch, 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) GetOrg(name string) (*Organization, 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) GetPullRequestPatch(org, repo string, number int) ([]byte, error)
- func (c *Client) GetPullRequests(org, repo string) ([]PullRequest, error)
- func (c *Client) GetRef(org, repo, ref string) (string, error)
- func (c *Client) GetRepo(owner, name string) (Repo, error)
- func (c *Client) GetRepoLabels(org, repo string) ([]Label, error)
- func (c *Client) GetRepos(org string, isUser bool) ([]Repo, error)
- func (c *Client) GetSingleCommit(org, repo, SHA string) (SingleCommit, error)
- func (c *Client) GetUserPermission(org, repo, user string) (string, error)
- func (c *Client) HasPermission(org, repo, user string, roles ...string) (bool, error)
- func (c *Client) IsCollaborator(org, repo, user string) (bool, error)
- func (c *Client) IsMember(org, user string) (bool, error)
- func (c *Client) IsMergeable(org, repo string, number int, SHA string) (bool, error)
- func (c *Client) ListCollaborators(org, repo string) ([]User, error)
- func (c *Client) ListIssueComments(org, repo string, number int) ([]IssueComment, error)
- func (c *Client) ListIssueEvents(org, repo string, num int) ([]ListedIssueEvent, error)
- func (c *Client) ListMilestones(org, repo string) ([]Milestone, error)
- func (c *Client) ListOrgInvitations(org string) ([]OrgInvitation, error)
- func (c *Client) ListOrgMembers(org, role string) ([]TeamMember, error)
- func (c *Client) ListPullRequestComments(org, repo string, number int) ([]ReviewComment, error)
- func (c *Client) ListReviews(org, repo string, number int) ([]Review, error)
- func (c *Client) ListStatuses(org, repo, ref string) ([]Status, error)
- func (c *Client) ListTeamMembers(id int, role string) ([]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) RemoveBranchProtection(org, repo, branch string) error
- func (c *Client) RemoveLabel(org, repo string, number int, label string) error
- func (c *Client) RemoveOrgMembership(org, user string) error
- func (c *Client) RemoveTeamMembership(id int, user 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) SetMilestone(org, repo string, issueNum, milestoneNum int) error
- func (c *Client) Throttle(hourlyTokens, burst int)
- 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) UpdateBranchProtection(org, repo, branch string, config BranchProtectionRequest) error
- func (c *Client) UpdateOrgMembership(org, user string, admin bool) (*OrgMembership, error)
- func (c *Client) UpdatePullRequest(org, repo string, number int, title, body *string, open *bool, branch *string, ...) error
- func (c *Client) UpdateRepoLabel(org, repo, label, newName, description, color string) error
- func (c *Client) UpdateTeamMembership(id int, user string, maintainer bool) (*TeamMembership, error)
- type ClientError
- 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 LabelNotFound
- type ListedIssueEvent
- type Membership
- type MergeDetails
- type Milestone
- type MissingUsers
- type ModifiedHeadError
- type OrgInvitation
- type OrgMembership
- type Organization
- type PullRequest
- type PullRequestBranch
- type PullRequestChange
- type PullRequestEvent
- type PullRequestEventAction
- type PullRequestFileStatus
- type PullRequestMergeType
- type PushEvent
- type Reaction
- type Repo
- type RequiredPullRequestReviews
- type RequiredStatusChecks
- type Restrictions
- type Review
- type ReviewAction
- type ReviewComment
- type ReviewCommentEvent
- type ReviewCommentEventAction
- type ReviewEvent
- type ReviewEventAction
- type ReviewState
- type SingleCommit
- type StateCannotBeChanged
- type Status
- type StatusEvent
- type Team
- type TeamMember
- type TeamMembership
- type UnauthorizedToPushError
- type UnmergablePRBaseChangedError
- type UnmergablePRError
- type User
Constants ¶
const ( // EventGUID is sent by Github in a header of every webhook request. // Used as a log field across prow. EventGUID = "event-GUID" // PrLogField is the number of a PR. // Used as a log field across prow. PrLogField = "pr" // OrgLogField is the organization of a PR. // Used as a log field across prow. OrgLogField = "org" // RepoLogField is the repository of a PR. // Used as a log field across prow. RepoLogField = "repo" // SearchTimeFormat is a time.Time format string for ISO8601 which is the // format that GitHub requires for times specified as part of a search query. SearchTimeFormat = "2006-01-02T15:04:05Z" )
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 means assignees were added. PullRequestActionAssigned PullRequestEventAction = "assigned" // PullRequestActionUnassigned means assignees were removed. PullRequestActionUnassigned = "unassigned" // PullRequestActionReviewRequested means review requests were added. PullRequestActionReviewRequested = "review_requested" // PullRequestActionReviewRequestRemoved means review requests were removed. PullRequestActionReviewRequestRemoved = "review_request_removed" // PullRequestActionLabeled means labels were added. PullRequestActionLabeled = "labeled" // PullRequestActionUnlabeled means labels were removed PullRequestActionUnlabeled = "unlabeled" // PullRequestActionOpened means the PR was created PullRequestActionOpened = "opened" // PullRequestActionEdited means the PR body changed. PullRequestActionEdited = "edited" // PullRequestActionClosed means the PR was closed (or was merged). PullRequestActionClosed = "closed" // PullRequestActionReopened means the PR was reopened. PullRequestActionReopened = "reopened" // PullRequestActionSynchronize means the git state changed. PullRequestActionSynchronize = "synchronize" )
const ( // PullRequestFileModified means a file changed. PullRequestFileModified PullRequestFileStatus = "modified" // PullRequestFileAdded means a file was added. PullRequestFileAdded = "added" // PullRequestFileRemoved means a file was deleted. PullRequestFileRemoved = "removed" // PullRequestFileRenamed means a file moved. PullRequestFileRenamed = "renamed" )
const ( // IssueActionAssigned means assignees were added. IssueActionAssigned IssueEventAction = "assigned" // IssueActionUnassigned means assignees were added. IssueActionUnassigned = "unassigned" // IssueActionLabeled means labels were added. IssueActionLabeled = "labeled" // IssueActionUnlabeled means labels were removed. IssueActionUnlabeled = "unlabeled" // IssueActionOpened means issue was opened/created. IssueActionOpened = "opened" // IssueActionEdited means issue body was edited. IssueActionEdited = "edited" // IssueActionMilestoned means the milestone was added/changed. IssueActionMilestoned = "milestoned" // IssueActionDemilestoned means a milestone was removed. IssueActionDemilestoned = "demilestoned" // IssueActionClosed means issue was closed. IssueActionClosed = "closed" // IssueActionReopened means issue was reopened. IssueActionReopened = "reopened" )
const ( // IssueCommentActionCreated means the comment was created. IssueCommentActionCreated IssueCommentEventAction = "created" // IssueCommentActionEdited means the comment was edited. IssueCommentActionEdited = "edited" // IssueCommentActionDeleted means the comment was deleted. IssueCommentActionDeleted = "deleted" )
const ( // ReviewActionSubmitted means the review was submitted. ReviewActionSubmitted ReviewEventAction = "submitted" // ReviewActionEdited means the review was edited. ReviewActionEdited = "edited" // ReviewActionDismissed means the review was dismissed. ReviewActionDismissed = "dismissed" )
const ( ReviewStateApproved ReviewState = "APPROVED" ReviewStateChangesRequested = "CHANGES_REQUESTED" ReviewStateCommented = "COMMENTED" ReviewStateDismissed = "DISMISSED" ReviewStatePending = "PENDING" )
Possible review states.
const ( // ReviewCommentActionCreated means the comment was created. ReviewCommentActionCreated ReviewCommentEventAction = "created" // ReviewCommentActionEdited means the comment was edited. ReviewCommentActionEdited = "edited" // ReviewCommentActionDeleted means the comment was deleted. ReviewCommentActionDeleted = "deleted" )
const ( Approve ReviewAction = "APPROVE" RequestChanges = "REQUEST_CHANGES" Comment = "COMMENT" )
Possible review actions. Leave Action blank for a pending review.
const ( // PrivacySecret memberships are only visible to other team members. PrivacySecret = "secret" // PrivacyClosed memberships are visible to org members. PrivacyClosed = "closed" )
const ( // RoleAll lists both members and admins RoleAll = "all" // RoleAdmin specifies the user is an org admin, or lists only admins RoleAdmin = "admin" // RoleMaintainer specifies the user is a team maintainer, or lists only maintainers RoleMaintainer = "maintainer" // RoleMember specifies the user is a regular user, or only lists regular users RoleMember = "member" // StatePending specifies the user has an invitation to the org/team. StatePending = "pending" // StateActive specifies the user's membership is active. StateActive = "active" )
const ( // GenericCommentActionCreated means something was created/opened/submitted GenericCommentActionCreated GenericCommentEventAction = "created" // "opened", "submitted" // GenericCommentActionEdited means something was edited. GenericCommentActionEdited = "edited" // GenericCommentActionDeleted means something was deleted/dismissed. GenericCommentActionDeleted = "deleted" // "dismissed" )
Comments indicate values that are coerced to the specified value.
Variables ¶
var (
// FoundingYear is the year GitHub was founded. This is just used so that
// we can lower bound dates related to PRs and issues.
FoundingYear, _ = time.Parse(SearchTimeFormat, "2007-01-01T00:00:00Z")
)
var NormLogin = strings.ToLower
NormLogin normalizes GitHub login strings
Functions ¶
func ImageTooBig ¶
ImageTooBig checks if image is bigger than github limits
func PayloadSignature ¶
PayloadSignature returns the signature that matches the payload.
func ValidatePayload ¶
ValidatePayload ensures that the request payload signature matches the key.
func ValidateWebhook ¶
func ValidateWebhook(w http.ResponseWriter, r *http.Request, hmacSecret []byte) (string, string, []byte, bool, int)
ValidateWebhook ensures that the provided request conforms to the format of a Github webhook and the payload can be validated with the provided hmac secret. It returns the event type, the event guid, the payload of the request, whether the webhook is valid or not, and finally the resultant HTTP status code
Types ¶
type AlternativeClientError ¶
type AlternativeClientError struct { Message string `json:"message"` Errors []string `json:"errors,omitempty"` DocumentationURL string `json:"documentation_url,omitempty"` }
AlternativeClientError represents an alternative format for https://developer.github.com/v3/#client-errors This is probably a GitHub bug, as documentation_url should appear only in custom errors
func (AlternativeClientError) Error ¶
func (r AlternativeClientError) Error() string
type Branch ¶
type Branch struct { Name string `json:"name"` Protected bool `json:"protected"` // only included for ?protection=true requests }
Branch contains general branch information.
type BranchProtectionRequest ¶
type BranchProtectionRequest struct { RequiredStatusChecks *RequiredStatusChecks `json:"required_status_checks"` EnforceAdmins *bool `json:"enforce_admins"` RequiredPullRequestReviews *RequiredPullRequestReviews `json:"required_pull_request_reviews"` Restrictions *Restrictions `json:"restrictions"` }
BranchProtectionRequest represents protections in place for a branch. See also: https://developer.github.com/v3/repos/branches/#update-branch-protection
func (BranchProtectionRequest) String ¶
func (r BranchProtectionRequest) String() string
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client interacts with the github api.
func NewClient ¶
NewClient creates a new fully operational GitHub client. 'getToken' is a generator for the GitHub access token to use. 'bases' is a variadic slice of endpoints to use in order of preference.
An endpoint is used when all preceding endpoints have returned a conn err. This should be used when using the ghproxy GitHub proxy cache to allow this client to bypass the cache if it is temporarily unavailable.
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. 'getToken' is a generator the GitHub access token to use. 'bases' is a variadic slice of endpoints to use in order of preference.
An endpoint is used when all preceding endpoints have returned a conn err. This should be used when using the ghproxy GitHub proxy cache to allow this client to bypass the cache if it is temporarily unavailable.
func NewFakeClient ¶
func NewFakeClient() *Client
NewFakeClient creates a new client that will not perform any actions at all.
func (*Client) AddLabel ¶
AddLabel adds label to org/repo#number, returning an error on a bad response code.
See https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue
func (*Client) AddRepoLabel ¶
AddRepoLabel adds a defined label given org/repo
See https://developer.github.com/v3/issues/labels/#create-a-label
func (*Client) AssignIssue ¶
AssignIssue adds logins to org/repo#number, returning an error if any login is missing after making the call.
See https://developer.github.com/v3/issues/assignees/#add-assignees-to-an-issue
func (*Client) BotName ¶
BotName returns the login of the authenticated identity.
See https://developer.github.com/v3/users/#get-the-authenticated-user
func (*Client) ClearMilestone ¶
ClearMilestone clears the milestone from the specified issue
func (*Client) CloseIssue ¶
CloseIssue closes the existing, open issue provided
func (*Client) ClosePR ¶
ClosePR closes the existing, open PR provided TODO: Rename to ClosePullRequest
See https://developer.github.com/v3/pulls/#update-a-pull-request
func (*Client) CreateComment ¶
CreateComment creates a comment on the issue.
See https://developer.github.com/v3/issues/comments/#create-a-comment
func (*Client) CreateCommentReaction ¶
CreateCommentReaction responds emotionally to comment id in org/repo.
See https://developer.github.com/v3/reactions/#create-reaction-for-an-issue-comment
func (*Client) CreateFork ¶
CreateFork creates a fork for the authenticated user. Forking a repository happens asynchronously. Therefore, we may have to wait a short period before accessing the git objects. If this takes longer than 5 minutes, Github recommends contacting their support.
See https://developer.github.com/v3/repos/forks/#create-a-fork
func (*Client) CreateIssueReaction ¶
CreateIssueReaction responds emotionally to org/repo#id
See https://developer.github.com/v3/reactions/#create-reaction-for-an-issue
func (*Client) CreatePullRequest ¶
func (c *Client) CreatePullRequest(org, repo, title, body, head, base string, canModify bool) (int, error)
CreatePullRequest creates a new pull request and returns its number if the creation is successful, otherwise any error that is encountered.
See https://developer.github.com/v3/pulls/#create-a-pull-request
func (*Client) CreateReview ¶
func (c *Client) CreateReview(org, repo string, number int, r DraftReview) error
CreateReview creates a review using the draft.
https://developer.github.com/v3/pulls/reviews/#create-a-pull-request-review
func (*Client) CreateStatus ¶
CreateStatus creates or updates the status of a commit.
See https://developer.github.com/v3/repos/statuses/#create-a-status
func (*Client) CreateTeam ¶
CreateTeam adds a team with name to the org, returning a struct with the new ID.
func (*Client) DeleteComment ¶
DeleteComment deletes the comment.
See https://developer.github.com/v3/issues/comments/#delete-a-comment
func (*Client) DeleteRepoLabel ¶
DeleteRepoLabel deletes a label in org/repo
See https://developer.github.com/v3/issues/labels/#delete-a-label
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) DeleteTeam ¶
DeleteTeam removes team.ID from GitHub.
func (*Client) EditComment ¶
EditComment changes the body of comment id in org/repo.
See https://developer.github.com/v3/issues/comments/#edit-a-comment
func (*Client) EditOrg ¶
func (c *Client) EditOrg(name string, config Organization) (*Organization, error)
EditOrg will update the metadata for this org.
func (*Client) Email ¶
Email returns the user-configured email for the authenticated identity.
See https://developer.github.com/v3/users/#get-the-authenticated-user
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) GetBranches ¶
GetBranches returns all branches in the repo.
If onlyProtected is true it will only return repos with protection enabled, and branch.Protected will be true. Otherwise Protected is the default value (false).
This call uses multiple API tokens when results are paginated.
See https://developer.github.com/v3/repos/branches/#list-branches
func (*Client) GetCombinedStatus ¶
func (c *Client) GetCombinedStatus(org, repo, ref string) (*CombinedStatus, error)
GetCombinedStatus returns the latest statuses for a given ref.
See https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-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
See https://developer.github.com/v3/repos/contents/#get-contents
func (*Client) GetIssueLabels ¶
GetIssueLabels returns the list of labels currently on issue org/repo#number.
See https://developer.github.com/v3/issues/labels/#list-labels-on-an-issue
func (*Client) GetOrg ¶
func (c *Client) GetOrg(name string) (*Organization, error)
GetOrg returns current metadata for the org
func (*Client) GetPullRequest ¶
func (c *Client) GetPullRequest(org, repo string, number int) (*PullRequest, error)
GetPullRequest gets a pull request.
See https://developer.github.com/v3/pulls/#get-a-single-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.
See https://developer.github.com/v3/pulls/#list-pull-requests-files
func (*Client) GetPullRequestPatch ¶
GetPullRequestPatch gets the patch version of a pull request.
See https://developer.github.com/v3/media/#commits-commit-comparison-and-pull-requests
func (*Client) GetPullRequests ¶
func (c *Client) GetPullRequests(org, repo string) ([]PullRequest, error)
GetPullRequests get all open pull requests for a repo.
See https://developer.github.com/v3/pulls/#list-pull-requests
func (*Client) GetRef ¶
GetRef returns the SHA of the given ref, such as "heads/master".
See https://developer.github.com/v3/git/refs/#get-a-reference
func (*Client) GetRepoLabels ¶
GetRepoLabels returns the list of labels accessible to org/repo.
See https://developer.github.com/v3/issues/labels/#list-all-labels-for-this-repository
func (*Client) GetRepos ¶
GetRepos returns all repos in an org.
This call uses multiple API tokens when results are paginated.
See https://developer.github.com/v3/repos/#list-organization-repositories
func (*Client) GetSingleCommit ¶
func (c *Client) GetSingleCommit(org, repo, SHA string) (SingleCommit, error)
GetSingleCommit returns a single commit.
func (*Client) GetUserPermission ¶
GetUserPermission returns the user's permission level for a repo
https://developer.github.com/v3/repos/collaborators/#review-a-users-permission-level
func (*Client) HasPermission ¶
HasPermission returns true if GetUserPermission() returns any of the roles.
func (*Client) IsCollaborator ¶
IsCollaborator returns whether or not the user is a collaborator of the repo. From GitHub's API reference: For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.
func (*Client) IsMember ¶
IsMember returns whether or not the user is a member of the org.
See https://developer.github.com/v3/orgs/members/#check-membership
func (*Client) IsMergeable ¶
IsMergeable determines if a PR can be merged. Mergeability is calculated by a background job on GitHub and is not immediately available when new commits are added so the PR must be polled until the background job completes.
func (*Client) ListCollaborators ¶
ListCollaborators gets a list of all users who have access to a repo (and can become assignees or requested reviewers).
See 'IsCollaborator' for more details. See https://developer.github.com/v3/repos/collaborators/
func (*Client) ListIssueComments ¶
func (c *Client) ListIssueComments(org, repo string, number int) ([]IssueComment, error)
ListIssueComments returns all comments on an issue.
Each page of results consumes one API token.
See https://developer.github.com/v3/issues/comments/#list-comments-on-an-issue
func (*Client) ListIssueEvents ¶
func (c *Client) ListIssueEvents(org, repo string, num int) ([]ListedIssueEvent, error)
ListIssueEvents gets a list events from GitHub's events API that pertain to the specified issue. The events that are returned have a different format than webhook events and certain event types are excluded.
func (*Client) ListMilestones ¶
ListMilestones list all milestones in a repo
See https://developer.github.com/v3/issues/milestones/#list-milestones-for-a-repository/
func (*Client) ListOrgInvitations ¶
func (c *Client) ListOrgInvitations(org string) ([]OrgInvitation, error)
ListOrgInvitations lists pending invitations to th org.
https://developer.github.com/v3/orgs/members/#list-pending-organization-invitations
func (*Client) ListOrgMembers ¶
func (c *Client) ListOrgMembers(org, role string) ([]TeamMember, error)
ListOrgMembers list all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned.
Role options are "all", "admin" and "member"
func (*Client) ListPullRequestComments ¶
func (c *Client) ListPullRequestComments(org, repo string, number int) ([]ReviewComment, error)
ListPullRequestComments returns all *review* comments on a pull request.
Multiple-pages of comments consumes multiple API tokens.
See https://developer.github.com/v3/pulls/comments/#list-comments-on-a-pull-request
func (*Client) ListReviews ¶
ListReviews returns all reviews on a pull request.
Multiple-pages of results consumes multiple API tokens.
See https://developer.github.com/v3/pulls/reviews/#list-reviews-on-a-pull-request
func (*Client) ListStatuses ¶
ListStatuses gets commit statuses for a given ref.
See https://developer.github.com/v3/repos/statuses/#list-statuses-for-a-specific-ref
func (*Client) ListTeamMembers ¶
func (c *Client) ListTeamMembers(id int, role string) ([]TeamMember, error)
ListTeamMembers gets a list of team members for the given team id
Role options are "all", "maintainer" and "member"
https://developer.github.com/v3/teams/members/#list-team-members
func (*Client) Merge ¶
func (c *Client) Merge(org, repo string, pr int, details MergeDetails) error
Merge merges a PR.
See https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button
func (*Client) RemoveBranchProtection ¶
RemoveBranchProtection unprotects org/repo=branch.
See https://developer.github.com/v3/repos/branches/#remove-branch-protection
func (*Client) RemoveLabel ¶
RemoveLabel removes label from org/repo#number, returning an error on any failure.
See https://developer.github.com/v3/issues/labels/#remove-a-label-from-an-issue
func (*Client) RemoveOrgMembership ¶
RemoveOrgMembership removes the user from the org.
https://developer.github.com/v3/orgs/members/#remove-organization-membership
func (*Client) RemoveTeamMembership ¶
RemoveTeamMembership removes the user from the team (but not the org).
https://developer.github.com/v3/teams/members/#remove-team-member
func (*Client) ReopenIssue ¶
ReopenIssue re-opens the existing, closed issue provided
func (*Client) ReopenPR ¶
ReopenPR re-opens the existing, closed PR provided TODO: Rename to ReopenPullRequest
See https://developer.github.com/v3/pulls/#update-a-pull-request
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.
See https://developer.github.com/v3/pulls/review_requests/#create-a-review-request
func (*Client) SetMilestone ¶
SetMilestone sets the milestone from the specified issue (if it is a valid milestone)
func (*Client) Throttle ¶
Throttle client to a rate of at most hourlyTokens requests per hour, allowing burst tokens.
func (*Client) UnassignIssue ¶
UnassignIssue removes logins from org/repo#number, returns an error if any login remains assigned.
See https://developer.github.com/v3/issues/assignees/#remove-assignees-from-an-issue
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.
See https://developer.github.com/v3/pulls/review_requests/#delete-a-review-request
func (*Client) UpdateBranchProtection ¶
func (c *Client) UpdateBranchProtection(org, repo, branch string, config BranchProtectionRequest) error
UpdateBranchProtection configures org/repo=branch.
See https://developer.github.com/v3/repos/branches/#update-branch-protection
func (*Client) UpdateOrgMembership ¶
func (c *Client) UpdateOrgMembership(org, user string, admin bool) (*OrgMembership, error)
UpdateOrgMembership invites a user to the org and/or updates their permission level.
If the user is not already a member, this will invite them. This will also change the role to/from admin, on either the invitation or membership setting.
https://developer.github.com/v3/orgs/members/#add-or-update-organization-membership
func (*Client) UpdatePullRequest ¶
func (c *Client) UpdatePullRequest(org, repo string, number int, title, body *string, open *bool, branch *string, canModify *bool) error
UpdatePullRequest modifies the title, body, open state
func (*Client) UpdateRepoLabel ¶
UpdateRepoLabel updates a org/repo label to new name, description, and color
See https://developer.github.com/v3/issues/labels/#update-a-label
func (*Client) UpdateTeamMembership ¶
func (c *Client) UpdateTeamMembership(id int, user string, maintainer bool) (*TeamMembership, error)
UpdateTeamMembership adds the user to the team and/or updates their role in that team.
If the user is not a member of the org, GitHub will invite them to become an outside collaborator, setting their status to pending.
https://developer.github.com/v3/teams/members/#add-or-update-team-membership
type ClientError ¶
type ClientError struct { Message string `json:"message"` Errors []struct { Resource string `json:"resource"` Field string `json:"field"` Code string `json:"code"` Message string `json:"message,omitempty"` } `json:"errors,omitempty"` }
ClientError represents https://developer.github.com/v3/#client-errors
func (ClientError) Error ¶
func (r ClientError) Error() string
type CombinedStatus ¶
CombinedStatus is the latest statuses for a ref.
type Commit ¶
type Commit struct { ID string `json:"id"` Message string `json:"message"` Added []string `json:"added"` Removed []string `json:"removed"` Modified []string `json:"modified"` }
Commit represents general info about a commit.
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 }
ExtraUsers is an error specifying the users that could not be unassigned.
func (ExtraUsers) Error ¶
func (e ExtraUsers) Error() string
type FileNotFound ¶
type FileNotFound struct {
// contains filtered or unexported fields
}
FileNotFound happens when github cannot find the file requested by GetFile().
func (*FileNotFound) Error ¶
func (e *FileNotFound) Error() string
type GenericCommentEvent ¶
type GenericCommentEvent struct { IsPR bool Action GenericCommentEventAction Body string HTMLURL string Number int Repo Repo User User IssueAuthor User Assignees []User IssueState string IssueBody string IssueHTMLURL string GUID string }
GenericCommentEvent is a fake event type that is instantiated for any github event that contains comment like content. The specific events that are also handled as GenericCommentEvents are: - issue_comment events - pull_request_review events - pull_request_review_comment events - pull_request events with action in ["opened", "edited"] - issue events with action in ["opened", "edited"]
Issue and PR "closed" events are not coerced to the "deleted" Action and do not trigger a GenericCommentEvent because these events don't actually remove the comment content from GH.
type GenericCommentEventAction ¶
type GenericCommentEventAction string
GenericCommentEventAction coerces multiple actions into its generic equivalent.
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"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` Milestone Milestone `json:"milestone"` // This will be non-nil if it is a pull request. PullRequest *struct{} `json:"pull_request,omitempty"` }
Issue represents general info about an issue.
func (Issue) IsAssignee ¶
IsAssignee checks if a user is assigned to the issue.
func (Issue) IsPullRequest ¶
IsPullRequest checks if an issue is a pull request.
type IssueComment ¶
type IssueComment struct { ID int `json:"id,omitempty"` Body string `json:"body"` User User `json:"user,omitempty"` HTMLURL string `json:"html_url,omitempty"` CreatedAt time.Time `json:"created_at,omitempty"` UpdatedAt time.Time `json:"updated_at,omitempty"` }
IssueComment represents general info about an issue comment.
type IssueCommentEvent ¶
type IssueCommentEvent struct { Action IssueCommentEventAction `json:"action"` Issue Issue `json:"issue"` Comment IssueComment `json:"comment"` Repo Repo `json:"repository"` // GUID is included in the header of the request received by Github. GUID string }
IssueCommentEvent is what GitHub sends us when an issue comment is changed.
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"` // Label is specified for IssueActionLabeled and IssueActionUnlabeled events. Label Label `json:"label"` // GUID is included in the header of the request received by Github. GUID string }
IssueEvent represents an issue event from a webhook payload (not from the events API).
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 Label ¶
type Label struct { URL string `json:"url"` Name string `json:"name"` Description string `json:"description"` Color string `json:"color"` }
Label describes a GitHub label.
type LabelNotFound ¶
LabelNotFound indicates that a label is not attached to an issue. For example, removing a label from an issue, when the issue does not have that label.
func (*LabelNotFound) Error ¶
func (e *LabelNotFound) Error() string
type ListedIssueEvent ¶
type ListedIssueEvent struct { Event IssueEventAction `json:"event"` // This is the same as IssueEvent.Action. Actor User `json:"actor"` Label Label `json:"label"` CreatedAt time.Time `json:"created_at"` }
ListedIssueEvent represents an issue event from the events API (not from a webhook payload). https://developer.github.com/v3/issues/events/
type Membership ¶
type Membership struct { // admin or member Role string `json:"role"` // pending or active State string `json:"state,omitempty"` }
Membership specifies the role and state details for an org and/or team.
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 }
MissingUsers is an error specifying the users that could not be unassigned.
func (MissingUsers) Error ¶
func (m MissingUsers) Error() string
type ModifiedHeadError ¶
type ModifiedHeadError string
ModifiedHeadError happens when github refuses to merge a PR because the PR changed.
func (ModifiedHeadError) Error ¶
func (e ModifiedHeadError) Error() string
type OrgInvitation ¶
type OrgInvitation struct { TeamMember Email string `json:"email"` Inviter TeamMember `json:"inviter"` }
OrgInvitation contains Login and other details about the invitation.
type OrgMembership ¶
type OrgMembership struct {
Membership
}
OrgMembership contains Membership fields for user membership in an org.
type Organization ¶
type Organization struct { // BillingEmail holds private billing address BillingEmail string `json:"billing_email"` Company string `json:"company"` // Email is publicly visible Email string `json:"email"` Location string `json:"location"` Name string `json:"name"` Description string `json:"description"` HasOrganizationProjects bool `json:"has_organization_projects"` HasRepositoryProjects bool `json:"has_repository_projects"` DefaultRepositoryPermission string `json:"default_repository_permission"` MembersCanCreateRepositories bool `json:"members_can_create_repositories"` }
Organization stores metadata information about an organization
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"` CreatedAt time.Time `json:"created_at,omitempty"` UpdatedAt time.Time `json:"updated_at,omitempty"` // 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"` // ref https://developer.github.com/v3/pulls/#response-1 // The value of the mergeable attribute can be true, false, or null. If the value // is null, this means that the mergeability hasn't been computed yet, and a // background job was started to compute it. When the job is complete, the response // will include a non-null value for the mergeable attribute. Mergable *bool `json:"mergeable,omitempty"` }
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"` BlobURL string `json:"blob_url"` PreviousFilename string `json:"previous_filename"` }
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"` Sender User `json:"sender"` // Changes holds raw change data, which we must inspect // and deserialize later as this is a polymorphic field Changes json.RawMessage `json:"changes"` // GUID is included in the header of the request received by Github. GUID string }
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 PullRequestMergeType ¶
type PullRequestMergeType string
PullRequestMergeType enumerates the types of merges the GitHub API can perform https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button
const ( MergeMerge PullRequestMergeType = "merge" MergeRebase PullRequestMergeType = "rebase" MergeSquash PullRequestMergeType = "squash" )
Possible types of merges for the GitHub merge API
type PushEvent ¶
type PushEvent struct { Ref string `json:"ref"` Before string `json:"before"` After string `json:"after"` Created bool `json:"created"` Deleted bool `json:"deleted"` Forced bool `json:"forced"` 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"` // GUID is included in the header of the request received by Github. GUID string }
PushEvent is what GitHub sends us when a user pushes to a repo.
type Reaction ¶
type Reaction struct {
Content string `json:"content"`
}
Reaction holds the type of emotional reaction.
type Repo ¶
type Repo struct { Owner User `json:"owner"` Name string `json:"name"` FullName string `json:"full_name"` HTMLURL string `json:"html_url"` Fork bool `json:"fork"` DefaultBranch string `json:"default_branch"` Archived bool `json:"archived"` }
Repo contains general repository information. See also https://developer.github.com/v3/repos/#get
type RequiredPullRequestReviews ¶
type RequiredPullRequestReviews struct { DismissalRestrictions Restrictions `json:"dismissal_restrictions"` DismissStaleReviews bool `json:"dismiss_stale_reviews"` RequireCodeOwnerReviews bool `json:"require_code_owner_reviews"` RequiredApprovingReviewCount int `json:"required_approving_review_count"` }
RequiredPullRequestReviews controls review rights.
type RequiredStatusChecks ¶
type RequiredStatusChecks struct { Strict bool `json:"strict"` // PR must be up to date (include latest base branch commit). Contexts []string `json:"contexts"` }
RequiredStatusChecks specifies which contexts must pass to merge.
type Restrictions ¶
type Restrictions struct { Users *[]string `json:"users,omitempty"` Teams *[]string `json:"teams,omitempty"` }
Restrictions tells github to restrict an activity to people/teams.
Use *[]string in order to distinguish unset and empty list. This is needed by dismissal_restrictions to distinguish do not restrict (empty object) and restrict everyone (nil user/teams list)
type Review ¶
type Review struct { ID int `json:"id"` User User `json:"user"` Body string `json:"body"` State ReviewState `json:"state"` HTMLURL string `json:"html_url"` SubmittedAt time.Time `json:"submitted_at"` }
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"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` // 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"` // GUID is included in the header of the request received by Github. GUID string }
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"` // GUID is included in the header of the request received by Github. GUID string }
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 SingleCommit ¶
type SingleCommit struct { Commit struct { Tree struct { SHA string `json:"sha"` } `json:"tree"` } `json:"commit"` }
SingleCommit is the commit part received when requesting a single commit https://developer.github.com/v3/repos/commits/#get-a-single-commit
type StateCannotBeChanged ¶
type StateCannotBeChanged struct {
Message string
}
StateCannotBeChanged represents the "custom" GitHub API error that occurs when a resource cannot be changed
func (StateCannotBeChanged) Error ¶
func (s StateCannotBeChanged) Error() string
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"` // GUID is included in the header of the request received by Github. GUID string }
StatusEvent fires whenever a git commit changes.
See https://developer.github.com/v3/activity/events/types/#statusevent
type Team ¶
type Team struct { ID int `json:"id,omitempty"` Name string `json:"name"` Description string `json:"description,omitempty"` Privacy string `json:"privacy,omitempty"` Parent *Team `json:"parent,omitempty"` // Only present in responses ParentTeamID *int `json:"parent_team_id,omitempty"` // Only valid in creates/edits }
Team is a github organizational team
type TeamMember ¶
type TeamMember struct {
Login string `json:"login"`
}
TeamMember is a member of an organizational team
type TeamMembership ¶
type TeamMembership struct {
Membership
}
TeamMembership contains Membership fields for user membership on a team.
type UnauthorizedToPushError ¶
type UnauthorizedToPushError string
UnauthorizedToPushError happens when client is not allowed to push to github.
func (UnauthorizedToPushError) Error ¶
func (e UnauthorizedToPushError) Error() string
type UnmergablePRBaseChangedError ¶
type UnmergablePRBaseChangedError string
UnmergablePRBaseChangedError happens when github refuses merging a PR because the base changed.
func (UnmergablePRBaseChangedError) Error ¶
func (e UnmergablePRBaseChangedError) Error() string
type UnmergablePRError ¶
type UnmergablePRError string
UnmergablePRError happens when github refuses to merge a PR for other reasons (merge confclit).
func (UnmergablePRError) Error ¶
func (e UnmergablePRError) Error() string
Directories ¶
Path | Synopsis |
---|---|
Package reporter implements a reporter interface for github TODO(krzyzacy): move logic from report.go here
|
Package reporter implements a reporter interface for github TODO(krzyzacy): move logic from report.go here |