github

package
v0.0.0-...-71304e1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 6, 2017 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StatusPending = "pending"
	StatusSuccess = "success"
	StatusError   = "error"
	StatusFailure = "failure"
)

These are possible State entries for a Status.

View Source
const (
	ReactionThumbsUp   = "+1"
	ReactionThumbsDown = "-1"
	ReactionLaugh      = "laugh"
	ReactionConfused   = "confused"
	ReactionHeart      = "heart"
	ReactionHooray     = "hooray"
)

Possible contents for reactions.

View Source
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"
)
View Source
const (
	PullRequestFileModified PullRequestFileStatus = "modified"
	PullRequestFileAdded                          = "added"
	PullRequestFileRemoved                        = "removed"
	PullRequestFileRenamed                        = "renamed"
)
View Source
const (
	IssueActionAssigned     IssueEventAction = "assigned"
	IssueActionUnassigned                    = "unassigned"
	IssueActionLabeled                       = "labeled"
	IssueActionUnlabeled                     = "unlabeled"
	IssueActionOpened                        = "opened"
	IssueActionEdited                        = "edited"
	IssueActionMilestoned                    = "milestoned"
	IssueActionDemilestoned                  = "demilestoned"
	IssueActionClosed                        = "closed"
	IssueActionReopened                      = "reopened"
)
View Source
const (
	IssueCommentActionCreated IssueCommentEventAction = "created"
	IssueCommentActionEdited                          = "edited"
	IssueCommentActionDeleted                         = "deleted"
)
View Source
const (
	ReviewActionSubmitted ReviewEventAction = "submitted"
	ReviewActionEdited                      = "edited"
	ReviewActionDismissed                   = "dismissed"
)
View Source
const (
	ReviewCommentActionCreated ReviewCommentEventAction = "created"
	ReviewCommentActionEdited                           = "edited"
	ReviewCommentActionDeleted                          = "deleted"
)
View Source
const (
	Approve        ReviewAction = "APPROVE"
	RequestChanges              = "REQUEST_CHANGES"
	Comment                     = "COMMENT"
)

Possible review actions. Leave Action blank for a pending review.

View Source
const (
	GenericCommentActionCreated GenericCommentEventAction = "created" // "opened", "submitted"
	GenericCommentActionEdited                            = "edited"
	GenericCommentActionDeleted                           = "deleted" // "dismissed"
)

Comments indicate values that are coerced to the specified value.

Variables

View Source
var NormLogin = strings.ToLower

NormLogin normalizes GitHub login strings

Functions

func PayloadSignature

func PayloadSignature(payload []byte, key []byte) string

PayloadSignature returns the signature that matches the payload.

func ValidatePayload

func ValidatePayload(payload []byte, sig string, key []byte) bool

ValidatePayload ensures that the request payload signature matches the key.

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 NewClient

func NewClient(token, base string) *Client

NewClient creates a new fully operational GitHub client.

func NewDryRunClient

func NewDryRunClient(token, base string) *Client

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) AddLabel

func (c *Client) AddLabel(org, repo string, number int, label string) error

func (*Client) AddRepoLabel

func (c *Client) AddRepoLabel(org, repo, label, color string) error

Adds Label label/color to given org/repo

func (*Client) AssignIssue

func (c *Client) AssignIssue(org, repo string, number int, logins []string) error

func (*Client) BotName

func (c *Client) BotName() (string, error)

func (*Client) CloseIssue

func (c *Client) CloseIssue(org, repo string, number int) error

CloseIssue closes the existing, open issue provided

func (*Client) ClosePR

func (c *Client) ClosePR(org, repo string, number int) error

ClosePR closes the existing, open PR provided

func (*Client) CreateComment

func (c *Client) CreateComment(org, repo string, number int, comment string) error

CreateComment creates a comment on the issue.

func (*Client) CreateCommentReaction

func (c *Client) CreateCommentReaction(org, repo string, ID int, reaction string) error

func (*Client) CreateIssueReaction

func (c *Client) CreateIssueReaction(org, repo string, ID int, reaction string) error

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

func (c *Client) CreateStatus(org, repo, ref string, s Status) error

CreateStatus creates or updates the status of a commit.

func (*Client) DeleteComment

func (c *Client) DeleteComment(org, repo string, ID int) error

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 (c *Client) EditComment(org, repo string, ID int, comment string) error

func (*Client) FindIssues

func (c *Client) FindIssues(query, sort string, asc bool) ([]Issue, error)

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

func (c *Client) GetFile(org, repo, filepath, commit string) ([]byte, error)

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 (c *Client) GetIssueLabels(org, repo string, number int) ([]Label, error)

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) GetRef

func (c *Client) GetRef(org, repo, ref string) (string, error)

GetRef returns the SHA of the given ref, such as "heads/master".

func (*Client) GetRepoLabels

func (c *Client) GetRepoLabels(org, repo string) ([]Label, error)

func (*Client) GetRepos

func (c *Client) GetRepos(org string, isUser bool) ([]Repo, error)

func (*Client) IsMember

func (c *Client) IsMember(org, user string) (bool, error)

IsMember returns whether or not the user is a member of the org.

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) ListTeams

func (c *Client) ListTeams(org string) ([]Team, error)

ListTeams gets a list of teams for the given org

func (*Client) Merge

func (c *Client) Merge(org, repo string, pr int, details MergeDetails) error

Merge merges a PR.

func (*Client) Query

func (c *Client) Query(ctx context.Context, q interface{}, vars map[string]interface{}) error

Query runs a GraphQL query using shurcooL/githubql's client.

func (*Client) RemoveLabel

func (c *Client) RemoveLabel(org, repo string, number int, label string) error

func (*Client) ReopenIssue

func (c *Client) ReopenIssue(org, repo string, number int) error

ReopenIssue re-opens the existing, closed issue provided

func (*Client) ReopenPR

func (c *Client) ReopenPR(org, repo string, number int) error

ReopenPR re-opens the existing, closed PR provided

func (*Client) RequestReview

func (c *Client) RequestReview(org, repo string, number int, logins []string) error

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 (c *Client) UnassignIssue(org, repo string, number int, logins []string) error

func (*Client) UnrequestReview

func (c *Client) UnrequestReview(org, repo string, number int, logins []string) error

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

func (c *Client) UpdateRepoLabel(org, repo, label, color string) error

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 Commit

type Commit struct {
	ID       string   `json:"id"`
	Message  string   `json:"message"`
	Added    []string `json:"added"`
	Removed  []string `json:"removed"`
	Modified []string `json:"modified"`
}

type Content

type Content struct {
	Content string `json:"content"`
	SHA     string `json:"sha"`
}

Content is some base64 encoded github file content

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 GenericCommentEvent struct {
	IsPR        bool
	Action      GenericCommentEventAction
	Body        string
	HTMLURL     string
	Number      int
	Repo        Repo
	User        User
	IssueAuthor User
	Assignees   []User
	IssueState  string
}

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) HasLabel

func (i Issue) HasLabel(labelToFind string) bool

func (Issue) IsAssignee

func (i Issue) IsAssignee(login string) bool

func (Issue) IsAuthor

func (i Issue) IsAuthor(login string) bool

func (Issue) IsPullRequest

func (i Issue) IsPullRequest() bool

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"`
}

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 Label

type Label struct {
	URL   string `json:"url"`
	Name  string `json:"name"`
	Color string `json:"color"`
}

type Logger

type Logger interface {
	Debugf(s string, v ...interface{})
}

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"`
}

func (PushEvent) Branch

func (pe PushEvent) Branch() string

type Reaction

type Reaction struct {
	Content string `json:"content"`
}

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 Team

type Team struct {
	ID   int    `json:"id"`
	Name string `json:"name"`
}

Team is a github organizational team

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

type User

type User struct {
	Login string `json:"login"`
	Name  string `json:"name"`
	Email string `json:"email"`
	ID    int    `json:"id"`
}

User is a GitHub user account.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL