diff options
Diffstat (limited to 'vendor/github.com/google/go-github')
43 files changed, 2662 insertions, 882 deletions
| diff --git a/vendor/github.com/google/go-github/github/activity_events.go b/vendor/github.com/google/go-github/github/activity_events.go index f337fcd..a919b11 100644 --- a/vendor/github.com/google/go-github/github/activity_events.go +++ b/vendor/github.com/google/go-github/github/activity_events.go @@ -32,6 +32,10 @@ func (e Event) String() string {  // a value of the corresponding struct type will be returned.  func (e *Event) ParsePayload() (payload interface{}, err error) {  	switch *e.Type { +	case "CheckRunEvent": +		payload = &CheckRunEvent{} +	case "CheckSuiteEvent": +		payload = &CheckSuiteEvent{}  	case "CommitCommentEvent":  		payload = &CommitCommentEvent{}  	case "CreateEvent": diff --git a/vendor/github.com/google/go-github/github/apps.go b/vendor/github.com/google/go-github/github/apps.go index c1f7f13..32d4f2f 100644 --- a/vendor/github.com/google/go-github/github/apps.go +++ b/vendor/github.com/google/go-github/github/apps.go @@ -20,6 +20,7 @@ type AppsService service  // App represents a GitHub App.  type App struct {  	ID          *int64     `json:"id,omitempty"` +	NodeID      *string    `json:"node_id,omitempty"`  	Owner       *User      `json:"owner,omitempty"`  	Name        *string    `json:"name,omitempty"`  	Description *string    `json:"description,omitempty"` @@ -57,6 +58,8 @@ type Installation struct {  	RepositorySelection *string                  `json:"repository_selection,omitempty"`  	Events              []string                 `json:"events,omitempty"`  	Permissions         *InstallationPermissions `json:"permissions,omitempty"` +	CreatedAt           *Timestamp               `json:"created_at,omitempty"` +	UpdatedAt           *Timestamp               `json:"updated_at,omitempty"`  }  func (i Installation) String() string { @@ -126,23 +129,7 @@ func (s *AppsService) ListInstallations(ctx context.Context, opt *ListOptions) (  //  // GitHub API docs: https://developer.github.com/v3/apps/#get-a-single-installation  func (s *AppsService) GetInstallation(ctx context.Context, id int64) (*Installation, *Response, error) { -	u := fmt.Sprintf("app/installations/%v", id) - -	req, err := s.client.NewRequest("GET", u, nil) -	if err != nil { -		return nil, nil, err -	} - -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeIntegrationPreview) - -	i := new(Installation) -	resp, err := s.client.Do(ctx, req, i) -	if err != nil { -		return nil, resp, err -	} - -	return i, resp, nil +	return s.getInstallation(ctx, fmt.Sprintf("app/installations/%v", id))  }  // ListUserInstallations lists installations that are accessible to the authenticated user. @@ -195,3 +182,49 @@ func (s *AppsService) CreateInstallationToken(ctx context.Context, id int64) (*I  	return t, resp, nil  } + +// FindOrganizationInstallation finds the organization's installation information. +// +// GitHub API docs: https://developer.github.com/v3/apps/#find-organization-installation +func (s *AppsService) FindOrganizationInstallation(ctx context.Context, org string) (*Installation, *Response, error) { +	return s.getInstallation(ctx, fmt.Sprintf("orgs/%v/installation", org)) +} + +// FindRepositoryInstallation finds the repository's installation information. +// +// GitHub API docs: https://developer.github.com/v3/apps/#find-repository-installation +func (s *AppsService) FindRepositoryInstallation(ctx context.Context, owner, repo string) (*Installation, *Response, error) { +	return s.getInstallation(ctx, fmt.Sprintf("repos/%v/%v/installation", owner, repo)) +} + +// FindRepositoryInstallationByID finds the repository's installation information. +// +// Note: FindRepositoryInstallationByID uses the undocumented GitHub API endpoint /repositories/:id/installation. +func (s *AppsService) FindRepositoryInstallationByID(ctx context.Context, id int64) (*Installation, *Response, error) { +	return s.getInstallation(ctx, fmt.Sprintf("repositories/%d/installation", id)) +} + +// FindUserInstallation finds the user's installation information. +// +// GitHub API docs: https://developer.github.com/v3/apps/#find-repository-installation +func (s *AppsService) FindUserInstallation(ctx context.Context, user string) (*Installation, *Response, error) { +	return s.getInstallation(ctx, fmt.Sprintf("users/%v/installation", user)) +} + +func (s *AppsService) getInstallation(ctx context.Context, url string) (*Installation, *Response, error) { +	req, err := s.client.NewRequest("GET", url, nil) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypeIntegrationPreview) + +	i := new(Installation) +	resp, err := s.client.Do(ctx, req, i) +	if err != nil { +		return nil, resp, err +	} + +	return i, resp, nil +} diff --git a/vendor/github.com/google/go-github/github/apps_marketplace.go b/vendor/github.com/google/go-github/github/apps_marketplace.go index 089cdbf..3f35b91 100644 --- a/vendor/github.com/google/go-github/github/apps_marketplace.go +++ b/vendor/github.com/google/go-github/github/apps_marketplace.go @@ -74,9 +74,6 @@ func (s *MarketplaceService) ListPlans(ctx context.Context, opt *ListOptions) ([  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeMarketplacePreview) -  	var plans []*MarketplacePlan  	resp, err := s.client.Do(ctx, req, &plans)  	if err != nil { @@ -101,9 +98,6 @@ func (s *MarketplaceService) ListPlanAccountsForPlan(ctx context.Context, planID  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeMarketplacePreview) -  	var accounts []*MarketplacePlanAccount  	resp, err := s.client.Do(ctx, req, &accounts)  	if err != nil { @@ -128,9 +122,6 @@ func (s *MarketplaceService) ListPlanAccountsForAccount(ctx context.Context, acc  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeMarketplacePreview) -  	var accounts []*MarketplacePlanAccount  	resp, err := s.client.Do(ctx, req, &accounts)  	if err != nil { @@ -159,9 +150,6 @@ func (s *MarketplaceService) ListMarketplacePurchasesForUser(ctx context.Context  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeMarketplacePreview) -  	var purchases []*MarketplacePurchase  	resp, err := s.client.Do(ctx, req, &purchases)  	if err != nil { diff --git a/vendor/github.com/google/go-github/github/checks.go b/vendor/github.com/google/go-github/github/checks.go new file mode 100644 index 0000000..3549089 --- /dev/null +++ b/vendor/github.com/google/go-github/github/checks.go @@ -0,0 +1,428 @@ +// Copyright 2018 The go-github AUTHORS. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package github + +import ( +	"context" +	"fmt" +) + +// ChecksService provides access to the Checks API in the +// GitHub API. +// +// GitHub API docs: https://developer.github.com/v3/checks/ +type ChecksService service + +// CheckRun represents a GitHub check run on a repository associated with a GitHub app. +type CheckRun struct { +	ID           *int64          `json:"id,omitempty"` +	HeadSHA      *string         `json:"head_sha,omitempty"` +	ExternalID   *string         `json:"external_id,omitempty"` +	URL          *string         `json:"url,omitempty"` +	HTMLURL      *string         `json:"html_url,omitempty"` +	Status       *string         `json:"status,omitempty"` +	Conclusion   *string         `json:"conclusion,omitempty"` +	StartedAt    *Timestamp      `json:"started_at,omitempty"` +	CompletedAt  *Timestamp      `json:"completed_at,omitempty"` +	Output       *CheckRunOutput `json:"output,omitempty"` +	Name         *string         `json:"name,omitempty"` +	CheckSuite   *CheckSuite     `json:"check_suite,omitempty"` +	App          *App            `json:"app,omitempty"` +	PullRequests []*PullRequest  `json:"pull_requests,omitempty"` +} + +// CheckRunOutput represents the output of a CheckRun. +type CheckRunOutput struct { +	Title            *string               `json:"title,omitempty"` +	Summary          *string               `json:"summary,omitempty"` +	Text             *string               `json:"text,omitempty"` +	AnnotationsCount *int                  `json:"annotations_count,omitempty"` +	AnnotationsURL   *string               `json:"annotations_url,omitempty"` +	Annotations      []*CheckRunAnnotation `json:"annotations,omitempty"` +	Images           []*CheckRunImage      `json:"images,omitempty"` +} + +// CheckRunAnnotation represents an annotation object for a CheckRun output. +type CheckRunAnnotation struct { +	FileName     *string `json:"filename,omitempty"` +	BlobHRef     *string `json:"blob_href,omitempty"` +	StartLine    *int    `json:"start_line,omitempty"` +	EndLine      *int    `json:"end_line,omitempty"` +	WarningLevel *string `json:"warning_level,omitempty"` +	Message      *string `json:"message,omitempty"` +	Title        *string `json:"title,omitempty"` +	RawDetails   *string `json:"raw_details,omitempty"` +} + +// CheckRunImage represents an image object for a CheckRun output. +type CheckRunImage struct { +	Alt      *string `json:"alt,omitempty"` +	ImageURL *string `json:"image_url,omitempty"` +	Caption  *string `json:"caption,omitempty"` +} + +// CheckSuite represents a suite of check runs. +type CheckSuite struct { +	ID           *int64         `json:"id,omitempty"` +	HeadBranch   *string        `json:"head_branch,omitempty"` +	HeadSHA      *string        `json:"head_sha,omitempty"` +	URL          *string        `json:"url,omitempty"` +	BeforeSHA    *string        `json:"before,omitempty"` +	AfterSHA     *string        `json:"after,omitempty"` +	Status       *string        `json:"status,omitempty"` +	Conclusion   *string        `json:"conclusion,omitempty"` +	App          *App           `json:"app,omitempty"` +	Repository   *Repository    `json:"repository,omitempty"` +	PullRequests []*PullRequest `json:"pull_requests,omitempty"` +} + +func (c CheckRun) String() string { +	return Stringify(c) +} + +func (c CheckSuite) String() string { +	return Stringify(c) +} + +// GetCheckRun gets a check-run for a repository. +// +// GitHub API docs: https://developer.github.com/v3/checks/runs/#get-a-single-check-run +func (s *ChecksService) GetCheckRun(ctx context.Context, owner, repo string, checkRunID int64) (*CheckRun, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/check-runs/%v", owner, repo, checkRunID) +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	req.Header.Set("Accept", mediaTypeCheckRunsPreview) + +	checkRun := new(CheckRun) +	resp, err := s.client.Do(ctx, req, checkRun) +	if err != nil { +		return nil, resp, err +	} + +	return checkRun, resp, nil +} + +// GetCheckSuite gets a single check suite. +// +// GitHub API docs: https://developer.github.com/v3/checks/suites/#get-a-single-check-suite +func (s *ChecksService) GetCheckSuite(ctx context.Context, owner, repo string, checkSuiteID int64) (*CheckSuite, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/check-suites/%v", owner, repo, checkSuiteID) +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	req.Header.Set("Accept", mediaTypeCheckRunsPreview) + +	checkSuite := new(CheckSuite) +	resp, err := s.client.Do(ctx, req, checkSuite) +	if err != nil { +		return nil, resp, err +	} + +	return checkSuite, resp, nil +} + +// CreateCheckRunOptions sets up parameters needed to create a CheckRun. +type CreateCheckRunOptions struct { +	Name        string          `json:"name"`                   // The name of the check (e.g., "code-coverage"). (Required.) +	HeadBranch  string          `json:"head_branch"`            // The name of the branch to perform a check against. (Required.) +	HeadSHA     string          `json:"head_sha"`               // The SHA of the commit. (Required.) +	DetailsURL  *string         `json:"details_url,omitempty"`  // The URL of the integrator's site that has the full details of the check. (Optional.) +	ExternalID  *string         `json:"external_id,omitempty"`  // A reference for the run on the integrator's system. (Optional.) +	Status      *string         `json:"status,omitempty"`       // The current status. Can be one of "queued", "in_progress", or "completed". Default: "queued". (Optional.) +	Conclusion  *string         `json:"conclusion,omitempty"`   // Can be one of "success", "failure", "neutral", "cancelled", "timed_out", or "action_required". (Optional. Required if you provide a status of "completed".) +	StartedAt   *Timestamp      `json:"started_at,omitempty"`   // The time that the check run began. (Optional.) +	CompletedAt *Timestamp      `json:"completed_at,omitempty"` // The time the check completed. (Optional. Required if you provide conclusion.) +	Output      *CheckRunOutput `json:"output,omitempty"`       // Provide descriptive details about the run. (Optional) +} + +// CreateCheckRun creates a check run for repository. +// +// GitHub API docs: https://developer.github.com/v3/checks/runs/#create-a-check-run +func (s *ChecksService) CreateCheckRun(ctx context.Context, owner, repo string, opt CreateCheckRunOptions) (*CheckRun, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/check-runs", owner, repo) +	req, err := s.client.NewRequest("POST", u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req.Header.Set("Accept", mediaTypeCheckRunsPreview) + +	checkRun := new(CheckRun) +	resp, err := s.client.Do(ctx, req, checkRun) +	if err != nil { +		return nil, resp, err +	} + +	return checkRun, resp, nil +} + +// UpdateCheckRunOptions sets up parameters needed to update a CheckRun. +type UpdateCheckRunOptions struct { +	Name        string          `json:"name"`                   // The name of the check (e.g., "code-coverage"). (Required.) +	HeadBranch  *string         `json:"head_branch,omitempty"`  // The name of the branch to perform a check against. (Optional.) +	HeadSHA     *string         `json:"head_sha,omitempty"`     // The SHA of the commit. (Optional.) +	DetailsURL  *string         `json:"details_url,omitempty"`  // The URL of the integrator's site that has the full details of the check. (Optional.) +	ExternalID  *string         `json:"external_id,omitempty"`  // A reference for the run on the integrator's system. (Optional.) +	Status      *string         `json:"status,omitempty"`       // The current status. Can be one of "queued", "in_progress", or "completed". Default: "queued". (Optional.) +	Conclusion  *string         `json:"conclusion,omitempty"`   // Can be one of "success", "failure", "neutral", "cancelled", "timed_out", or "action_required". (Optional. Required if you provide a status of "completed".) +	CompletedAt *Timestamp      `json:"completed_at,omitempty"` // The time the check completed. (Optional. Required if you provide conclusion.) +	Output      *CheckRunOutput `json:"output,omitempty"`       // Provide descriptive details about the run. (Optional) +} + +// UpdateCheckRun updates a check run for a specific commit in a repository. +// +// GitHub API docs: https://developer.github.com/v3/checks/runs/#update-a-check-run +func (s *ChecksService) UpdateCheckRun(ctx context.Context, owner, repo string, checkRunID int64, opt UpdateCheckRunOptions) (*CheckRun, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/check-runs/%v", owner, repo, checkRunID) +	req, err := s.client.NewRequest("PATCH", u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req.Header.Set("Accept", mediaTypeCheckRunsPreview) + +	checkRun := new(CheckRun) +	resp, err := s.client.Do(ctx, req, checkRun) +	if err != nil { +		return nil, resp, err +	} + +	return checkRun, resp, nil +} + +// ListCheckRunAnnotations lists the annotations for a check run. +// +// GitHub API docs: https://developer.github.com/v3/checks/runs/#list-annotations-for-a-check-run +func (s *ChecksService) ListCheckRunAnnotations(ctx context.Context, owner, repo string, checkRunID int64, opt *ListOptions) ([]*CheckRunAnnotation, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/check-runs/%v/annotations", owner, repo, checkRunID) +	u, err := addOptions(u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	req.Header.Set("Accept", mediaTypeCheckRunsPreview) + +	var checkRunAnnotations []*CheckRunAnnotation +	resp, err := s.client.Do(ctx, req, &checkRunAnnotations) +	if err != nil { +		return nil, resp, err +	} + +	return checkRunAnnotations, resp, nil +} + +// ListCheckRunsOptions represents parameters to list check runs. +type ListCheckRunsOptions struct { +	CheckName *string `url:"check_name,omitempty"` // Returns check runs with the specified name. +	Status    *string `url:"status,omitempty"`     // Returns check runs with the specified status. Can be one of "queued", "in_progress", or "completed". +	Filter    *string `url:"filter,omitempty"`     // Filters check runs by their completed_at timestamp. Can be one of "latest" (returning the most recent check runs) or "all". Default: "latest" + +	ListOptions +} + +// ListCheckRunsResults represents the result of a check run list. +type ListCheckRunsResults struct { +	Total     *int        `json:"total_count,omitempty"` +	CheckRuns []*CheckRun `json:"check_runs,omitempty"` +} + +// ListCheckRunsForRef lists check runs for a specific ref. +// +// GitHub API docs: https://developer.github.com/v3/checks/runs/#list-check-runs-for-a-specific-ref +func (s *ChecksService) ListCheckRunsForRef(ctx context.Context, owner, repo, ref string, opt *ListCheckRunsOptions) (*ListCheckRunsResults, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/commits/%v/check-runs", owner, repo, ref) +	u, err := addOptions(u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	req.Header.Set("Accept", mediaTypeCheckRunsPreview) + +	var checkRunResults *ListCheckRunsResults +	resp, err := s.client.Do(ctx, req, &checkRunResults) +	if err != nil { +		return nil, resp, err +	} + +	return checkRunResults, resp, nil +} + +// ListCheckRunsCheckSuite lists check runs for a check suite. +// +// GitHub API docs: https://developer.github.com/v3/checks/runs/#list-check-runs-in-a-check-suite +func (s *ChecksService) ListCheckRunsCheckSuite(ctx context.Context, owner, repo string, checkSuiteID int64, opt *ListCheckRunsOptions) (*ListCheckRunsResults, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/check-suites/%v/check-runs", owner, repo, checkSuiteID) +	u, err := addOptions(u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	req.Header.Set("Accept", mediaTypeCheckRunsPreview) + +	var checkRunResults *ListCheckRunsResults +	resp, err := s.client.Do(ctx, req, &checkRunResults) +	if err != nil { +		return nil, resp, err +	} + +	return checkRunResults, resp, nil +} + +// ListCheckSuiteOptions represents parameters to list check suites. +type ListCheckSuiteOptions struct { +	CheckName *string `url:"check_name,omitempty"` // Filters checks suites by the name of the check run. +	AppID     *int    `url:"app_id,omitempty"`     // Filters check suites by GitHub App id. + +	ListOptions +} + +// ListCheckSuiteResults represents the result of a check run list. +type ListCheckSuiteResults struct { +	Total       *int          `json:"total_count,omitempty"` +	CheckSuites []*CheckSuite `json:"check_suites,omitempty"` +} + +// ListCheckSuitesForRef lists check suite for a specific ref. +// +// GitHub API docs: https://developer.github.com/v3/checks/suites/#list-check-suites-for-a-specific-ref +func (s *ChecksService) ListCheckSuitesForRef(ctx context.Context, owner, repo, ref string, opt *ListCheckSuiteOptions) (*ListCheckSuiteResults, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/commits/%v/check-suites", owner, repo, ref) +	u, err := addOptions(u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	req.Header.Set("Accept", mediaTypeCheckRunsPreview) + +	var checkSuiteResults *ListCheckSuiteResults +	resp, err := s.client.Do(ctx, req, &checkSuiteResults) +	if err != nil { +		return nil, resp, err +	} + +	return checkSuiteResults, resp, nil +} + +// AutoTriggerCheck enables or disables automatic creation of CheckSuite events upon pushes to the repository. +type AutoTriggerCheck struct { +	AppID   *int64 `json:"app_id,omitempty"`  // The id of the GitHub App. (Required.) +	Setting *bool  `json:"setting,omitempty"` // Set to "true" to enable automatic creation of CheckSuite events upon pushes to the repository, or "false" to disable them. Default: "true" (Required.) +} + +// CheckSuitePreferenceOptions set options for check suite preferences for a repository. +type CheckSuitePreferenceOptions struct { +	PreferenceList *PreferenceList `json:"auto_trigger_checks,omitempty"` // A list of auto trigger checks that can be set for a check suite in a repository. +} + +// CheckSuitePreferenceResults represents the results of the preference set operation. +type CheckSuitePreferenceResults struct { +	Preferences *PreferenceList `json:"preferences,omitempty"` +	Repository  *Repository     `json:"repository,omitempty"` +} + +// PreferenceList represents a list of auto trigger checks for  repository +type PreferenceList struct { +	AutoTriggerChecks []*AutoTriggerCheck `json:"auto_trigger_checks,omitempty"` // A slice of auto trigger checks that can be set for a check suite in a repository. +} + +// SetCheckSuitePreferences changes the default automatic flow when creating check suites. +// +// GitHub API docs: https://developer.github.com/v3/checks/suites/#set-preferences-for-check-suites-on-a-repository +func (s *ChecksService) SetCheckSuitePreferences(ctx context.Context, owner, repo string, opt CheckSuitePreferenceOptions) (*CheckSuitePreferenceResults, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/check-suites/preferences", owner, repo) +	req, err := s.client.NewRequest("PATCH", u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req.Header.Set("Accept", mediaTypeCheckRunsPreview) + +	var checkSuitePrefResults *CheckSuitePreferenceResults +	resp, err := s.client.Do(ctx, req, &checkSuitePrefResults) +	if err != nil { +		return nil, resp, err +	} + +	return checkSuitePrefResults, resp, nil +} + +// CreateCheckSuiteOptions sets up parameters to manually create a check suites +type CreateCheckSuiteOptions struct { +	HeadSHA    string  `json:"head_sha"`              // The sha of the head commit. (Required.) +	HeadBranch *string `json:"head_branch,omitempty"` // The name of the head branch where the code changes are implemented. +} + +// CreateCheckSuite manually creates a check suite for a repository. +// +// GitHub API docs: https://developer.github.com/v3/checks/suites/#create-a-check-suite +func (s *ChecksService) CreateCheckSuite(ctx context.Context, owner, repo string, opt CreateCheckSuiteOptions) (*CheckSuite, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/check-suites", owner, repo) +	req, err := s.client.NewRequest("POST", u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req.Header.Set("Accept", mediaTypeCheckRunsPreview) + +	checkSuite := new(CheckSuite) +	resp, err := s.client.Do(ctx, req, checkSuite) +	if err != nil { +		return nil, resp, err +	} + +	return checkSuite, resp, nil +} + +// RequestCheckSuiteOptions sets up the parameters for a request check suite endpoint. +type RequestCheckSuiteOptions struct { +	HeadSHA string `json:"head_sha"` // The sha of the head commit. (Required.) +} + +// RequestCheckSuite triggers GitHub to create a new check suite, without pushing new code to a repository. +// +// GitHub API docs: https://developer.github.com/v3/checks/suites/#request-check-suites +func (s *ChecksService) RequestCheckSuite(ctx context.Context, owner, repo string, opt RequestCheckSuiteOptions) (*Response, error) { +	u := fmt.Sprintf("repos/%v/%v/check-suite-requests", owner, repo) +	u, err := addOptions(u, opt) +	if err != nil { +		return nil, err +	} + +	req, err := s.client.NewRequest("POST", u, nil) +	if err != nil { +		return nil, err +	} + +	req.Header.Set("Accept", mediaTypeCheckRunsPreview) + +	resp, err := s.client.Do(ctx, req, nil) +	return resp, err +} diff --git a/vendor/github.com/google/go-github/github/event_types.go b/vendor/github.com/google/go-github/github/event_types.go index 17c2b10..d68bf58 100644 --- a/vendor/github.com/google/go-github/github/event_types.go +++ b/vendor/github.com/google/go-github/github/event_types.go @@ -7,6 +7,38 @@  package github +// CheckRunEvent is triggered when a check run is "created", "updated", or "re-requested". +// The Webhook event name is "check_run". +// +// GitHub API docs: https://developer.github.com/v3/activity/events/types/#checkrunevent +type CheckRunEvent struct { +	CheckRun *CheckRun `json:"check_run,omitempty"` +	// The action performed. Can be "created", "updated" or "re-requested". +	Action *string `json:"action,omitempty"` + +	// The following fields are only populated by Webhook events. +	Repo         *Repository   `json:"repository,omitempty"` +	Org          *Organization `json:"organization,omitempty"` +	Sender       *User         `json:"sender,omitempty"` +	Installation *Installation `json:"installation,omitempty"` +} + +// CheckSuiteEvent is triggered when a check suite is "completed", "requested", or "re-requested". +// The Webhook event name is "check_suite". +// +// GitHub API docs: https://developer.github.com/v3/activity/events/types/#checksuiteevent +type CheckSuiteEvent struct { +	CheckSuite *CheckSuite `json:"check_suite,omitempty"` +	// The action performed. Can be "completed", "requested" or "re-requested". +	Action *string `json:"action,omitempty"` + +	// The following fields are only populated by Webhook events. +	Repo         *Repository   `json:"repository,omitempty"` +	Org          *Organization `json:"organization,omitempty"` +	Sender       *User         `json:"sender,omitempty"` +	Installation *Installation `json:"installation,omitempty"` +} +  // CommitCommentEvent is triggered when a commit comment is created.  // The Webhook event name is "commit_comment".  // @@ -194,6 +226,7 @@ type TeamChange struct {  type InstallationEvent struct {  	// The action that was performed. Can be either "created" or "deleted".  	Action       *string       `json:"action,omitempty"` +	Repositories []*Repository `json:"repositories,omitempty"`  	Sender       *User         `json:"sender,omitempty"`  	Installation *Installation `json:"installation,omitempty"`  } @@ -597,38 +630,39 @@ func (p PushEventCommit) String() string {  // PushEventRepository represents the repo object in a PushEvent payload.  type PushEventRepository struct { -	ID              *int64              `json:"id,omitempty"` -	Name            *string             `json:"name,omitempty"` -	FullName        *string             `json:"full_name,omitempty"` -	Owner           *PushEventRepoOwner `json:"owner,omitempty"` -	Private         *bool               `json:"private,omitempty"` -	Description     *string             `json:"description,omitempty"` -	Fork            *bool               `json:"fork,omitempty"` -	CreatedAt       *Timestamp          `json:"created_at,omitempty"` -	PushedAt        *Timestamp          `json:"pushed_at,omitempty"` -	UpdatedAt       *Timestamp          `json:"updated_at,omitempty"` -	Homepage        *string             `json:"homepage,omitempty"` -	Size            *int                `json:"size,omitempty"` -	StargazersCount *int                `json:"stargazers_count,omitempty"` -	WatchersCount   *int                `json:"watchers_count,omitempty"` -	Language        *string             `json:"language,omitempty"` -	HasIssues       *bool               `json:"has_issues,omitempty"` -	HasDownloads    *bool               `json:"has_downloads,omitempty"` -	HasWiki         *bool               `json:"has_wiki,omitempty"` -	HasPages        *bool               `json:"has_pages,omitempty"` -	ForksCount      *int                `json:"forks_count,omitempty"` -	OpenIssuesCount *int                `json:"open_issues_count,omitempty"` -	DefaultBranch   *string             `json:"default_branch,omitempty"` -	MasterBranch    *string             `json:"master_branch,omitempty"` -	Organization    *string             `json:"organization,omitempty"` -	URL             *string             `json:"url,omitempty"` -	ArchiveURL      *string             `json:"archive_url,omitempty"` -	HTMLURL         *string             `json:"html_url,omitempty"` -	StatusesURL     *string             `json:"statuses_url,omitempty"` -	GitURL          *string             `json:"git_url,omitempty"` -	SSHURL          *string             `json:"ssh_url,omitempty"` -	CloneURL        *string             `json:"clone_url,omitempty"` -	SVNURL          *string             `json:"svn_url,omitempty"` +	ID              *int64     `json:"id,omitempty"` +	NodeID          *string    `json:"node_id,omitempty"` +	Name            *string    `json:"name,omitempty"` +	FullName        *string    `json:"full_name,omitempty"` +	Owner           *User      `json:"owner,omitempty"` +	Private         *bool      `json:"private,omitempty"` +	Description     *string    `json:"description,omitempty"` +	Fork            *bool      `json:"fork,omitempty"` +	CreatedAt       *Timestamp `json:"created_at,omitempty"` +	PushedAt        *Timestamp `json:"pushed_at,omitempty"` +	UpdatedAt       *Timestamp `json:"updated_at,omitempty"` +	Homepage        *string    `json:"homepage,omitempty"` +	Size            *int       `json:"size,omitempty"` +	StargazersCount *int       `json:"stargazers_count,omitempty"` +	WatchersCount   *int       `json:"watchers_count,omitempty"` +	Language        *string    `json:"language,omitempty"` +	HasIssues       *bool      `json:"has_issues,omitempty"` +	HasDownloads    *bool      `json:"has_downloads,omitempty"` +	HasWiki         *bool      `json:"has_wiki,omitempty"` +	HasPages        *bool      `json:"has_pages,omitempty"` +	ForksCount      *int       `json:"forks_count,omitempty"` +	OpenIssuesCount *int       `json:"open_issues_count,omitempty"` +	DefaultBranch   *string    `json:"default_branch,omitempty"` +	MasterBranch    *string    `json:"master_branch,omitempty"` +	Organization    *string    `json:"organization,omitempty"` +	URL             *string    `json:"url,omitempty"` +	ArchiveURL      *string    `json:"archive_url,omitempty"` +	HTMLURL         *string    `json:"html_url,omitempty"` +	StatusesURL     *string    `json:"statuses_url,omitempty"` +	GitURL          *string    `json:"git_url,omitempty"` +	SSHURL          *string    `json:"ssh_url,omitempty"` +	CloneURL        *string    `json:"clone_url,omitempty"` +	SVNURL          *string    `json:"svn_url,omitempty"`  }  // PushEventRepoOwner is a basic representation of user/org in a PushEvent payload. diff --git a/vendor/github.com/google/go-github/github/gists.go b/vendor/github.com/google/go-github/github/gists.go index 9108b64..15e0bc2 100644 --- a/vendor/github.com/google/go-github/github/gists.go +++ b/vendor/github.com/google/go-github/github/gists.go @@ -114,9 +114,6 @@ func (s *GistsService) List(ctx context.Context, user string, opt *GistListOptio  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	var gists []*Gist  	resp, err := s.client.Do(ctx, req, &gists)  	if err != nil { @@ -140,9 +137,6 @@ func (s *GistsService) ListAll(ctx context.Context, opt *GistListOptions) ([]*Gi  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	var gists []*Gist  	resp, err := s.client.Do(ctx, req, &gists)  	if err != nil { @@ -166,9 +160,6 @@ func (s *GistsService) ListStarred(ctx context.Context, opt *GistListOptions) ([  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	var gists []*Gist  	resp, err := s.client.Do(ctx, req, &gists)  	if err != nil { @@ -188,9 +179,6 @@ func (s *GistsService) Get(ctx context.Context, id string) (*Gist, *Response, er  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	gist := new(Gist)  	resp, err := s.client.Do(ctx, req, gist)  	if err != nil { @@ -210,9 +198,6 @@ func (s *GistsService) GetRevision(ctx context.Context, id, sha string) (*Gist,  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	gist := new(Gist)  	resp, err := s.client.Do(ctx, req, gist)  	if err != nil { @@ -232,9 +217,6 @@ func (s *GistsService) Create(ctx context.Context, gist *Gist) (*Gist, *Response  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	g := new(Gist)  	resp, err := s.client.Do(ctx, req, g)  	if err != nil { @@ -254,9 +236,6 @@ func (s *GistsService) Edit(ctx context.Context, id string, gist *Gist) (*Gist,  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	g := new(Gist)  	resp, err := s.client.Do(ctx, req, g)  	if err != nil { @@ -281,9 +260,6 @@ func (s *GistsService) ListCommits(ctx context.Context, id string, opt *ListOpti  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	var gistCommits []*GistCommit  	resp, err := s.client.Do(ctx, req, &gistCommits)  	if err != nil { @@ -353,9 +329,6 @@ func (s *GistsService) Fork(ctx context.Context, id string) (*Gist, *Response, e  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	g := new(Gist)  	resp, err := s.client.Do(ctx, req, g)  	if err != nil { @@ -375,9 +348,6 @@ func (s *GistsService) ListForks(ctx context.Context, id string) ([]*GistFork, *  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	var gistForks []*GistFork  	resp, err := s.client.Do(ctx, req, &gistForks)  	if err != nil { diff --git a/vendor/github.com/google/go-github/github/git_blobs.go b/vendor/github.com/google/go-github/github/git_blobs.go index 5290c55..70aee14 100644 --- a/vendor/github.com/google/go-github/github/git_blobs.go +++ b/vendor/github.com/google/go-github/github/git_blobs.go @@ -31,9 +31,6 @@ func (s *GitService) GetBlob(ctx context.Context, owner string, repo string, sha  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	blob := new(Blob)  	resp, err := s.client.Do(ctx, req, blob)  	return blob, resp, err @@ -66,9 +63,6 @@ func (s *GitService) CreateBlob(ctx context.Context, owner string, repo string,  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	t := new(Blob)  	resp, err := s.client.Do(ctx, req, t)  	return t, resp, err diff --git a/vendor/github.com/google/go-github/github/git_commits.go b/vendor/github.com/google/go-github/github/git_commits.go index 2988256..1eb48a8 100644 --- a/vendor/github.com/google/go-github/github/git_commits.go +++ b/vendor/github.com/google/go-github/github/git_commits.go @@ -8,7 +8,6 @@ package github  import (  	"context"  	"fmt" -	"strings"  	"time"  ) @@ -70,8 +69,7 @@ func (s *GitService) GetCommit(ctx context.Context, owner string, repo string, s  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeGitSigningPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeGitSigningPreview)  	c := new(Commit)  	resp, err := s.client.Do(ctx, req, c) @@ -126,9 +124,6 @@ func (s *GitService) CreateCommit(ctx context.Context, owner string, repo string  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	c := new(Commit)  	resp, err := s.client.Do(ctx, req, c)  	if err != nil { diff --git a/vendor/github.com/google/go-github/github/git_refs.go b/vendor/github.com/google/go-github/github/git_refs.go index 0947d86..3b2ced2 100644 --- a/vendor/github.com/google/go-github/github/git_refs.go +++ b/vendor/github.com/google/go-github/github/git_refs.go @@ -63,9 +63,6 @@ func (s *GitService) GetRef(ctx context.Context, owner string, repo string, ref  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	r := new(Reference)  	resp, err := s.client.Do(ctx, req, r)  	if _, ok := err.(*json.UnmarshalTypeError); ok { @@ -97,9 +94,6 @@ func (s *GitService) GetRefs(ctx context.Context, owner string, repo string, ref  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	var rawJSON json.RawMessage  	resp, err := s.client.Do(ctx, req, &rawJSON)  	if err != nil { @@ -154,9 +148,6 @@ func (s *GitService) ListRefs(ctx context.Context, owner, repo string, opt *Refe  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	var rs []*Reference  	resp, err := s.client.Do(ctx, req, &rs)  	if err != nil { @@ -180,9 +171,6 @@ func (s *GitService) CreateRef(ctx context.Context, owner string, repo string, r  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	r := new(Reference)  	resp, err := s.client.Do(ctx, req, r)  	if err != nil { @@ -206,9 +194,6 @@ func (s *GitService) UpdateRef(ctx context.Context, owner string, repo string, r  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	r := new(Reference)  	resp, err := s.client.Do(ctx, req, r)  	if err != nil { diff --git a/vendor/github.com/google/go-github/github/git_tags.go b/vendor/github.com/google/go-github/github/git_tags.go index f3822ff..90398b3 100644 --- a/vendor/github.com/google/go-github/github/git_tags.go +++ b/vendor/github.com/google/go-github/github/git_tags.go @@ -8,7 +8,6 @@ package github  import (  	"context"  	"fmt" -	"strings"  )  // Tag represents a tag object. @@ -45,8 +44,7 @@ func (s *GitService) GetTag(ctx context.Context, owner string, repo string, sha  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeGitSigningPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeGitSigningPreview)  	tag := new(Tag)  	resp, err := s.client.Do(ctx, req, tag) @@ -75,9 +73,6 @@ func (s *GitService) CreateTag(ctx context.Context, owner string, repo string, t  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	t := new(Tag)  	resp, err := s.client.Do(ctx, req, t)  	return t, resp, err diff --git a/vendor/github.com/google/go-github/github/git_trees.go b/vendor/github.com/google/go-github/github/git_trees.go index 4d6809a..4bc2913 100644 --- a/vendor/github.com/google/go-github/github/git_trees.go +++ b/vendor/github.com/google/go-github/github/git_trees.go @@ -14,6 +14,12 @@ import (  type Tree struct {  	SHA     *string     `json:"sha,omitempty"`  	Entries []TreeEntry `json:"tree,omitempty"` + +	// Truncated is true if the number of items in the tree +	// exceeded GitHub's maximum limit and the Entries were truncated +	// in the response. Only populated for requests that fetch +	// trees like Git.GetTree. +	Truncated *bool `json:"truncated,omitempty"`  }  func (t Tree) String() string { diff --git a/vendor/github.com/google/go-github/github/github-accessors.go b/vendor/github.com/google/go-github/github/github-accessors.go index d9939c2..8d03cc9 100644 --- a/vendor/github.com/google/go-github/github/github-accessors.go +++ b/vendor/github.com/google/go-github/github/github-accessors.go @@ -164,6 +164,14 @@ func (a *App) GetName() string {  	return *a.Name  } +// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise. +func (a *App) GetNodeID() string { +	if a == nil || a.NodeID == nil { +		return "" +	} +	return *a.NodeID +} +  // GetOwner returns the Owner field.  func (a *App) GetOwner() *User {  	if a == nil { @@ -364,6 +372,22 @@ func (a *AuthorizationUpdateRequest) GetNoteURL() string {  	return *a.NoteURL  } +// GetAppID returns the AppID field if it's non-nil, zero value otherwise. +func (a *AutoTriggerCheck) GetAppID() int64 { +	if a == nil || a.AppID == nil { +		return 0 +	} +	return *a.AppID +} + +// GetSetting returns the Setting field if it's non-nil, zero value otherwise. +func (a *AutoTriggerCheck) GetSetting() bool { +	if a == nil || a.Setting == nil { +		return false +	} +	return *a.Setting +} +  // GetContent returns the Content field if it's non-nil, zero value otherwise.  func (b *Blob) GetContent() string {  	if b == nil || b.Content == nil { @@ -436,6 +460,438 @@ func (b *Branch) GetProtected() bool {  	return *b.Protected  } +// GetApp returns the App field. +func (c *CheckRun) GetApp() *App { +	if c == nil { +		return nil +	} +	return c.App +} + +// GetCheckSuite returns the CheckSuite field. +func (c *CheckRun) GetCheckSuite() *CheckSuite { +	if c == nil { +		return nil +	} +	return c.CheckSuite +} + +// GetCompletedAt returns the CompletedAt field if it's non-nil, zero value otherwise. +func (c *CheckRun) GetCompletedAt() Timestamp { +	if c == nil || c.CompletedAt == nil { +		return Timestamp{} +	} +	return *c.CompletedAt +} + +// GetConclusion returns the Conclusion field if it's non-nil, zero value otherwise. +func (c *CheckRun) GetConclusion() string { +	if c == nil || c.Conclusion == nil { +		return "" +	} +	return *c.Conclusion +} + +// GetExternalID returns the ExternalID field if it's non-nil, zero value otherwise. +func (c *CheckRun) GetExternalID() string { +	if c == nil || c.ExternalID == nil { +		return "" +	} +	return *c.ExternalID +} + +// GetHeadSHA returns the HeadSHA field if it's non-nil, zero value otherwise. +func (c *CheckRun) GetHeadSHA() string { +	if c == nil || c.HeadSHA == nil { +		return "" +	} +	return *c.HeadSHA +} + +// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise. +func (c *CheckRun) GetHTMLURL() string { +	if c == nil || c.HTMLURL == nil { +		return "" +	} +	return *c.HTMLURL +} + +// GetID returns the ID field if it's non-nil, zero value otherwise. +func (c *CheckRun) GetID() int64 { +	if c == nil || c.ID == nil { +		return 0 +	} +	return *c.ID +} + +// GetName returns the Name field if it's non-nil, zero value otherwise. +func (c *CheckRun) GetName() string { +	if c == nil || c.Name == nil { +		return "" +	} +	return *c.Name +} + +// GetOutput returns the Output field. +func (c *CheckRun) GetOutput() *CheckRunOutput { +	if c == nil { +		return nil +	} +	return c.Output +} + +// GetStartedAt returns the StartedAt field if it's non-nil, zero value otherwise. +func (c *CheckRun) GetStartedAt() Timestamp { +	if c == nil || c.StartedAt == nil { +		return Timestamp{} +	} +	return *c.StartedAt +} + +// GetStatus returns the Status field if it's non-nil, zero value otherwise. +func (c *CheckRun) GetStatus() string { +	if c == nil || c.Status == nil { +		return "" +	} +	return *c.Status +} + +// GetURL returns the URL field if it's non-nil, zero value otherwise. +func (c *CheckRun) GetURL() string { +	if c == nil || c.URL == nil { +		return "" +	} +	return *c.URL +} + +// GetBlobHRef returns the BlobHRef field if it's non-nil, zero value otherwise. +func (c *CheckRunAnnotation) GetBlobHRef() string { +	if c == nil || c.BlobHRef == nil { +		return "" +	} +	return *c.BlobHRef +} + +// GetEndLine returns the EndLine field if it's non-nil, zero value otherwise. +func (c *CheckRunAnnotation) GetEndLine() int { +	if c == nil || c.EndLine == nil { +		return 0 +	} +	return *c.EndLine +} + +// GetFileName returns the FileName field if it's non-nil, zero value otherwise. +func (c *CheckRunAnnotation) GetFileName() string { +	if c == nil || c.FileName == nil { +		return "" +	} +	return *c.FileName +} + +// GetMessage returns the Message field if it's non-nil, zero value otherwise. +func (c *CheckRunAnnotation) GetMessage() string { +	if c == nil || c.Message == nil { +		return "" +	} +	return *c.Message +} + +// GetRawDetails returns the RawDetails field if it's non-nil, zero value otherwise. +func (c *CheckRunAnnotation) GetRawDetails() string { +	if c == nil || c.RawDetails == nil { +		return "" +	} +	return *c.RawDetails +} + +// GetStartLine returns the StartLine field if it's non-nil, zero value otherwise. +func (c *CheckRunAnnotation) GetStartLine() int { +	if c == nil || c.StartLine == nil { +		return 0 +	} +	return *c.StartLine +} + +// GetTitle returns the Title field if it's non-nil, zero value otherwise. +func (c *CheckRunAnnotation) GetTitle() string { +	if c == nil || c.Title == nil { +		return "" +	} +	return *c.Title +} + +// GetWarningLevel returns the WarningLevel field if it's non-nil, zero value otherwise. +func (c *CheckRunAnnotation) GetWarningLevel() string { +	if c == nil || c.WarningLevel == nil { +		return "" +	} +	return *c.WarningLevel +} + +// GetAction returns the Action field if it's non-nil, zero value otherwise. +func (c *CheckRunEvent) GetAction() string { +	if c == nil || c.Action == nil { +		return "" +	} +	return *c.Action +} + +// GetCheckRun returns the CheckRun field. +func (c *CheckRunEvent) GetCheckRun() *CheckRun { +	if c == nil { +		return nil +	} +	return c.CheckRun +} + +// GetInstallation returns the Installation field. +func (c *CheckRunEvent) GetInstallation() *Installation { +	if c == nil { +		return nil +	} +	return c.Installation +} + +// GetOrg returns the Org field. +func (c *CheckRunEvent) GetOrg() *Organization { +	if c == nil { +		return nil +	} +	return c.Org +} + +// GetRepo returns the Repo field. +func (c *CheckRunEvent) GetRepo() *Repository { +	if c == nil { +		return nil +	} +	return c.Repo +} + +// GetSender returns the Sender field. +func (c *CheckRunEvent) GetSender() *User { +	if c == nil { +		return nil +	} +	return c.Sender +} + +// GetAlt returns the Alt field if it's non-nil, zero value otherwise. +func (c *CheckRunImage) GetAlt() string { +	if c == nil || c.Alt == nil { +		return "" +	} +	return *c.Alt +} + +// GetCaption returns the Caption field if it's non-nil, zero value otherwise. +func (c *CheckRunImage) GetCaption() string { +	if c == nil || c.Caption == nil { +		return "" +	} +	return *c.Caption +} + +// GetImageURL returns the ImageURL field if it's non-nil, zero value otherwise. +func (c *CheckRunImage) GetImageURL() string { +	if c == nil || c.ImageURL == nil { +		return "" +	} +	return *c.ImageURL +} + +// GetAnnotationsCount returns the AnnotationsCount field if it's non-nil, zero value otherwise. +func (c *CheckRunOutput) GetAnnotationsCount() int { +	if c == nil || c.AnnotationsCount == nil { +		return 0 +	} +	return *c.AnnotationsCount +} + +// GetAnnotationsURL returns the AnnotationsURL field if it's non-nil, zero value otherwise. +func (c *CheckRunOutput) GetAnnotationsURL() string { +	if c == nil || c.AnnotationsURL == nil { +		return "" +	} +	return *c.AnnotationsURL +} + +// GetSummary returns the Summary field if it's non-nil, zero value otherwise. +func (c *CheckRunOutput) GetSummary() string { +	if c == nil || c.Summary == nil { +		return "" +	} +	return *c.Summary +} + +// GetText returns the Text field if it's non-nil, zero value otherwise. +func (c *CheckRunOutput) GetText() string { +	if c == nil || c.Text == nil { +		return "" +	} +	return *c.Text +} + +// GetTitle returns the Title field if it's non-nil, zero value otherwise. +func (c *CheckRunOutput) GetTitle() string { +	if c == nil || c.Title == nil { +		return "" +	} +	return *c.Title +} + +// GetAfterSHA returns the AfterSHA field if it's non-nil, zero value otherwise. +func (c *CheckSuite) GetAfterSHA() string { +	if c == nil || c.AfterSHA == nil { +		return "" +	} +	return *c.AfterSHA +} + +// GetApp returns the App field. +func (c *CheckSuite) GetApp() *App { +	if c == nil { +		return nil +	} +	return c.App +} + +// GetBeforeSHA returns the BeforeSHA field if it's non-nil, zero value otherwise. +func (c *CheckSuite) GetBeforeSHA() string { +	if c == nil || c.BeforeSHA == nil { +		return "" +	} +	return *c.BeforeSHA +} + +// GetConclusion returns the Conclusion field if it's non-nil, zero value otherwise. +func (c *CheckSuite) GetConclusion() string { +	if c == nil || c.Conclusion == nil { +		return "" +	} +	return *c.Conclusion +} + +// GetHeadBranch returns the HeadBranch field if it's non-nil, zero value otherwise. +func (c *CheckSuite) GetHeadBranch() string { +	if c == nil || c.HeadBranch == nil { +		return "" +	} +	return *c.HeadBranch +} + +// GetHeadSHA returns the HeadSHA field if it's non-nil, zero value otherwise. +func (c *CheckSuite) GetHeadSHA() string { +	if c == nil || c.HeadSHA == nil { +		return "" +	} +	return *c.HeadSHA +} + +// GetID returns the ID field if it's non-nil, zero value otherwise. +func (c *CheckSuite) GetID() int64 { +	if c == nil || c.ID == nil { +		return 0 +	} +	return *c.ID +} + +// GetRepository returns the Repository field. +func (c *CheckSuite) GetRepository() *Repository { +	if c == nil { +		return nil +	} +	return c.Repository +} + +// GetStatus returns the Status field if it's non-nil, zero value otherwise. +func (c *CheckSuite) GetStatus() string { +	if c == nil || c.Status == nil { +		return "" +	} +	return *c.Status +} + +// GetURL returns the URL field if it's non-nil, zero value otherwise. +func (c *CheckSuite) GetURL() string { +	if c == nil || c.URL == nil { +		return "" +	} +	return *c.URL +} + +// GetAction returns the Action field if it's non-nil, zero value otherwise. +func (c *CheckSuiteEvent) GetAction() string { +	if c == nil || c.Action == nil { +		return "" +	} +	return *c.Action +} + +// GetCheckSuite returns the CheckSuite field. +func (c *CheckSuiteEvent) GetCheckSuite() *CheckSuite { +	if c == nil { +		return nil +	} +	return c.CheckSuite +} + +// GetInstallation returns the Installation field. +func (c *CheckSuiteEvent) GetInstallation() *Installation { +	if c == nil { +		return nil +	} +	return c.Installation +} + +// GetOrg returns the Org field. +func (c *CheckSuiteEvent) GetOrg() *Organization { +	if c == nil { +		return nil +	} +	return c.Org +} + +// GetRepo returns the Repo field. +func (c *CheckSuiteEvent) GetRepo() *Repository { +	if c == nil { +		return nil +	} +	return c.Repo +} + +// GetSender returns the Sender field. +func (c *CheckSuiteEvent) GetSender() *User { +	if c == nil { +		return nil +	} +	return c.Sender +} + +// GetPreferenceList returns the PreferenceList field. +func (c *CheckSuitePreferenceOptions) GetPreferenceList() *PreferenceList { +	if c == nil { +		return nil +	} +	return c.PreferenceList +} + +// GetPreferences returns the Preferences field. +func (c *CheckSuitePreferenceResults) GetPreferences() *PreferenceList { +	if c == nil { +		return nil +	} +	return c.Preferences +} + +// GetRepository returns the Repository field. +func (c *CheckSuitePreferenceResults) GetRepository() *Repository { +	if c == nil { +		return nil +	} +	return c.Repository +} +  // GetBody returns the Body field if it's non-nil, zero value otherwise.  func (c *CodeOfConduct) GetBody() string {  	if c == nil || c.Body == nil { @@ -1060,6 +1516,14 @@ func (c *CommunityHealthFiles) GetContributing() *Metric {  	return c.Contributing  } +// GetIssueTemplate returns the IssueTemplate field. +func (c *CommunityHealthFiles) GetIssueTemplate() *Metric { +	if c == nil { +		return nil +	} +	return c.IssueTemplate +} +  // GetLicense returns the License field.  func (c *CommunityHealthFiles) GetLicense() *Metric {  	if c == nil { @@ -1068,6 +1532,14 @@ func (c *CommunityHealthFiles) GetLicense() *Metric {  	return c.License  } +// GetPullRequestTemplate returns the PullRequestTemplate field. +func (c *CommunityHealthFiles) GetPullRequestTemplate() *Metric { +	if c == nil { +		return nil +	} +	return c.PullRequestTemplate +} +  // GetReadme returns the Readme field.  func (c *CommunityHealthFiles) GetReadme() *Metric {  	if c == nil { @@ -1260,6 +1732,70 @@ func (c *ContributorStats) GetTotal() int {  	return *c.Total  } +// GetCompletedAt returns the CompletedAt field if it's non-nil, zero value otherwise. +func (c *CreateCheckRunOptions) GetCompletedAt() Timestamp { +	if c == nil || c.CompletedAt == nil { +		return Timestamp{} +	} +	return *c.CompletedAt +} + +// GetConclusion returns the Conclusion field if it's non-nil, zero value otherwise. +func (c *CreateCheckRunOptions) GetConclusion() string { +	if c == nil || c.Conclusion == nil { +		return "" +	} +	return *c.Conclusion +} + +// GetDetailsURL returns the DetailsURL field if it's non-nil, zero value otherwise. +func (c *CreateCheckRunOptions) GetDetailsURL() string { +	if c == nil || c.DetailsURL == nil { +		return "" +	} +	return *c.DetailsURL +} + +// GetExternalID returns the ExternalID field if it's non-nil, zero value otherwise. +func (c *CreateCheckRunOptions) GetExternalID() string { +	if c == nil || c.ExternalID == nil { +		return "" +	} +	return *c.ExternalID +} + +// GetOutput returns the Output field. +func (c *CreateCheckRunOptions) GetOutput() *CheckRunOutput { +	if c == nil { +		return nil +	} +	return c.Output +} + +// GetStartedAt returns the StartedAt field if it's non-nil, zero value otherwise. +func (c *CreateCheckRunOptions) GetStartedAt() Timestamp { +	if c == nil || c.StartedAt == nil { +		return Timestamp{} +	} +	return *c.StartedAt +} + +// GetStatus returns the Status field if it's non-nil, zero value otherwise. +func (c *CreateCheckRunOptions) GetStatus() string { +	if c == nil || c.Status == nil { +		return "" +	} +	return *c.Status +} + +// GetHeadBranch returns the HeadBranch field if it's non-nil, zero value otherwise. +func (c *CreateCheckSuiteOptions) GetHeadBranch() string { +	if c == nil || c.HeadBranch == nil { +		return "" +	} +	return *c.HeadBranch +} +  // GetDescription returns the Description field if it's non-nil, zero value otherwise.  func (c *CreateEvent) GetDescription() string {  	if c == nil || c.Description == nil { @@ -1837,7 +2373,7 @@ func (d *DiscussionComment) GetNodeID() string {  }  // GetNumber returns the Number field if it's non-nil, zero value otherwise. -func (d *DiscussionComment) GetNumber() int64 { +func (d *DiscussionComment) GetNumber() int {  	if d == nil || d.Number == nil {  		return 0  	} @@ -2828,6 +3364,14 @@ func (i *Installation) GetAppID() int64 {  	return *i.AppID  } +// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise. +func (i *Installation) GetCreatedAt() Timestamp { +	if i == nil || i.CreatedAt == nil { +		return Timestamp{} +	} +	return *i.CreatedAt +} +  // GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise.  func (i *Installation) GetHTMLURL() string {  	if i == nil || i.HTMLURL == nil { @@ -2892,6 +3436,14 @@ func (i *Installation) GetTargetType() string {  	return *i.TargetType  } +// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise. +func (i *Installation) GetUpdatedAt() Timestamp { +	if i == nil || i.UpdatedAt == nil { +		return Timestamp{} +	} +	return *i.UpdatedAt +} +  // GetAction returns the Action field if it's non-nil, zero value otherwise.  func (i *InstallationEvent) GetAction() string {  	if i == nil || i.Action == nil { @@ -3060,6 +3612,14 @@ func (i *Invitation) GetTeamCount() int {  	return *i.TeamCount  } +// GetActiveLockReason returns the ActiveLockReason field if it's non-nil, zero value otherwise. +func (i *Issue) GetActiveLockReason() string { +	if i == nil || i.ActiveLockReason == nil { +		return "" +	} +	return *i.ActiveLockReason +} +  // GetAssignee returns the Assignee field.  func (i *Issue) GetAssignee() *User {  	if i == nil { @@ -3460,6 +4020,14 @@ func (i *IssueEvent) GetLabel() *Label {  	return i.Label  } +// GetLockReason returns the LockReason field if it's non-nil, zero value otherwise. +func (i *IssueEvent) GetLockReason() string { +	if i == nil || i.LockReason == nil { +		return "" +	} +	return *i.LockReason +} +  // GetMilestone returns the Milestone field.  func (i *IssueEvent) GetMilestone() *Milestone {  	if i == nil { @@ -3988,6 +4556,62 @@ func (l *License) GetURL() string {  	return *l.URL  } +// GetCheckName returns the CheckName field if it's non-nil, zero value otherwise. +func (l *ListCheckRunsOptions) GetCheckName() string { +	if l == nil || l.CheckName == nil { +		return "" +	} +	return *l.CheckName +} + +// GetFilter returns the Filter field if it's non-nil, zero value otherwise. +func (l *ListCheckRunsOptions) GetFilter() string { +	if l == nil || l.Filter == nil { +		return "" +	} +	return *l.Filter +} + +// GetStatus returns the Status field if it's non-nil, zero value otherwise. +func (l *ListCheckRunsOptions) GetStatus() string { +	if l == nil || l.Status == nil { +		return "" +	} +	return *l.Status +} + +// GetTotal returns the Total field if it's non-nil, zero value otherwise. +func (l *ListCheckRunsResults) GetTotal() int { +	if l == nil || l.Total == nil { +		return 0 +	} +	return *l.Total +} + +// GetAppID returns the AppID field if it's non-nil, zero value otherwise. +func (l *ListCheckSuiteOptions) GetAppID() int { +	if l == nil || l.AppID == nil { +		return 0 +	} +	return *l.AppID +} + +// GetCheckName returns the CheckName field if it's non-nil, zero value otherwise. +func (l *ListCheckSuiteOptions) GetCheckName() string { +	if l == nil || l.CheckName == nil { +		return "" +	} +	return *l.CheckName +} + +// GetTotal returns the Total field if it's non-nil, zero value otherwise. +func (l *ListCheckSuiteResults) GetTotal() int { +	if l == nil || l.Total == nil { +		return 0 +	} +	return *l.Total +} +  // GetAccountsURL returns the AccountsURL field if it's non-nil, zero value otherwise.  func (m *MarketplacePlan) GetAccountsURL() string {  	if m == nil || m.AccountsURL == nil { @@ -5500,6 +6124,38 @@ func (p *Plan) GetSpace() int {  	return *p.Space  } +// GetConfigURL returns the ConfigURL field if it's non-nil, zero value otherwise. +func (p *PreReceiveHook) GetConfigURL() string { +	if p == nil || p.ConfigURL == nil { +		return "" +	} +	return *p.ConfigURL +} + +// GetEnforcement returns the Enforcement field if it's non-nil, zero value otherwise. +func (p *PreReceiveHook) GetEnforcement() string { +	if p == nil || p.Enforcement == nil { +		return "" +	} +	return *p.Enforcement +} + +// GetID returns the ID field if it's non-nil, zero value otherwise. +func (p *PreReceiveHook) GetID() int64 { +	if p == nil || p.ID == nil { +		return 0 +	} +	return *p.ID +} + +// GetName returns the Name field if it's non-nil, zero value otherwise. +func (p *PreReceiveHook) GetName() string { +	if p == nil || p.Name == nil { +		return "" +	} +	return *p.Name +} +  // GetBody returns the Body field if it's non-nil, zero value otherwise.  func (p *Project) GetBody() string {  	if p == nil || p.Body == nil { @@ -5508,6 +6164,14 @@ func (p *Project) GetBody() string {  	return *p.Body  } +// GetColumnsURL returns the ColumnsURL field if it's non-nil, zero value otherwise. +func (p *Project) GetColumnsURL() string { +	if p == nil || p.ColumnsURL == nil { +		return "" +	} +	return *p.ColumnsURL +} +  // GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.  func (p *Project) GetCreatedAt() Timestamp {  	if p == nil || p.CreatedAt == nil { @@ -5524,6 +6188,14 @@ func (p *Project) GetCreator() *User {  	return p.Creator  } +// GetHTMLURL returns the HTMLURL field if it's non-nil, zero value otherwise. +func (p *Project) GetHTMLURL() string { +	if p == nil || p.HTMLURL == nil { +		return "" +	} +	return *p.HTMLURL +} +  // GetID returns the ID field if it's non-nil, zero value otherwise.  func (p *Project) GetID() int64 {  	if p == nil || p.ID == nil { @@ -5564,6 +6236,14 @@ func (p *Project) GetOwnerURL() string {  	return *p.OwnerURL  } +// GetState returns the State field if it's non-nil, zero value otherwise. +func (p *Project) GetState() string { +	if p == nil || p.State == nil { +		return "" +	} +	return *p.State +} +  // GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise.  func (p *Project) GetUpdatedAt() Timestamp {  	if p == nil || p.UpdatedAt == nil { @@ -5580,6 +6260,14 @@ func (p *Project) GetURL() string {  	return *p.URL  } +// GetArchived returns the Archived field if it's non-nil, zero value otherwise. +func (p *ProjectCard) GetArchived() bool { +	if p == nil || p.Archived == nil { +		return false +	} +	return *p.Archived +} +  // GetColumnID returns the ColumnID field if it's non-nil, zero value otherwise.  func (p *ProjectCard) GetColumnID() int64 {  	if p == nil || p.ColumnID == nil { @@ -5724,6 +6412,30 @@ func (p *ProjectCardEvent) GetSender() *User {  	return p.Sender  } +// GetArchivedState returns the ArchivedState field if it's non-nil, zero value otherwise. +func (p *ProjectCardListOptions) GetArchivedState() string { +	if p == nil || p.ArchivedState == nil { +		return "" +	} +	return *p.ArchivedState +} + +// GetArchived returns the Archived field if it's non-nil, zero value otherwise. +func (p *ProjectCardOptions) GetArchived() bool { +	if p == nil || p.Archived == nil { +		return false +	} +	return *p.Archived +} + +// GetCardsURL returns the CardsURL field if it's non-nil, zero value otherwise. +func (p *ProjectColumn) GetCardsURL() string { +	if p == nil || p.CardsURL == nil { +		return "" +	} +	return *p.CardsURL +} +  // GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise.  func (p *ProjectColumn) GetCreatedAt() Timestamp {  	if p == nil || p.CreatedAt == nil { @@ -5772,6 +6484,14 @@ func (p *ProjectColumn) GetUpdatedAt() Timestamp {  	return *p.UpdatedAt  } +// GetURL returns the URL field if it's non-nil, zero value otherwise. +func (p *ProjectColumn) GetURL() string { +	if p == nil || p.URL == nil { +		return "" +	} +	return *p.URL +} +  // GetAction returns the Action field if it's non-nil, zero value otherwise.  func (p *ProjectColumnEvent) GetAction() string {  	if p == nil || p.Action == nil { @@ -5892,6 +6612,46 @@ func (p *ProjectEvent) GetSender() *User {  	return p.Sender  } +// GetBody returns the Body field if it's non-nil, zero value otherwise. +func (p *ProjectOptions) GetBody() string { +	if p == nil || p.Body == nil { +		return "" +	} +	return *p.Body +} + +// GetName returns the Name field if it's non-nil, zero value otherwise. +func (p *ProjectOptions) GetName() string { +	if p == nil || p.Name == nil { +		return "" +	} +	return *p.Name +} + +// GetOrganizationPermission returns the OrganizationPermission field if it's non-nil, zero value otherwise. +func (p *ProjectOptions) GetOrganizationPermission() string { +	if p == nil || p.OrganizationPermission == nil { +		return "" +	} +	return *p.OrganizationPermission +} + +// GetPublic returns the Public field if it's non-nil, zero value otherwise. +func (p *ProjectOptions) GetPublic() bool { +	if p == nil || p.Public == nil { +		return false +	} +	return *p.Public +} + +// GetState returns the State field if it's non-nil, zero value otherwise. +func (p *ProjectOptions) GetState() string { +	if p == nil || p.State == nil { +		return "" +	} +	return *p.State +} +  // GetEnforceAdmins returns the EnforceAdmins field.  func (p *Protection) GetEnforceAdmins() *AdminEnforcement {  	if p == nil { @@ -5972,6 +6732,14 @@ func (p *PublicEvent) GetSender() *User {  	return p.Sender  } +// GetActiveLockReason returns the ActiveLockReason field if it's non-nil, zero value otherwise. +func (p *PullRequest) GetActiveLockReason() string { +	if p == nil || p.ActiveLockReason == nil { +		return "" +	} +	return *p.ActiveLockReason +} +  // GetAdditions returns the Additions field if it's non-nil, zero value otherwise.  func (p *PullRequest) GetAdditions() int {  	if p == nil || p.Additions == nil { @@ -7244,6 +8012,14 @@ func (p *PushEventRepository) GetName() string {  	return *p.Name  } +// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise. +func (p *PushEventRepository) GetNodeID() string { +	if p == nil || p.NodeID == nil { +		return "" +	} +	return *p.NodeID +} +  // GetOpenIssuesCount returns the OpenIssuesCount field if it's non-nil, zero value otherwise.  func (p *PushEventRepository) GetOpenIssuesCount() int {  	if p == nil || p.OpenIssuesCount == nil { @@ -7261,7 +8037,7 @@ func (p *PushEventRepository) GetOrganization() string {  }  // GetOwner returns the Owner field. -func (p *PushEventRepository) GetOwner() *PushEventRepoOwner { +func (p *PushEventRepository) GetOwner() *User {  	if p == nil {  		return nil  	} @@ -8116,6 +8892,14 @@ func (r *Repository) GetNetworkCount() int {  	return *r.NetworkCount  } +// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise. +func (r *Repository) GetNodeID() string { +	if r == nil || r.NodeID == nil { +		return "" +	} +	return *r.NodeID +} +  // GetNotificationsURL returns the NotificationsURL field if it's non-nil, zero value otherwise.  func (r *Repository) GetNotificationsURL() string {  	if r == nil || r.NotificationsURL == nil { @@ -9140,6 +9924,14 @@ func (r *RepoStatus) GetURL() string {  	return *r.URL  } +// GetStrict returns the Strict field if it's non-nil, zero value otherwise. +func (r *RequiredStatusChecksRequest) GetStrict() bool { +	if r == nil || r.Strict == nil { +		return false +	} +	return *r.Strict +} +  // GetName returns the Name field if it's non-nil, zero value otherwise.  func (s *ServiceHook) GetName() string {  	if s == nil || s.Name == nil { @@ -9701,7 +10493,7 @@ func (t *TeamDiscussion) GetBodyVersion() string {  }  // GetCommentsCount returns the CommentsCount field if it's non-nil, zero value otherwise. -func (t *TeamDiscussion) GetCommentsCount() int64 { +func (t *TeamDiscussion) GetCommentsCount() int {  	if t == nil || t.CommentsCount == nil {  		return 0  	} @@ -9749,7 +10541,7 @@ func (t *TeamDiscussion) GetNodeID() string {  }  // GetNumber returns the Number field if it's non-nil, zero value otherwise. -func (t *TeamDiscussion) GetNumber() int64 { +func (t *TeamDiscussion) GetNumber() int {  	if t == nil || t.Number == nil {  		return 0  	} @@ -10188,6 +10980,14 @@ func (t *Tree) GetSHA() string {  	return *t.SHA  } +// GetTruncated returns the Truncated field if it's non-nil, zero value otherwise. +func (t *Tree) GetTruncated() bool { +	if t == nil || t.Truncated == nil { +		return false +	} +	return *t.Truncated +} +  // GetContent returns the Content field if it's non-nil, zero value otherwise.  func (t *TreeEntry) GetContent() string {  	if t == nil || t.Content == nil { @@ -10244,6 +11044,70 @@ func (t *TreeEntry) GetURL() string {  	return *t.URL  } +// GetCompletedAt returns the CompletedAt field if it's non-nil, zero value otherwise. +func (u *UpdateCheckRunOptions) GetCompletedAt() Timestamp { +	if u == nil || u.CompletedAt == nil { +		return Timestamp{} +	} +	return *u.CompletedAt +} + +// GetConclusion returns the Conclusion field if it's non-nil, zero value otherwise. +func (u *UpdateCheckRunOptions) GetConclusion() string { +	if u == nil || u.Conclusion == nil { +		return "" +	} +	return *u.Conclusion +} + +// GetDetailsURL returns the DetailsURL field if it's non-nil, zero value otherwise. +func (u *UpdateCheckRunOptions) GetDetailsURL() string { +	if u == nil || u.DetailsURL == nil { +		return "" +	} +	return *u.DetailsURL +} + +// GetExternalID returns the ExternalID field if it's non-nil, zero value otherwise. +func (u *UpdateCheckRunOptions) GetExternalID() string { +	if u == nil || u.ExternalID == nil { +		return "" +	} +	return *u.ExternalID +} + +// GetHeadBranch returns the HeadBranch field if it's non-nil, zero value otherwise. +func (u *UpdateCheckRunOptions) GetHeadBranch() string { +	if u == nil || u.HeadBranch == nil { +		return "" +	} +	return *u.HeadBranch +} + +// GetHeadSHA returns the HeadSHA field if it's non-nil, zero value otherwise. +func (u *UpdateCheckRunOptions) GetHeadSHA() string { +	if u == nil || u.HeadSHA == nil { +		return "" +	} +	return *u.HeadSHA +} + +// GetOutput returns the Output field. +func (u *UpdateCheckRunOptions) GetOutput() *CheckRunOutput { +	if u == nil { +		return nil +	} +	return u.Output +} + +// GetStatus returns the Status field if it's non-nil, zero value otherwise. +func (u *UpdateCheckRunOptions) GetStatus() string { +	if u == nil || u.Status == nil { +		return "" +	} +	return *u.Status +} +  // GetAvatarURL returns the AvatarURL field if it's non-nil, zero value otherwise.  func (u *User) GetAvatarURL() string {  	if u == nil || u.AvatarURL == nil { @@ -10412,6 +11276,14 @@ func (u *User) GetName() string {  	return *u.Name  } +// GetNodeID returns the NodeID field if it's non-nil, zero value otherwise. +func (u *User) GetNodeID() string { +	if u == nil || u.NodeID == nil { +		return "" +	} +	return *u.NodeID +} +  // GetOrganizationsURL returns the OrganizationsURL field if it's non-nil, zero value otherwise.  func (u *User) GetOrganizationsURL() string {  	if u == nil || u.OrganizationsURL == nil { @@ -10548,6 +11420,22 @@ func (u *User) GetURL() string {  	return *u.URL  } +// GetMessage returns the Message field if it's non-nil, zero value otherwise. +func (u *UserContext) GetMessage() string { +	if u == nil || u.Message == nil { +		return "" +	} +	return *u.Message +} + +// GetOcticon returns the Octicon field if it's non-nil, zero value otherwise. +func (u *UserContext) GetOcticon() string { +	if u == nil || u.Octicon == nil { +		return "" +	} +	return *u.Octicon +} +  // GetEmail returns the Email field if it's non-nil, zero value otherwise.  func (u *UserEmail) GetEmail() string {  	if u == nil || u.Email == nil { @@ -10708,6 +11596,70 @@ func (u *UserLDAPMapping) GetURL() string {  	return *u.URL  } +// GetCreatedAt returns the CreatedAt field if it's non-nil, zero value otherwise. +func (u *UserMigration) GetCreatedAt() string { +	if u == nil || u.CreatedAt == nil { +		return "" +	} +	return *u.CreatedAt +} + +// GetExcludeAttachments returns the ExcludeAttachments field if it's non-nil, zero value otherwise. +func (u *UserMigration) GetExcludeAttachments() bool { +	if u == nil || u.ExcludeAttachments == nil { +		return false +	} +	return *u.ExcludeAttachments +} + +// GetGUID returns the GUID field if it's non-nil, zero value otherwise. +func (u *UserMigration) GetGUID() string { +	if u == nil || u.GUID == nil { +		return "" +	} +	return *u.GUID +} + +// GetID returns the ID field if it's non-nil, zero value otherwise. +func (u *UserMigration) GetID() int64 { +	if u == nil || u.ID == nil { +		return 0 +	} +	return *u.ID +} + +// GetLockRepositories returns the LockRepositories field if it's non-nil, zero value otherwise. +func (u *UserMigration) GetLockRepositories() bool { +	if u == nil || u.LockRepositories == nil { +		return false +	} +	return *u.LockRepositories +} + +// GetState returns the State field if it's non-nil, zero value otherwise. +func (u *UserMigration) GetState() string { +	if u == nil || u.State == nil { +		return "" +	} +	return *u.State +} + +// GetUpdatedAt returns the UpdatedAt field if it's non-nil, zero value otherwise. +func (u *UserMigration) GetUpdatedAt() string { +	if u == nil || u.UpdatedAt == nil { +		return "" +	} +	return *u.UpdatedAt +} + +// GetURL returns the URL field if it's non-nil, zero value otherwise. +func (u *UserMigration) GetURL() string { +	if u == nil || u.URL == nil { +		return "" +	} +	return *u.URL +} +  // GetIncompleteResults returns the IncompleteResults field if it's non-nil, zero value otherwise.  func (u *UsersSearchResult) GetIncompleteResults() bool {  	if u == nil || u.IncompleteResults == nil { diff --git a/vendor/github.com/google/go-github/github/github.go b/vendor/github.com/google/go-github/github/github.go index a0c78aa..0685852 100644 --- a/vendor/github.com/google/go-github/github/github.go +++ b/vendor/github.com/google/go-github/github/github.go @@ -45,15 +45,9 @@ const (  	// Media Type values to access preview APIs -	// https://developer.github.com/changes/2015-03-09-licenses-api/ -	mediaTypeLicensesPreview = "application/vnd.github.drax-preview+json" -  	// https://developer.github.com/changes/2014-12-09-new-attributes-for-stars-api/  	mediaTypeStarringPreview = "application/vnd.github.v3.star+json" -	// https://developer.github.com/changes/2015-11-11-protected-branches-api/ -	mediaTypeProtectedBranchesPreview = "application/vnd.github.loki-preview+json" -  	// https://help.github.com/enterprise/2.4/admin/guides/migrations/exporting-the-github-com-organization-s-repositories/  	mediaTypeMigrationsPreview = "application/vnd.github.wyandotte-preview+json" @@ -99,26 +93,35 @@ const (  	// https://developer.github.com/changes/2017-07-17-update-topics-on-repositories/  	mediaTypeTopicsPreview = "application/vnd.github.mercy-preview+json" -	// https://developer.github.com/v3/apps/marketplace/ -	mediaTypeMarketplacePreview = "application/vnd.github.valkyrie-preview+json" -  	// https://developer.github.com/changes/2017-08-30-preview-nested-teams/  	mediaTypeNestedTeamsPreview = "application/vnd.github.hellcat-preview+json"  	// https://developer.github.com/changes/2017-11-09-repository-transfer-api-preview/  	mediaTypeRepositoryTransferPreview = "application/vnd.github.nightshade-preview+json" -	// https://developer.github.com/changes/2017-12-19-graphql-node-id/ -	mediaTypeGraphQLNodeIDPreview = "application/vnd.github.jean-grey-preview+json" -  	// https://developer.github.com/changes/2018-01-25-organization-invitation-api-preview/  	mediaTypeOrganizationInvitationPreview = "application/vnd.github.dazzler-preview+json" +	// https://developer.github.com/changes/2018-03-16-protected-branches-required-approving-reviews/ +	mediaTypeRequiredApprovingReviewsPreview = "application/vnd.github.luke-cage-preview+json" +  	// https://developer.github.com/changes/2018-02-22-label-description-search-preview/  	mediaTypeLabelDescriptionSearchPreview = "application/vnd.github.symmetra-preview+json"  	// https://developer.github.com/changes/2018-02-07-team-discussions-api/  	mediaTypeTeamDiscussionsPreview = "application/vnd.github.echo-preview+json" + +	// https://developer.github.com/changes/2018-03-21-hovercard-api-preview/ +	mediaTypeHovercardPreview = "application/vnd.github.hagar-preview+json" + +	// https://developer.github.com/changes/2018-01-10-lock-reason-api-preview/ +	mediaTypeLockReasonPreview = "application/vnd.github.sailor-v-preview+json" + +	// https://developer.github.com/changes/2018-05-07-new-checks-api-public-beta/ +	mediaTypeCheckRunsPreview = "application/vnd.github.antiope-preview+json" + +	// https://developer.github.com/enterprise/2.13/v3/repos/pre_receive_hooks/ +	mediaTypePreReceiveHooksPreview = "application/vnd.github.eye-scream-preview"  )  // A Client manages communication with the GitHub API. @@ -147,6 +150,7 @@ type Client struct {  	Admin          *AdminService  	Apps           *AppsService  	Authorizations *AuthorizationsService +	Checks         *ChecksService  	Gists          *GistsService  	Git            *GitService  	Gitignores     *GitignoresService @@ -238,6 +242,7 @@ func NewClient(httpClient *http.Client) *Client {  	c.Admin = (*AdminService)(&c.common)  	c.Apps = (*AppsService)(&c.common)  	c.Authorizations = (*AuthorizationsService)(&c.common) +	c.Checks = (*ChecksService)(&c.common)  	c.Gists = (*GistsService)(&c.common)  	c.Git = (*GitService)(&c.common)  	c.Gitignores = (*GitignoresService)(&c.common) diff --git a/vendor/github.com/google/go-github/github/issues.go b/vendor/github.com/google/go-github/github/issues.go index ded07f0..4753754 100644 --- a/vendor/github.com/google/go-github/github/issues.go +++ b/vendor/github.com/google/go-github/github/issues.go @@ -56,6 +56,10 @@ type Issue struct {  	// TextMatches is only populated from search results that request text matches  	// See: search.go and https://developer.github.com/v3/search/#text-match-metadata  	TextMatches []TextMatch `json:"text_matches,omitempty"` + +	// ActiveLockReason is populated only when LockReason is provided while locking the issue. +	// Possible values are: "off-topic", "too heated", "resolved", and "spam". +	ActiveLockReason *string `json:"active_lock_reason,omitempty"`  }  func (i Issue) String() string { @@ -156,7 +160,7 @@ func (s *IssuesService) listIssues(ctx context.Context, u string, opt *IssueList  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} +	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeLabelDescriptionSearchPreview, mediaTypeLockReasonPreview}  	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))  	var issues []*Issue @@ -224,7 +228,7 @@ func (s *IssuesService) ListByRepo(ctx context.Context, owner string, repo strin  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} +	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeLabelDescriptionSearchPreview, mediaTypeLockReasonPreview}  	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))  	var issues []*Issue @@ -247,7 +251,7 @@ func (s *IssuesService) Get(ctx context.Context, owner string, repo string, numb  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} +	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeLabelDescriptionSearchPreview, mediaTypeLockReasonPreview}  	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))  	issue := new(Issue) @@ -270,8 +274,7 @@ func (s *IssuesService) Create(ctx context.Context, owner string, repo string, i  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeLabelDescriptionSearchPreview)  	i := new(Issue)  	resp, err := s.client.Do(ctx, req, i) @@ -293,8 +296,7 @@ func (s *IssuesService) Edit(ctx context.Context, owner string, repo string, num  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeLabelDescriptionSearchPreview)  	i := new(Issue)  	resp, err := s.client.Do(ctx, req, i) @@ -305,16 +307,29 @@ func (s *IssuesService) Edit(ctx context.Context, owner string, repo string, num  	return i, resp, nil  } +// LockIssueOptions specifies the optional parameters to the +// IssuesService.Lock method. +type LockIssueOptions struct { +	// LockReason specifies the reason to lock this issue. +	// Providing a lock reason can help make it clearer to contributors why an issue +	// was locked. Possible values are: "off-topic", "too heated", "resolved", and "spam". +	LockReason string `json:"lock_reason,omitempty"` +} +  // Lock an issue's conversation.  //  // GitHub API docs: https://developer.github.com/v3/issues/#lock-an-issue -func (s *IssuesService) Lock(ctx context.Context, owner string, repo string, number int) (*Response, error) { +func (s *IssuesService) Lock(ctx context.Context, owner string, repo string, number int, opt *LockIssueOptions) (*Response, error) {  	u := fmt.Sprintf("repos/%v/%v/issues/%d/lock", owner, repo, number) -	req, err := s.client.NewRequest("PUT", u, nil) +	req, err := s.client.NewRequest("PUT", u, opt)  	if err != nil {  		return nil, err  	} +	if opt != nil { +		req.Header.Set("Accept", mediaTypeLockReasonPreview) +	} +  	return s.client.Do(ctx, req, nil)  } diff --git a/vendor/github.com/google/go-github/github/issues_events.go b/vendor/github.com/google/go-github/github/issues_events.go index 55e6d43..f71e463 100644 --- a/vendor/github.com/google/go-github/github/issues_events.go +++ b/vendor/github.com/google/go-github/github/issues_events.go @@ -34,9 +34,13 @@ type IssueEvent struct {  	//       The Actor committed to master a commit mentioning the issue in its commit message.  	//       CommitID holds the SHA1 of the commit.  	// -	//     reopened, locked, unlocked +	//     reopened, unlocked  	//       The Actor did that to the issue.  	// +	//     locked +	//       The Actor locked the issue. +	//       LockReason holds the reason of locking the issue (if provided while locking). +	//  	//     renamed  	//       The Actor changed the issue title from Rename.From to Rename.To.  	// @@ -64,12 +68,13 @@ type IssueEvent struct {  	Issue     *Issue     `json:"issue,omitempty"`  	// Only present on certain events; see above. -	Assignee  *User      `json:"assignee,omitempty"` -	Assigner  *User      `json:"assigner,omitempty"` -	CommitID  *string    `json:"commit_id,omitempty"` -	Milestone *Milestone `json:"milestone,omitempty"` -	Label     *Label     `json:"label,omitempty"` -	Rename    *Rename    `json:"rename,omitempty"` +	Assignee   *User      `json:"assignee,omitempty"` +	Assigner   *User      `json:"assigner,omitempty"` +	CommitID   *string    `json:"commit_id,omitempty"` +	Milestone  *Milestone `json:"milestone,omitempty"` +	Label      *Label     `json:"label,omitempty"` +	Rename     *Rename    `json:"rename,omitempty"` +	LockReason *string    `json:"lock_reason,omitempty"`  }  // ListIssueEvents lists events for the specified issue. @@ -87,6 +92,8 @@ func (s *IssuesService) ListIssueEvents(ctx context.Context, owner, repo string,  		return nil, nil, err  	} +	req.Header.Set("Accept", mediaTypeLockReasonPreview) +  	var events []*IssueEvent  	resp, err := s.client.Do(ctx, req, &events)  	if err != nil { diff --git a/vendor/github.com/google/go-github/github/issues_labels.go b/vendor/github.com/google/go-github/github/issues_labels.go index 4328997..adcbe06 100644 --- a/vendor/github.com/google/go-github/github/issues_labels.go +++ b/vendor/github.com/google/go-github/github/issues_labels.go @@ -8,7 +8,6 @@ package github  import (  	"context"  	"fmt" -	"strings"  )  // Label represents a GitHub label on an Issue @@ -42,8 +41,7 @@ func (s *IssuesService) ListLabels(ctx context.Context, owner string, repo strin  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeLabelDescriptionSearchPreview)  	var labels []*Label  	resp, err := s.client.Do(ctx, req, &labels) @@ -65,8 +63,7 @@ func (s *IssuesService) GetLabel(ctx context.Context, owner string, repo string,  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeLabelDescriptionSearchPreview)  	label := new(Label)  	resp, err := s.client.Do(ctx, req, label) @@ -88,8 +85,7 @@ func (s *IssuesService) CreateLabel(ctx context.Context, owner string, repo stri  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeLabelDescriptionSearchPreview)  	l := new(Label)  	resp, err := s.client.Do(ctx, req, l) @@ -111,8 +107,7 @@ func (s *IssuesService) EditLabel(ctx context.Context, owner string, repo string  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeLabelDescriptionSearchPreview)  	l := new(Label)  	resp, err := s.client.Do(ctx, req, l) @@ -151,8 +146,7 @@ func (s *IssuesService) ListLabelsByIssue(ctx context.Context, owner string, rep  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeLabelDescriptionSearchPreview)  	var labels []*Label  	resp, err := s.client.Do(ctx, req, &labels) @@ -174,8 +168,7 @@ func (s *IssuesService) AddLabelsToIssue(ctx context.Context, owner string, repo  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeLabelDescriptionSearchPreview)  	var l []*Label  	resp, err := s.client.Do(ctx, req, &l) @@ -213,8 +206,7 @@ func (s *IssuesService) ReplaceLabelsForIssue(ctx context.Context, owner string,  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeLabelDescriptionSearchPreview)  	var l []*Label  	resp, err := s.client.Do(ctx, req, &l) @@ -257,8 +249,7 @@ func (s *IssuesService) ListLabelsForMilestone(ctx context.Context, owner string  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeLabelDescriptionSearchPreview)  	var labels []*Label  	resp, err := s.client.Do(ctx, req, &labels) diff --git a/vendor/github.com/google/go-github/github/issues_milestones.go b/vendor/github.com/google/go-github/github/issues_milestones.go index 6af1cc0..ffe9aae 100644 --- a/vendor/github.com/google/go-github/github/issues_milestones.go +++ b/vendor/github.com/google/go-github/github/issues_milestones.go @@ -68,9 +68,6 @@ func (s *IssuesService) ListMilestones(ctx context.Context, owner string, repo s  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	var milestones []*Milestone  	resp, err := s.client.Do(ctx, req, &milestones)  	if err != nil { @@ -90,9 +87,6 @@ func (s *IssuesService) GetMilestone(ctx context.Context, owner string, repo str  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	milestone := new(Milestone)  	resp, err := s.client.Do(ctx, req, milestone)  	if err != nil { @@ -112,9 +106,6 @@ func (s *IssuesService) CreateMilestone(ctx context.Context, owner string, repo  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	m := new(Milestone)  	resp, err := s.client.Do(ctx, req, m)  	if err != nil { @@ -134,9 +125,6 @@ func (s *IssuesService) EditMilestone(ctx context.Context, owner string, repo st  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	m := new(Milestone)  	resp, err := s.client.Do(ctx, req, m)  	if err != nil { diff --git a/vendor/github.com/google/go-github/github/licenses.go b/vendor/github.com/google/go-github/github/licenses.go index e9cd177..1176d3a 100644 --- a/vendor/github.com/google/go-github/github/licenses.go +++ b/vendor/github.com/google/go-github/github/licenses.go @@ -67,9 +67,6 @@ func (s *LicensesService) List(ctx context.Context) ([]*License, *Response, erro  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeLicensesPreview) -  	var licenses []*License  	resp, err := s.client.Do(ctx, req, &licenses)  	if err != nil { @@ -90,9 +87,6 @@ func (s *LicensesService) Get(ctx context.Context, licenseName string) (*License  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeLicensesPreview) -  	license := new(License)  	resp, err := s.client.Do(ctx, req, license)  	if err != nil { diff --git a/vendor/github.com/google/go-github/github/messages.go b/vendor/github.com/google/go-github/github/messages.go index 2396fd4..b8d3380 100644 --- a/vendor/github.com/google/go-github/github/messages.go +++ b/vendor/github.com/google/go-github/github/messages.go @@ -41,6 +41,8 @@ const (  var (  	// eventTypeMapping maps webhooks types to their corresponding go-github struct types.  	eventTypeMapping = map[string]string{ +		"check_run":                   "CheckRunEvent", +		"check_suite":                 "CheckSuiteEvent",  		"commit_comment":              "CommitCommentEvent",  		"create":                      "CreateEvent",  		"delete":                      "DeleteEvent", diff --git a/vendor/github.com/google/go-github/github/migrations_user.go b/vendor/github.com/google/go-github/github/migrations_user.go new file mode 100644 index 0000000..ae53e68 --- /dev/null +++ b/vendor/github.com/google/go-github/github/migrations_user.go @@ -0,0 +1,214 @@ +// Copyright 2018 The go-github AUTHORS. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package github + +import ( +	"context" +	"errors" +	"fmt" +	"net/http" +) + +// UserMigration represents a GitHub migration (archival). +type UserMigration struct { +	ID   *int64  `json:"id,omitempty"` +	GUID *string `json:"guid,omitempty"` +	// State is the current state of a migration. +	// Possible values are: +	//     "pending" which means the migration hasn't started yet, +	//     "exporting" which means the migration is in progress, +	//     "exported" which means the migration finished successfully, or +	//     "failed" which means the migration failed. +	State *string `json:"state,omitempty"` +	// LockRepositories indicates whether repositories are locked (to prevent +	// manipulation) while migrating data. +	LockRepositories *bool `json:"lock_repositories,omitempty"` +	// ExcludeAttachments indicates whether attachments should be excluded from +	// the migration (to reduce migration archive file size). +	ExcludeAttachments *bool         `json:"exclude_attachments,omitempty"` +	URL                *string       `json:"url,omitempty"` +	CreatedAt          *string       `json:"created_at,omitempty"` +	UpdatedAt          *string       `json:"updated_at,omitempty"` +	Repositories       []*Repository `json:"repositories,omitempty"` +} + +func (m UserMigration) String() string { +	return Stringify(m) +} + +// UserMigrationOptions specifies the optional parameters to Migration methods. +type UserMigrationOptions struct { +	// LockRepositories indicates whether repositories should be locked (to prevent +	// manipulation) while migrating data. +	LockRepositories bool + +	// ExcludeAttachments indicates whether attachments should be excluded from +	// the migration (to reduce migration archive file size). +	ExcludeAttachments bool +} + +// startUserMigration represents the body of a StartMigration request. +type startUserMigration struct { +	// Repositories is a slice of repository names to migrate. +	Repositories []string `json:"repositories,omitempty"` + +	// LockRepositories indicates whether repositories should be locked (to prevent +	// manipulation) while migrating data. +	LockRepositories *bool `json:"lock_repositories,omitempty"` + +	// ExcludeAttachments indicates whether attachments should be excluded from +	// the migration (to reduce migration archive file size). +	ExcludeAttachments *bool `json:"exclude_attachments,omitempty"` +} + +// StartUserMigration starts the generation of a migration archive. +// repos is a slice of repository names to migrate. +// +// GitHub API docs: https://developer.github.com/v3/migrations/users/#start-a-user-migration +func (s *MigrationService) StartUserMigration(ctx context.Context, repos []string, opt *UserMigrationOptions) (*UserMigration, *Response, error) { +	u := "user/migrations" + +	body := &startUserMigration{Repositories: repos} +	if opt != nil { +		body.LockRepositories = Bool(opt.LockRepositories) +		body.ExcludeAttachments = Bool(opt.ExcludeAttachments) +	} + +	req, err := s.client.NewRequest("POST", u, body) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypeMigrationsPreview) + +	m := &UserMigration{} +	resp, err := s.client.Do(ctx, req, m) +	if err != nil { +		return nil, resp, err +	} + +	return m, resp, nil +} + +// ListUserMigrations lists the most recent migrations. +// +// GitHub API docs: https://developer.github.com/v3/migrations/users/#get-a-list-of-user-migrations +func (s *MigrationService) ListUserMigrations(ctx context.Context) ([]*UserMigration, *Response, error) { +	u := "user/migrations" + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypeMigrationsPreview) + +	var m []*UserMigration +	resp, err := s.client.Do(ctx, req, &m) +	if err != nil { +		return nil, resp, err +	} + +	return m, resp, nil +} + +// UserMigrationStatus gets the status of a specific migration archive. +// id is the migration ID. +// +// GitHub API docs: https://developer.github.com/v3/migrations/users/#get-the-status-of-a-user-migration +func (s *MigrationService) UserMigrationStatus(ctx context.Context, id int64) (*UserMigration, *Response, error) { +	u := fmt.Sprintf("user/migrations/%v", id) + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypeMigrationsPreview) + +	m := &UserMigration{} +	resp, err := s.client.Do(ctx, req, m) +	if err != nil { +		return nil, resp, err +	} + +	return m, resp, nil +} + +// UserMigrationArchiveURL gets the URL for a specific migration archive. +// id is the migration ID. +// +// GitHub API docs: https://developer.github.com/v3/migrations/users/#download-a-user-migration-archive +func (s *MigrationService) UserMigrationArchiveURL(ctx context.Context, id int64) (string, error) { +	url := fmt.Sprintf("user/migrations/%v/archive", id) + +	req, err := s.client.NewRequest("GET", url, nil) +	if err != nil { +		return "", err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypeMigrationsPreview) + +	m := &UserMigration{} + +	var loc string +	originalRedirect := s.client.client.CheckRedirect +	s.client.client.CheckRedirect = func(req *http.Request, via []*http.Request) error { +		loc = req.URL.String() +		return http.ErrUseLastResponse +	} +	defer func() { +		s.client.client.CheckRedirect = originalRedirect +	}() +	resp, err := s.client.Do(ctx, req, m) +	if err == nil { +		return "", errors.New("expected redirect, none provided") +	} +	loc = resp.Header.Get("Location") +	return loc, nil +} + +// DeleteUserMigration will delete a previous migration archive. +// id is the migration ID. +// +// GitHub API docs: https://developer.github.com/v3/migrations/users/#delete-a-user-migration-archive +func (s *MigrationService) DeleteUserMigration(ctx context.Context, id int64) (*Response, error) { +	url := fmt.Sprintf("user/migrations/%v/archive", id) + +	req, err := s.client.NewRequest("DELETE", url, nil) +	if err != nil { +		return nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypeMigrationsPreview) + +	return s.client.Do(ctx, req, nil) +} + +// UnlockUserRepository will unlock a repo that was locked for migration. +// id is migration ID. +// You should unlock each migrated repository and delete them when the migration +// is complete and you no longer need the source data. +// +// GitHub API docs: https://developer.github.com/v3/migrations/users/#unlock-a-user-repository +func (s *MigrationService) UnlockUserRepo(ctx context.Context, id int64, repo string) (*Response, error) { +	url := fmt.Sprintf("user/migrations/%v/repos/%v/lock", id, repo) + +	req, err := s.client.NewRequest("DELETE", url, nil) +	if err != nil { +		return nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypeMigrationsPreview) + +	return s.client.Do(ctx, req, nil) +} diff --git a/vendor/github.com/google/go-github/github/orgs.go b/vendor/github.com/google/go-github/github/orgs.go index 7832053..044dff5 100644 --- a/vendor/github.com/google/go-github/github/orgs.go +++ b/vendor/github.com/google/go-github/github/orgs.go @@ -21,6 +21,7 @@ type OrganizationsService service  type Organization struct {  	Login             *string    `json:"login,omitempty"`  	ID                *int64     `json:"id,omitempty"` +	NodeID            *string    `json:"node_id,omitempty"`  	AvatarURL         *string    `json:"avatar_url,omitempty"`  	HTMLURL           *string    `json:"html_url,omitempty"`  	Name              *string    `json:"name,omitempty"` @@ -43,7 +44,6 @@ type Organization struct {  	BillingEmail      *string    `json:"billing_email,omitempty"`  	Type              *string    `json:"type,omitempty"`  	Plan              *Plan      `json:"plan,omitempty"` -	NodeID            *string    `json:"node_id,omitempty"`  	// API URLs  	URL              *string `json:"url,omitempty"` @@ -101,9 +101,6 @@ func (s *OrganizationsService) ListAll(ctx context.Context, opt *OrganizationsLi  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	orgs := []*Organization{}  	resp, err := s.client.Do(ctx, req, &orgs)  	if err != nil { @@ -133,9 +130,6 @@ func (s *OrganizationsService) List(ctx context.Context, user string, opt *ListO  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	var orgs []*Organization  	resp, err := s.client.Do(ctx, req, &orgs)  	if err != nil { @@ -155,9 +149,6 @@ func (s *OrganizationsService) Get(ctx context.Context, org string) (*Organizati  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	organization := new(Organization)  	resp, err := s.client.Do(ctx, req, organization)  	if err != nil { @@ -177,9 +168,6 @@ func (s *OrganizationsService) GetByID(ctx context.Context, id int64) (*Organiza  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	organization := new(Organization)  	resp, err := s.client.Do(ctx, req, organization)  	if err != nil { @@ -199,9 +187,6 @@ func (s *OrganizationsService) Edit(ctx context.Context, name string, org *Organ  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	o := new(Organization)  	resp, err := s.client.Do(ctx, req, o)  	if err != nil { diff --git a/vendor/github.com/google/go-github/github/orgs_members.go b/vendor/github.com/google/go-github/github/orgs_members.go index 98e138e..d184359 100644 --- a/vendor/github.com/google/go-github/github/orgs_members.go +++ b/vendor/github.com/google/go-github/github/orgs_members.go @@ -59,7 +59,7 @@ type ListMembersOptions struct {  	// Possible values are:  	//     all - all members of the organization, regardless of role  	//     admin - organization owners -	//     member - non-organization members +	//     member - non-owner organization members  	//  	// Default is "all".  	Role string `url:"role,omitempty"` diff --git a/vendor/github.com/google/go-github/github/orgs_teams.go b/vendor/github.com/google/go-github/github/orgs_teams.go deleted file mode 100644 index b3cc9f0..0000000 --- a/vendor/github.com/google/go-github/github/orgs_teams.go +++ /dev/null @@ -1,514 +0,0 @@ -// Copyright 2013 The go-github AUTHORS. All rights reserved. -// -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package github - -import ( -	"context" -	"fmt" -	"strings" -	"time" -) - -// Team represents a team within a GitHub organization. Teams are used to -// manage access to an organization's repositories. -type Team struct { -	ID          *int64  `json:"id,omitempty"` -	Name        *string `json:"name,omitempty"` -	Description *string `json:"description,omitempty"` -	URL         *string `json:"url,omitempty"` -	Slug        *string `json:"slug,omitempty"` - -	// Permission specifies the default permission for repositories owned by the team. -	Permission *string `json:"permission,omitempty"` - -	// Privacy identifies the level of privacy this team should have. -	// Possible values are: -	//     secret - only visible to organization owners and members of this team -	//     closed - visible to all members of this organization -	// Default is "secret". -	Privacy *string `json:"privacy,omitempty"` - -	MembersCount    *int          `json:"members_count,omitempty"` -	ReposCount      *int          `json:"repos_count,omitempty"` -	Organization    *Organization `json:"organization,omitempty"` -	MembersURL      *string       `json:"members_url,omitempty"` -	RepositoriesURL *string       `json:"repositories_url,omitempty"` -	Parent          *Team         `json:"parent,omitempty"` - -	// LDAPDN is only available in GitHub Enterprise and when the team -	// membership is synchronized with LDAP. -	LDAPDN *string `json:"ldap_dn,omitempty"` -} - -func (t Team) String() string { -	return Stringify(t) -} - -// Invitation represents a team member's invitation status. -type Invitation struct { -	ID    *int64  `json:"id,omitempty"` -	Login *string `json:"login,omitempty"` -	Email *string `json:"email,omitempty"` -	// Role can be one of the values - 'direct_member', 'admin', 'billing_manager', 'hiring_manager', or 'reinstate'. -	Role              *string    `json:"role,omitempty"` -	CreatedAt         *time.Time `json:"created_at,omitempty"` -	Inviter           *User      `json:"inviter,omitempty"` -	TeamCount         *int       `json:"team_count,omitempty"` -	InvitationTeamURL *string    `json:"invitation_team_url,omitempty"` -} - -func (i Invitation) String() string { -	return Stringify(i) -} - -// ListTeams lists all of the teams for an organization. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#list-teams -func (s *OrganizationsService) ListTeams(ctx context.Context, org string, opt *ListOptions) ([]*Team, *Response, error) { -	u := fmt.Sprintf("orgs/%v/teams", org) -	u, err := addOptions(u, opt) -	if err != nil { -		return nil, nil, err -	} - -	req, err := s.client.NewRequest("GET", u, nil) -	if err != nil { -		return nil, nil, err -	} - -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) - -	var teams []*Team -	resp, err := s.client.Do(ctx, req, &teams) -	if err != nil { -		return nil, resp, err -	} - -	return teams, resp, nil -} - -// GetTeam fetches a team by ID. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#get-team -func (s *OrganizationsService) GetTeam(ctx context.Context, team int64) (*Team, *Response, error) { -	u := fmt.Sprintf("teams/%v", team) -	req, err := s.client.NewRequest("GET", u, nil) -	if err != nil { -		return nil, nil, err -	} - -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) - -	t := new(Team) -	resp, err := s.client.Do(ctx, req, t) -	if err != nil { -		return nil, resp, err -	} - -	return t, resp, nil -} - -// NewTeam represents a team to be created or modified. -type NewTeam struct { -	Name         string   `json:"name"` // Name of the team. (Required.) -	Description  *string  `json:"description,omitempty"` -	Maintainers  []string `json:"maintainers,omitempty"` -	RepoNames    []string `json:"repo_names,omitempty"` -	ParentTeamID *int64   `json:"parent_team_id,omitempty"` - -	// Deprecated: Permission is deprecated when creating or editing a team in an org -	// using the new GitHub permission model. It no longer identifies the -	// permission a team has on its repos, but only specifies the default -	// permission a repo is initially added with. Avoid confusion by -	// specifying a permission value when calling AddTeamRepo. -	Permission *string `json:"permission,omitempty"` - -	// Privacy identifies the level of privacy this team should have. -	// Possible values are: -	//     secret - only visible to organization owners and members of this team -	//     closed - visible to all members of this organization -	// Default is "secret". -	Privacy *string `json:"privacy,omitempty"` - -	// LDAPDN may be used in GitHub Enterprise when the team membership -	// is synchronized with LDAP. -	LDAPDN *string `json:"ldap_dn,omitempty"` -} - -func (s NewTeam) String() string { -	return Stringify(s) -} - -// CreateTeam creates a new team within an organization. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#create-team -func (s *OrganizationsService) CreateTeam(ctx context.Context, org string, team *NewTeam) (*Team, *Response, error) { -	u := fmt.Sprintf("orgs/%v/teams", org) -	req, err := s.client.NewRequest("POST", u, team) -	if err != nil { -		return nil, nil, err -	} - -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) - -	t := new(Team) -	resp, err := s.client.Do(ctx, req, t) -	if err != nil { -		return nil, resp, err -	} - -	return t, resp, nil -} - -// EditTeam edits a team. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#edit-team -func (s *OrganizationsService) EditTeam(ctx context.Context, id int64, team *NewTeam) (*Team, *Response, error) { -	u := fmt.Sprintf("teams/%v", id) -	req, err := s.client.NewRequest("PATCH", u, team) -	if err != nil { -		return nil, nil, err -	} - -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) - -	t := new(Team) -	resp, err := s.client.Do(ctx, req, t) -	if err != nil { -		return nil, resp, err -	} - -	return t, resp, nil -} - -// DeleteTeam deletes a team. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#delete-team -func (s *OrganizationsService) DeleteTeam(ctx context.Context, team int64) (*Response, error) { -	u := fmt.Sprintf("teams/%v", team) -	req, err := s.client.NewRequest("DELETE", u, nil) -	if err != nil { -		return nil, err -	} - -	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) - -	return s.client.Do(ctx, req, nil) -} - -// OrganizationListTeamMembersOptions specifies the optional parameters to the -// OrganizationsService.ListTeamMembers method. -type OrganizationListTeamMembersOptions struct { -	// Role filters members returned by their role in the team. Possible -	// values are "all", "member", "maintainer". Default is "all". -	Role string `url:"role,omitempty"` - -	ListOptions -} - -// ListChildTeams lists child teams for a team. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#list-child-teams -func (s *OrganizationsService) ListChildTeams(ctx context.Context, teamID int64, opt *ListOptions) ([]*Team, *Response, error) { -	u := fmt.Sprintf("teams/%v/teams", teamID) -	u, err := addOptions(u, opt) -	if err != nil { -		return nil, nil, err -	} - -	req, err := s.client.NewRequest("GET", u, nil) -	if err != nil { -		return nil, nil, err -	} - -	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) - -	var teams []*Team -	resp, err := s.client.Do(ctx, req, &teams) -	if err != nil { -		return nil, resp, err -	} - -	return teams, resp, nil -} - -// ListTeamMembers lists all of the users who are members of the specified -// team. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#list-team-members -func (s *OrganizationsService) ListTeamMembers(ctx context.Context, team int64, opt *OrganizationListTeamMembersOptions) ([]*User, *Response, error) { -	u := fmt.Sprintf("teams/%v/members", team) -	u, err := addOptions(u, opt) -	if err != nil { -		return nil, nil, err -	} - -	req, err := s.client.NewRequest("GET", u, nil) -	if err != nil { -		return nil, nil, err -	} - -	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) - -	var members []*User -	resp, err := s.client.Do(ctx, req, &members) -	if err != nil { -		return nil, resp, err -	} - -	return members, resp, nil -} - -// IsTeamMember checks if a user is a member of the specified team. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#get-team-member -// -// Deprecated: This API has been marked as deprecated in the Github API docs, -// OrganizationsService.GetTeamMembership method should be used instead. -func (s *OrganizationsService) IsTeamMember(ctx context.Context, team int64, user string) (bool, *Response, error) { -	u := fmt.Sprintf("teams/%v/members/%v", team, user) -	req, err := s.client.NewRequest("GET", u, nil) -	if err != nil { -		return false, nil, err -	} - -	resp, err := s.client.Do(ctx, req, nil) -	member, err := parseBoolResponse(err) -	return member, resp, err -} - -// ListTeamRepos lists the repositories that the specified team has access to. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#list-team-repos -func (s *OrganizationsService) ListTeamRepos(ctx context.Context, team int64, opt *ListOptions) ([]*Repository, *Response, error) { -	u := fmt.Sprintf("teams/%v/repos", team) -	u, err := addOptions(u, opt) -	if err != nil { -		return nil, nil, err -	} - -	req, err := s.client.NewRequest("GET", u, nil) -	if err != nil { -		return nil, nil, err -	} - -	// TODO: remove custom Accept header when topics API fully launches. -	headers := []string{mediaTypeTopicsPreview, mediaTypeNestedTeamsPreview} -	req.Header.Set("Accept", strings.Join(headers, ", ")) - -	var repos []*Repository -	resp, err := s.client.Do(ctx, req, &repos) -	if err != nil { -		return nil, resp, err -	} - -	return repos, resp, nil -} - -// IsTeamRepo checks if a team manages the specified repository. If the -// repository is managed by team, a Repository is returned which includes the -// permissions team has for that repo. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#check-if-a-team-manages-a-repository -func (s *OrganizationsService) IsTeamRepo(ctx context.Context, team int64, owner string, repo string) (*Repository, *Response, error) { -	u := fmt.Sprintf("teams/%v/repos/%v/%v", team, owner, repo) -	req, err := s.client.NewRequest("GET", u, nil) -	if err != nil { -		return nil, nil, err -	} - -	headers := []string{mediaTypeOrgPermissionRepo, mediaTypeNestedTeamsPreview} -	req.Header.Set("Accept", strings.Join(headers, ", ")) - -	repository := new(Repository) -	resp, err := s.client.Do(ctx, req, repository) -	if err != nil { -		return nil, resp, err -	} - -	return repository, resp, nil -} - -// OrganizationAddTeamRepoOptions specifies the optional parameters to the -// OrganizationsService.AddTeamRepo method. -type OrganizationAddTeamRepoOptions struct { -	// Permission specifies the permission to grant the team on this repository. -	// Possible values are: -	//     pull - team members can pull, but not push to or administer this repository -	//     push - team members can pull and push, but not administer this repository -	//     admin - team members can pull, push and administer this repository -	// -	// If not specified, the team's permission attribute will be used. -	Permission string `json:"permission,omitempty"` -} - -// AddTeamRepo adds a repository to be managed by the specified team. The -// specified repository must be owned by the organization to which the team -// belongs, or a direct fork of a repository owned by the organization. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#add-team-repo -func (s *OrganizationsService) AddTeamRepo(ctx context.Context, team int64, owner string, repo string, opt *OrganizationAddTeamRepoOptions) (*Response, error) { -	u := fmt.Sprintf("teams/%v/repos/%v/%v", team, owner, repo) -	req, err := s.client.NewRequest("PUT", u, opt) -	if err != nil { -		return nil, err -	} - -	return s.client.Do(ctx, req, nil) -} - -// RemoveTeamRepo removes a repository from being managed by the specified -// team. Note that this does not delete the repository, it just removes it -// from the team. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#remove-team-repo -func (s *OrganizationsService) RemoveTeamRepo(ctx context.Context, team int64, owner string, repo string) (*Response, error) { -	u := fmt.Sprintf("teams/%v/repos/%v/%v", team, owner, repo) -	req, err := s.client.NewRequest("DELETE", u, nil) -	if err != nil { -		return nil, err -	} - -	return s.client.Do(ctx, req, nil) -} - -// ListUserTeams lists a user's teams -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#list-user-teams -func (s *OrganizationsService) ListUserTeams(ctx context.Context, opt *ListOptions) ([]*Team, *Response, error) { -	u := "user/teams" -	u, err := addOptions(u, opt) -	if err != nil { -		return nil, nil, err -	} - -	req, err := s.client.NewRequest("GET", u, nil) -	if err != nil { -		return nil, nil, err -	} - -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) - -	var teams []*Team -	resp, err := s.client.Do(ctx, req, &teams) -	if err != nil { -		return nil, resp, err -	} - -	return teams, resp, nil -} - -// GetTeamMembership returns the membership status for a user in a team. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#get-team-membership -func (s *OrganizationsService) GetTeamMembership(ctx context.Context, team int64, user string) (*Membership, *Response, error) { -	u := fmt.Sprintf("teams/%v/memberships/%v", team, user) -	req, err := s.client.NewRequest("GET", u, nil) -	if err != nil { -		return nil, nil, err -	} - -	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) - -	t := new(Membership) -	resp, err := s.client.Do(ctx, req, t) -	if err != nil { -		return nil, resp, err -	} - -	return t, resp, nil -} - -// OrganizationAddTeamMembershipOptions does stuff specifies the optional -// parameters to the OrganizationsService.AddTeamMembership method. -type OrganizationAddTeamMembershipOptions struct { -	// Role specifies the role the user should have in the team. Possible -	// values are: -	//     member - a normal member of the team -	//     maintainer - a team maintainer. Able to add/remove other team -	//                  members, promote other team members to team -	//                  maintainer, and edit the team’s name and description -	// -	// Default value is "member". -	Role string `json:"role,omitempty"` -} - -// AddTeamMembership adds or invites a user to a team. -// -// In order to add a membership between a user and a team, the authenticated -// user must have 'admin' permissions to the team or be an owner of the -// organization that the team is associated with. -// -// If the user is already a part of the team's organization (meaning they're on -// at least one other team in the organization), this endpoint will add the -// user to the team. -// -// If the user is completely unaffiliated with the team's organization (meaning -// they're on none of the organization's teams), this endpoint will send an -// invitation to the user via email. This newly-created membership will be in -// the "pending" state until the user accepts the invitation, at which point -// the membership will transition to the "active" state and the user will be -// added as a member of the team. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#add-team-membership -func (s *OrganizationsService) AddTeamMembership(ctx context.Context, team int64, user string, opt *OrganizationAddTeamMembershipOptions) (*Membership, *Response, error) { -	u := fmt.Sprintf("teams/%v/memberships/%v", team, user) -	req, err := s.client.NewRequest("PUT", u, opt) -	if err != nil { -		return nil, nil, err -	} - -	t := new(Membership) -	resp, err := s.client.Do(ctx, req, t) -	if err != nil { -		return nil, resp, err -	} - -	return t, resp, nil -} - -// RemoveTeamMembership removes a user from a team. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#remove-team-membership -func (s *OrganizationsService) RemoveTeamMembership(ctx context.Context, team int64, user string) (*Response, error) { -	u := fmt.Sprintf("teams/%v/memberships/%v", team, user) -	req, err := s.client.NewRequest("DELETE", u, nil) -	if err != nil { -		return nil, err -	} - -	return s.client.Do(ctx, req, nil) -} - -// ListPendingTeamInvitations get pending invitaion list in team. -// Warning: The API may change without advance notice during the preview period. -// Preview features are not supported for production use. -// -// GitHub API docs: https://developer.github.com/v3/orgs/teams/#list-pending-team-invitations -func (s *OrganizationsService) ListPendingTeamInvitations(ctx context.Context, team int64, opt *ListOptions) ([]*Invitation, *Response, error) { -	u := fmt.Sprintf("teams/%v/invitations", team) -	u, err := addOptions(u, opt) -	if err != nil { -		return nil, nil, err -	} - -	req, err := s.client.NewRequest("GET", u, nil) -	if err != nil { -		return nil, nil, err -	} - -	var pendingInvitations []*Invitation -	resp, err := s.client.Do(ctx, req, &pendingInvitations) -	if err != nil { -		return nil, resp, err -	} - -	return pendingInvitations, resp, nil -} diff --git a/vendor/github.com/google/go-github/github/projects.go b/vendor/github.com/google/go-github/github/projects.go index 409ed4a..76ef1e0 100644 --- a/vendor/github.com/google/go-github/github/projects.go +++ b/vendor/github.com/google/go-github/github/projects.go @@ -8,7 +8,6 @@ package github  import (  	"context"  	"fmt" -	"strings"  )  // ProjectsService provides access to the projects functions in the @@ -19,15 +18,18 @@ type ProjectsService service  // Project represents a GitHub Project.  type Project struct { -	ID        *int64     `json:"id,omitempty"` -	URL       *string    `json:"url,omitempty"` -	OwnerURL  *string    `json:"owner_url,omitempty"` -	Name      *string    `json:"name,omitempty"` -	Body      *string    `json:"body,omitempty"` -	Number    *int       `json:"number,omitempty"` -	CreatedAt *Timestamp `json:"created_at,omitempty"` -	UpdatedAt *Timestamp `json:"updated_at,omitempty"` -	NodeID    *string    `json:"node_id,omitempty"` +	ID         *int64     `json:"id,omitempty"` +	URL        *string    `json:"url,omitempty"` +	HTMLURL    *string    `json:"html_url,omitempty"` +	ColumnsURL *string    `json:"columns_url,omitempty"` +	OwnerURL   *string    `json:"owner_url,omitempty"` +	Name       *string    `json:"name,omitempty"` +	Body       *string    `json:"body,omitempty"` +	Number     *int       `json:"number,omitempty"` +	State      *string    `json:"state,omitempty"` +	CreatedAt  *Timestamp `json:"created_at,omitempty"` +	UpdatedAt  *Timestamp `json:"updated_at,omitempty"` +	NodeID     *string    `json:"node_id,omitempty"`  	// The User object that generated the project.  	Creator *User `json:"creator,omitempty"` @@ -48,8 +50,7 @@ func (s *ProjectsService) GetProject(ctx context.Context, id int64) (*Project, *  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeProjectsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeProjectsPreview)  	project := &Project{}  	resp, err := s.client.Do(ctx, req, project) @@ -65,15 +66,24 @@ func (s *ProjectsService) GetProject(ctx context.Context, id int64) (*Project, *  // ProjectsService.UpdateProject methods.  type ProjectOptions struct {  	// The name of the project. (Required for creation; optional for update.) -	Name string `json:"name,omitempty"` +	Name *string `json:"name,omitempty"`  	// The body of the project. (Optional.) -	Body string `json:"body,omitempty"` +	Body *string `json:"body,omitempty"`  	// The following field(s) are only applicable for update.  	// They should be left with zero values for creation.  	// State of the project. Either "open" or "closed". (Optional.) -	State string `json:"state,omitempty"` +	State *string `json:"state,omitempty"` +	// The permission level that all members of the project's organization +	// will have on this project. +	// Setting the organization permission is only available +	// for organization projects. (Optional.) +	OrganizationPermission *string `json:"organization_permission,omitempty"` +	// Sets visibility of the project within the organization. +	// Setting visibility is only available +	// for organization projects.(Optional.) +	Public *bool `json:"public,omitempty"`  }  // UpdateProject updates a repository project. @@ -87,8 +97,7 @@ func (s *ProjectsService) UpdateProject(ctx context.Context, id int64, opt *Proj  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeProjectsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeProjectsPreview)  	project := &Project{}  	resp, err := s.client.Do(ctx, req, project) @@ -121,7 +130,9 @@ func (s *ProjectsService) DeleteProject(ctx context.Context, id int64) (*Respons  type ProjectColumn struct {  	ID         *int64     `json:"id,omitempty"`  	Name       *string    `json:"name,omitempty"` +	URL        *string    `json:"url,omitempty"`  	ProjectURL *string    `json:"project_url,omitempty"` +	CardsURL   *string    `json:"cards_url,omitempty"`  	CreatedAt  *Timestamp `json:"created_at,omitempty"`  	UpdatedAt  *Timestamp `json:"updated_at,omitempty"`  	NodeID     *string    `json:"node_id,omitempty"` @@ -143,8 +154,7 @@ func (s *ProjectsService) ListProjectColumns(ctx context.Context, projectID int6  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeProjectsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeProjectsPreview)  	columns := []*ProjectColumn{}  	resp, err := s.client.Do(ctx, req, &columns) @@ -166,8 +176,7 @@ func (s *ProjectsService) GetProjectColumn(ctx context.Context, id int64) (*Proj  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeProjectsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeProjectsPreview)  	column := &ProjectColumn{}  	resp, err := s.client.Do(ctx, req, column) @@ -197,8 +206,7 @@ func (s *ProjectsService) CreateProjectColumn(ctx context.Context, projectID int  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeProjectsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeProjectsPreview)  	column := &ProjectColumn{}  	resp, err := s.client.Do(ctx, req, column) @@ -220,8 +228,7 @@ func (s *ProjectsService) UpdateProjectColumn(ctx context.Context, columnID int6  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeProjectsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeProjectsPreview)  	column := &ProjectColumn{}  	resp, err := s.client.Do(ctx, req, column) @@ -285,15 +292,26 @@ type ProjectCard struct {  	CreatedAt  *Timestamp `json:"created_at,omitempty"`  	UpdatedAt  *Timestamp `json:"updated_at,omitempty"`  	NodeID     *string    `json:"node_id,omitempty"` +	Archived   *bool      `json:"archived,omitempty"`  	// The following fields are only populated by Webhook events.  	ColumnID *int64 `json:"column_id,omitempty"`  } +// ProjectCardListOptions specifies the optional parameters to the +// ProjectsService.ListProjectCards method. +type ProjectCardListOptions struct { +	// ArchivedState is used to list all, archived, or not_archived project cards. +	// Defaults to not_archived when you omit this parameter. +	ArchivedState *string `url:"archived_state,omitempty"` + +	ListOptions +} +  // ListProjectCards lists the cards in a column of a GitHub Project.  //  // GitHub API docs: https://developer.github.com/v3/projects/cards/#list-project-cards -func (s *ProjectsService) ListProjectCards(ctx context.Context, columnID int64, opt *ListOptions) ([]*ProjectCard, *Response, error) { +func (s *ProjectsService) ListProjectCards(ctx context.Context, columnID int64, opt *ProjectCardListOptions) ([]*ProjectCard, *Response, error) {  	u := fmt.Sprintf("projects/columns/%v/cards", columnID)  	u, err := addOptions(u, opt)  	if err != nil { @@ -306,8 +324,7 @@ func (s *ProjectsService) ListProjectCards(ctx context.Context, columnID int64,  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeProjectsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeProjectsPreview)  	cards := []*ProjectCard{}  	resp, err := s.client.Do(ctx, req, &cards) @@ -329,8 +346,7 @@ func (s *ProjectsService) GetProjectCard(ctx context.Context, columnID int64) (*  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeProjectsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeProjectsPreview)  	card := &ProjectCard{}  	resp, err := s.client.Do(ctx, req, card) @@ -352,6 +368,9 @@ type ProjectCardOptions struct {  	ContentID int64 `json:"content_id,omitempty"`  	// The type of content to associate with this card. Possible values are: "Issue".  	ContentType string `json:"content_type,omitempty"` +	// Use true to archive a project card. +	// Specify false if you need to restore a previously archived project card. +	Archived *bool `json:"archived,omitempty"`  }  // CreateProjectCard creates a card in the specified column of a GitHub Project. @@ -365,8 +384,7 @@ func (s *ProjectsService) CreateProjectCard(ctx context.Context, columnID int64,  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeProjectsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeProjectsPreview)  	card := &ProjectCard{}  	resp, err := s.client.Do(ctx, req, card) @@ -388,8 +406,7 @@ func (s *ProjectsService) UpdateProjectCard(ctx context.Context, cardID int64, o  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeProjectsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeProjectsPreview)  	card := &ProjectCard{}  	resp, err := s.client.Do(ctx, req, card) diff --git a/vendor/github.com/google/go-github/github/pulls.go b/vendor/github.com/google/go-github/github/pulls.go index 1f34469..a123ec5 100644 --- a/vendor/github.com/google/go-github/github/pulls.go +++ b/vendor/github.com/google/go-github/github/pulls.go @@ -62,6 +62,10 @@ type PullRequest struct {  	Head *PullRequestBranch `json:"head,omitempty"`  	Base *PullRequestBranch `json:"base,omitempty"` + +	// ActiveLockReason is populated only when LockReason is provided while locking the pull request. +	// Possible values are: "off-topic", "too heated", "resolved", and "spam". +	ActiveLockReason *string `json:"active_lock_reason,omitempty"`  }  func (p PullRequest) String() string { @@ -119,7 +123,7 @@ func (s *PullRequestsService) List(ctx context.Context, owner string, repo strin  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} +	acceptHeaders := []string{mediaTypeLabelDescriptionSearchPreview, mediaTypeLockReasonPreview}  	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))  	var pulls []*PullRequest @@ -142,7 +146,7 @@ func (s *PullRequestsService) Get(ctx context.Context, owner string, repo string  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} +	acceptHeaders := []string{mediaTypeLabelDescriptionSearchPreview, mediaTypeLockReasonPreview}  	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))  	pull := new(PullRequest) @@ -201,8 +205,7 @@ func (s *PullRequestsService) Create(ctx context.Context, owner string, repo str  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeLabelDescriptionSearchPreview)  	p := new(PullRequest)  	resp, err := s.client.Do(ctx, req, p) @@ -251,7 +254,7 @@ func (s *PullRequestsService) Edit(ctx context.Context, owner string, repo strin  	}  	// TODO: remove custom Accept header when this API fully launches. -	acceptHeaders := []string{mediaTypeGraphQLNodeIDPreview, mediaTypeLabelDescriptionSearchPreview} +	acceptHeaders := []string{mediaTypeLabelDescriptionSearchPreview, mediaTypeLockReasonPreview}  	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))  	p := new(PullRequest) diff --git a/vendor/github.com/google/go-github/github/pulls_comments.go b/vendor/github.com/google/go-github/github/pulls_comments.go index a7f8ac3..f306776 100644 --- a/vendor/github.com/google/go-github/github/pulls_comments.go +++ b/vendor/github.com/google/go-github/github/pulls_comments.go @@ -14,7 +14,7 @@ import (  // PullRequestComment represents a comment left on a pull request.  type PullRequestComment struct {  	ID                  *int64     `json:"id,omitempty"` -	InReplyTo           *int64     `json:"in_reply_to,omitempty"` +	InReplyTo           *int64     `json:"in_reply_to_id,omitempty"`  	Body                *string    `json:"body,omitempty"`  	Path                *string    `json:"path,omitempty"`  	DiffHunk            *string    `json:"diff_hunk,omitempty"` @@ -129,6 +129,32 @@ func (s *PullRequestsService) CreateComment(ctx context.Context, owner string, r  	return c, resp, nil  } +// CreateCommentInReplyTo creates a new comment as a reply to an existing pull request comment. +// +// GitHub API docs: https://developer.github.com/v3/pulls/comments/#alternative-input +func (s *PullRequestsService) CreateCommentInReplyTo(ctx context.Context, owner string, repo string, number int, body string, commentID int64) (*PullRequestComment, *Response, error) { +	comment := &struct { +		Body      string `json:"body,omitempty"` +		InReplyTo int64  `json:"in_reply_to,omitempty"` +	}{ +		Body:      body, +		InReplyTo: commentID, +	} +	u := fmt.Sprintf("repos/%v/%v/pulls/%d/comments", owner, repo, number) +	req, err := s.client.NewRequest("POST", u, comment) +	if err != nil { +		return nil, nil, err +	} + +	c := new(PullRequestComment) +	resp, err := s.client.Do(ctx, req, c) +	if err != nil { +		return nil, resp, err +	} + +	return c, resp, nil +} +  // EditComment updates a pull request comment.  // A non-nil comment.Body must be provided. Other comment fields should be left nil.  // diff --git a/vendor/github.com/google/go-github/github/reactions.go b/vendor/github.com/google/go-github/github/reactions.go index 19b533f..97b2818 100644 --- a/vendor/github.com/google/go-github/github/reactions.go +++ b/vendor/github.com/google/go-github/github/reactions.go @@ -8,7 +8,6 @@ package github  import (  	"context"  	"fmt" -	"strings"  )  // ReactionsService provides access to the reactions-related functions in the @@ -61,8 +60,7 @@ func (s *ReactionsService) ListCommentReactions(ctx context.Context, owner, repo  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeReactionsPreview)  	var m []*Reaction  	resp, err := s.client.Do(ctx, req, &m) @@ -88,8 +86,7 @@ func (s ReactionsService) CreateCommentReaction(ctx context.Context, owner, repo  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeReactionsPreview)  	m := &Reaction{}  	resp, err := s.client.Do(ctx, req, m) @@ -116,8 +113,7 @@ func (s *ReactionsService) ListIssueReactions(ctx context.Context, owner, repo s  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeReactionsPreview)  	var m []*Reaction  	resp, err := s.client.Do(ctx, req, &m) @@ -143,8 +139,7 @@ func (s ReactionsService) CreateIssueReaction(ctx context.Context, owner, repo s  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeReactionsPreview)  	m := &Reaction{}  	resp, err := s.client.Do(ctx, req, m) @@ -171,8 +166,7 @@ func (s *ReactionsService) ListIssueCommentReactions(ctx context.Context, owner,  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeReactionsPreview)  	var m []*Reaction  	resp, err := s.client.Do(ctx, req, &m) @@ -198,8 +192,7 @@ func (s ReactionsService) CreateIssueCommentReaction(ctx context.Context, owner,  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeReactionsPreview)  	m := &Reaction{}  	resp, err := s.client.Do(ctx, req, m) @@ -226,8 +219,7 @@ func (s *ReactionsService) ListPullRequestCommentReactions(ctx context.Context,  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeReactionsPreview)  	var m []*Reaction  	resp, err := s.client.Do(ctx, req, &m) @@ -253,8 +245,7 @@ func (s ReactionsService) CreatePullRequestCommentReaction(ctx context.Context,  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeReactionsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeReactionsPreview)  	m := &Reaction{}  	resp, err := s.client.Do(ctx, req, m) diff --git a/vendor/github.com/google/go-github/github/repos.go b/vendor/github.com/google/go-github/github/repos.go index aa9b6ac..fe05272 100644 --- a/vendor/github.com/google/go-github/github/repos.go +++ b/vendor/github.com/google/go-github/github/repos.go @@ -20,6 +20,7 @@ type RepositoriesService service  // Repository represents a GitHub repository.  type Repository struct {  	ID               *int64           `json:"id,omitempty"` +	NodeID           *string          `json:"node_id,omitempty"`  	Owner            *User            `json:"owner,omitempty"`  	Name             *string          `json:"name,omitempty"`  	FullName         *string          `json:"full_name,omitempty"` @@ -178,7 +179,7 @@ func (s *RepositoriesService) List(ctx context.Context, user string, opt *Reposi  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeLicensesPreview, mediaTypeCodesOfConductPreview, mediaTypeTopicsPreview} +	acceptHeaders := []string{mediaTypeCodesOfConductPreview, mediaTypeTopicsPreview}  	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))  	var repos []*Repository @@ -216,7 +217,7 @@ func (s *RepositoriesService) ListByOrg(ctx context.Context, org string, opt *Re  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeLicensesPreview, mediaTypeCodesOfConductPreview, mediaTypeTopicsPreview} +	acceptHeaders := []string{mediaTypeCodesOfConductPreview, mediaTypeTopicsPreview}  	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))  	var repos []*Repository @@ -297,7 +298,7 @@ func (s *RepositoriesService) Get(ctx context.Context, owner, repo string) (*Rep  	// TODO: remove custom Accept header when the license support fully launches  	// https://developer.github.com/v3/licenses/#get-a-repositorys-license -	acceptHeaders := []string{mediaTypeLicensesPreview, mediaTypeCodesOfConductPreview, mediaTypeTopicsPreview} +	acceptHeaders := []string{mediaTypeCodesOfConductPreview, mediaTypeTopicsPreview}  	req.Header.Set("Accept", strings.Join(acceptHeaders, ", "))  	repository := new(Repository) @@ -341,10 +342,6 @@ func (s *RepositoriesService) GetByID(ctx context.Context, id int64) (*Repositor  		return nil, nil, err  	} -	// TODO: remove custom Accept header when the license support fully launches -	// https://developer.github.com/v3/licenses/#get-a-repositorys-license -	req.Header.Set("Accept", mediaTypeLicensesPreview) -  	repository := new(Repository)  	resp, err := s.client.Do(ctx, req, repository)  	if err != nil { @@ -557,6 +554,12 @@ type RequiredStatusChecks struct {  	Contexts []string `json:"contexts"`  } +// RequiredStatusChecksRequest represents a request to edit a protected branch's status checks. +type RequiredStatusChecksRequest struct { +	Strict   *bool    `json:"strict,omitempty"` +	Contexts []string `json:"contexts,omitempty"` +} +  // PullRequestReviewsEnforcement represents the pull request reviews enforcement of a protected branch.  type PullRequestReviewsEnforcement struct {  	// Specifies which users and teams can dismiss pull request reviews. @@ -565,6 +568,9 @@ type PullRequestReviewsEnforcement struct {  	DismissStaleReviews bool `json:"dismiss_stale_reviews"`  	// RequireCodeOwnerReviews specifies if an approved review is required in pull requests including files with a designated code owner.  	RequireCodeOwnerReviews bool `json:"require_code_owner_reviews"` +	// RequiredApprovingReviewCount specifies the number of approvals required before the pull request can be merged. +	// Valid values are 1-6. +	RequiredApprovingReviewCount int `json:"required_approving_review_count"`  }  // PullRequestReviewsEnforcementRequest represents request to set the pull request review @@ -579,6 +585,9 @@ type PullRequestReviewsEnforcementRequest struct {  	DismissStaleReviews bool `json:"dismiss_stale_reviews"`  	// RequireCodeOwnerReviews specifies if an approved review is required in pull requests including files with a designated code owner.  	RequireCodeOwnerReviews bool `json:"require_code_owner_reviews"` +	// RequiredApprovingReviewCount specifies the number of approvals required before the pull request can be merged. +	// Valid values are 1-6. +	RequiredApprovingReviewCount int `json:"required_approving_review_count"`  }  // PullRequestReviewsEnforcementUpdate represents request to patch the pull request review @@ -591,6 +600,9 @@ type PullRequestReviewsEnforcementUpdate struct {  	DismissStaleReviews *bool `json:"dismiss_stale_reviews,omitempty"`  	// RequireCodeOwnerReviews specifies if an approved review is required in pull requests including files with a designated code owner.  	RequireCodeOwnerReviews bool `json:"require_code_owner_reviews,omitempty"` +	// RequiredApprovingReviewCount specifies the number of approvals required before the pull request can be merged. +	// Valid values are 1 - 6. +	RequiredApprovingReviewCount int `json:"required_approving_review_count"`  }  // AdminEnforcement represents the configuration to enforce required status checks for repository administrators. @@ -655,7 +667,7 @@ func (s *RepositoriesService) ListBranches(ctx context.Context, owner string, re  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	var branches []*Branch  	resp, err := s.client.Do(ctx, req, &branches) @@ -677,7 +689,7 @@ func (s *RepositoriesService) GetBranch(ctx context.Context, owner, repo, branch  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	b := new(Branch)  	resp, err := s.client.Do(ctx, req, b) @@ -699,7 +711,7 @@ func (s *RepositoriesService) GetBranchProtection(ctx context.Context, owner, re  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	p := new(Protection)  	resp, err := s.client.Do(ctx, req, p) @@ -721,7 +733,7 @@ func (s *RepositoriesService) GetRequiredStatusChecks(ctx context.Context, owner  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	p := new(RequiredStatusChecks)  	resp, err := s.client.Do(ctx, req, p) @@ -743,7 +755,7 @@ func (s *RepositoriesService) ListRequiredStatusChecksContexts(ctx context.Conte  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	resp, err = s.client.Do(ctx, req, &contexts)  	if err != nil { @@ -764,7 +776,7 @@ func (s *RepositoriesService) UpdateBranchProtection(ctx context.Context, owner,  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	p := new(Protection)  	resp, err := s.client.Do(ctx, req, p) @@ -786,11 +798,30 @@ func (s *RepositoriesService) RemoveBranchProtection(ctx context.Context, owner,  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	return s.client.Do(ctx, req, nil)  } +// UpdateRequiredStatusChecks updates the required status checks for a given protected branch. +// +// GitHub API docs: https://developer.github.com/v3/repos/branches/#update-required-status-checks-of-protected-branch +func (s *RepositoriesService) UpdateRequiredStatusChecks(ctx context.Context, owner, repo, branch string, sreq *RequiredStatusChecksRequest) (*RequiredStatusChecks, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/branches/%v/protection/required_status_checks", owner, repo, branch) +	req, err := s.client.NewRequest("PATCH", u, sreq) +	if err != nil { +		return nil, nil, err +	} + +	sc := new(RequiredStatusChecks) +	resp, err := s.client.Do(ctx, req, sc) +	if err != nil { +		return nil, resp, err +	} + +	return sc, resp, nil +} +  // License gets the contents of a repository's license if one is detected.  //  // GitHub API docs: https://developer.github.com/v3/licenses/#get-the-contents-of-a-repositorys-license @@ -821,7 +852,7 @@ func (s *RepositoriesService) GetPullRequestReviewEnforcement(ctx context.Contex  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	r := new(PullRequestReviewsEnforcement)  	resp, err := s.client.Do(ctx, req, r) @@ -844,7 +875,7 @@ func (s *RepositoriesService) UpdatePullRequestReviewEnforcement(ctx context.Con  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	r := new(PullRequestReviewsEnforcement)  	resp, err := s.client.Do(ctx, req, r) @@ -872,7 +903,7 @@ func (s *RepositoriesService) DisableDismissalRestrictions(ctx context.Context,  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	r := new(PullRequestReviewsEnforcement)  	resp, err := s.client.Do(ctx, req, r) @@ -894,7 +925,7 @@ func (s *RepositoriesService) RemovePullRequestReviewEnforcement(ctx context.Con  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	return s.client.Do(ctx, req, nil)  } @@ -910,7 +941,7 @@ func (s *RepositoriesService) GetAdminEnforcement(ctx context.Context, owner, re  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	r := new(AdminEnforcement)  	resp, err := s.client.Do(ctx, req, r) @@ -933,7 +964,7 @@ func (s *RepositoriesService) AddAdminEnforcement(ctx context.Context, owner, re  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	r := new(AdminEnforcement)  	resp, err := s.client.Do(ctx, req, r) @@ -955,7 +986,7 @@ func (s *RepositoriesService) RemoveAdminEnforcement(ctx context.Context, owner,  	}  	// TODO: remove custom Accept header when this API fully launches -	req.Header.Set("Accept", mediaTypeProtectedBranchesPreview) +	req.Header.Set("Accept", mediaTypeRequiredApprovingReviewsPreview)  	return s.client.Do(ctx, req, nil)  } @@ -1018,7 +1049,7 @@ func (s *RepositoriesService) ReplaceAllTopics(ctx context.Context, owner, repo  // TransferRequest represents a request to transfer a repository.  type TransferRequest struct {  	NewOwner string  `json:"new_owner"` -	TeamID   []int64 `json:"team_id,omitempty"` +	TeamID   []int64 `json:"team_ids,omitempty"`  }  // Transfer transfers a repository from one account or organization to another. diff --git a/vendor/github.com/google/go-github/github/repos_commits.go b/vendor/github.com/google/go-github/github/repos_commits.go index 0484737..04faa3e 100644 --- a/vendor/github.com/google/go-github/github/repos_commits.go +++ b/vendor/github.com/google/go-github/github/repos_commits.go @@ -218,7 +218,7 @@ func (s *RepositoriesService) GetCommitSHA1(ctx context.Context, owner, repo, re  // CompareCommits compares a range of commits with each other.  // todo: support media formats - https://github.com/google/go-github/issues/6  // -// GitHub API docs: https://developer.github.com/v3/repos/commits/index.html#compare-two-commits +// GitHub API docs: https://developer.github.com/v3/repos/commits/#compare-two-commits  func (s *RepositoriesService) CompareCommits(ctx context.Context, owner, repo string, base, head string) (*CommitsComparison, *Response, error) {  	u := fmt.Sprintf("repos/%v/%v/compare/%v...%v", owner, repo, base, head) diff --git a/vendor/github.com/google/go-github/github/repos_community_health.go b/vendor/github.com/google/go-github/github/repos_community_health.go index b5c75d6..73d1d57 100644 --- a/vendor/github.com/google/go-github/github/repos_community_health.go +++ b/vendor/github.com/google/go-github/github/repos_community_health.go @@ -21,10 +21,12 @@ type Metric struct {  // CommunityHealthFiles represents the different files in the community health metrics response.  type CommunityHealthFiles struct { -	CodeOfConduct *Metric `json:"code_of_conduct"` -	Contributing  *Metric `json:"contributing"` -	License       *Metric `json:"license"` -	Readme        *Metric `json:"readme"` +	CodeOfConduct       *Metric `json:"code_of_conduct"` +	Contributing        *Metric `json:"contributing"` +	IssueTemplate       *Metric `json:"issue_template"` +	PullRequestTemplate *Metric `json:"pull_request_template"` +	License             *Metric `json:"license"` +	Readme              *Metric `json:"readme"`  }  // CommunityHealthMetrics represents a response containing the community metrics of a repository. diff --git a/vendor/github.com/google/go-github/github/repos_deployments.go b/vendor/github.com/google/go-github/github/repos_deployments.go index 1300f05..794c323 100644 --- a/vendor/github.com/google/go-github/github/repos_deployments.go +++ b/vendor/github.com/google/go-github/github/repos_deployments.go @@ -9,7 +9,6 @@ import (  	"context"  	"encoding/json"  	"fmt" -	"strings"  )  // Deployment represents a deployment in a repo @@ -76,9 +75,6 @@ func (s *RepositoriesService) ListDeployments(ctx context.Context, owner, repo s  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	var deployments []*Deployment  	resp, err := s.client.Do(ctx, req, &deployments)  	if err != nil { @@ -99,9 +95,6 @@ func (s *RepositoriesService) GetDeployment(ctx context.Context, owner, repo str  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	deployment := new(Deployment)  	resp, err := s.client.Do(ctx, req, deployment)  	if err != nil { @@ -123,8 +116,7 @@ func (s *RepositoriesService) CreateDeployment(ctx context.Context, owner, repo  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeDeploymentStatusPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeDeploymentStatusPreview)  	d := new(Deployment)  	resp, err := s.client.Do(ctx, req, d) @@ -176,9 +168,6 @@ func (s *RepositoriesService) ListDeploymentStatuses(ctx context.Context, owner,  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	var statuses []*DeploymentStatus  	resp, err := s.client.Do(ctx, req, &statuses)  	if err != nil { @@ -200,8 +189,7 @@ func (s *RepositoriesService) GetDeploymentStatus(ctx context.Context, owner, re  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeDeploymentStatusPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeDeploymentStatusPreview)  	d := new(DeploymentStatus)  	resp, err := s.client.Do(ctx, req, d) @@ -224,8 +212,7 @@ func (s *RepositoriesService) CreateDeploymentStatus(ctx context.Context, owner,  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeDeploymentStatusPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeDeploymentStatusPreview)  	d := new(DeploymentStatus)  	resp, err := s.client.Do(ctx, req, d) diff --git a/vendor/github.com/google/go-github/github/repos_hooks.go b/vendor/github.com/google/go-github/github/repos_hooks.go index f7ab3a1..1e9e884 100644 --- a/vendor/github.com/google/go-github/github/repos_hooks.go +++ b/vendor/github.com/google/go-github/github/repos_hooks.go @@ -136,9 +136,13 @@ func (s *RepositoriesService) GetHook(ctx context.Context, owner, repo string, i  	if err != nil {  		return nil, nil, err  	} -	hook := new(Hook) -	resp, err := s.client.Do(ctx, req, hook) -	return hook, resp, err +	h := new(Hook) +	resp, err := s.client.Do(ctx, req, h) +	if err != nil { +		return nil, resp, err +	} + +	return h, resp, nil  }  // EditHook updates a specified Hook. @@ -152,7 +156,11 @@ func (s *RepositoriesService) EditHook(ctx context.Context, owner, repo string,  	}  	h := new(Hook)  	resp, err := s.client.Do(ctx, req, h) -	return h, resp, err +	if err != nil { +		return nil, resp, err +	} + +	return h, resp, nil  }  // DeleteHook deletes a specified Hook. diff --git a/vendor/github.com/google/go-github/github/repos_prereceive_hooks.go b/vendor/github.com/google/go-github/github/repos_prereceive_hooks.go new file mode 100644 index 0000000..cab09f7 --- /dev/null +++ b/vendor/github.com/google/go-github/github/repos_prereceive_hooks.go @@ -0,0 +1,110 @@ +// Copyright 2018 The go-github AUTHORS. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package github + +import ( +	"context" +	"fmt" +) + +// PreReceiveHook represents a GitHub pre-receive hook for a repository. +type PreReceiveHook struct { +	ID          *int64  `json:"id,omitempty"` +	Name        *string `json:"name,omitempty"` +	Enforcement *string `json:"enforcement,omitempty"` +	ConfigURL   *string `json:"configuration_url,omitempty"` +} + +func (p PreReceiveHook) String() string { +	return Stringify(p) +} + +// ListPreReceiveHooks lists all pre-receive hooks for the specified repository. +// +// GitHub API docs: https://developer.github.com/enterprise/2.13/v3/repos/pre_receive_hooks/#list-pre-receive-hooks +func (s *RepositoriesService) ListPreReceiveHooks(ctx context.Context, owner, repo string, opt *ListOptions) ([]*PreReceiveHook, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/pre-receive-hooks", owner, repo) +	u, err := addOptions(u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypePreReceiveHooksPreview) + +	var hooks []*PreReceiveHook +	resp, err := s.client.Do(ctx, req, &hooks) +	if err != nil { +		return nil, resp, err +	} + +	return hooks, resp, nil +} + +// GetPreReceiveHook returns a single specified pre-receive hook. +// +// GitHub API docs: https://developer.github.com/enterprise/2.13/v3/repos/pre_receive_hooks/#get-a-single-pre-receive-hook +func (s *RepositoriesService) GetPreReceiveHook(ctx context.Context, owner, repo string, id int64) (*PreReceiveHook, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/pre-receive-hooks/%d", owner, repo, id) +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypePreReceiveHooksPreview) + +	h := new(PreReceiveHook) +	resp, err := s.client.Do(ctx, req, h) +	if err != nil { +		return nil, resp, err +	} + +	return h, resp, nil +} + +// UpdatePreReceiveHook updates a specified pre-receive hook. +// +// GitHub API docs: https://developer.github.com/enterprise/2.13/v3/repos/pre_receive_hooks/#update-pre-receive-hook-enforcement +func (s *RepositoriesService) UpdatePreReceiveHook(ctx context.Context, owner, repo string, id int64, hook *PreReceiveHook) (*PreReceiveHook, *Response, error) { +	u := fmt.Sprintf("repos/%v/%v/pre-receive-hooks/%d", owner, repo, id) +	req, err := s.client.NewRequest("PATCH", u, hook) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypePreReceiveHooksPreview) + +	h := new(PreReceiveHook) +	resp, err := s.client.Do(ctx, req, h) +	if err != nil { +		return nil, resp, err +	} + +	return h, resp, nil +} + +// DeletePreReceiveHook deletes a specified pre-receive hook. +// +// GitHub API docs: https://developer.github.com/enterprise/2.13/v3/repos/pre_receive_hooks/#remove-enforcement-overrides-for-a-pre-receive-hook +func (s *RepositoriesService) DeletePreReceiveHook(ctx context.Context, owner, repo string, id int64) (*Response, error) { +	u := fmt.Sprintf("repos/%v/%v/pre-receive-hooks/%d", owner, repo, id) +	req, err := s.client.NewRequest("DELETE", u, nil) +	if err != nil { +		return nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypePreReceiveHooksPreview) + +	return s.client.Do(ctx, req, nil) +} diff --git a/vendor/github.com/google/go-github/github/repos_projects.go b/vendor/github.com/google/go-github/github/repos_projects.go index 97a045f..d6486d2 100644 --- a/vendor/github.com/google/go-github/github/repos_projects.go +++ b/vendor/github.com/google/go-github/github/repos_projects.go @@ -8,7 +8,6 @@ package github  import (  	"context"  	"fmt" -	"strings"  )  // ProjectListOptions specifies the optional parameters to the @@ -36,8 +35,7 @@ func (s *RepositoriesService) ListProjects(ctx context.Context, owner, repo stri  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeProjectsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeProjectsPreview)  	var projects []*Project  	resp, err := s.client.Do(ctx, req, &projects) @@ -59,8 +57,7 @@ func (s *RepositoriesService) CreateProject(ctx context.Context, owner, repo str  	}  	// TODO: remove custom Accept headers when APIs fully launch. -	acceptHeaders := []string{mediaTypeProjectsPreview, mediaTypeGraphQLNodeIDPreview} -	req.Header.Set("Accept", strings.Join(acceptHeaders, ", ")) +	req.Header.Set("Accept", mediaTypeProjectsPreview)  	project := &Project{}  	resp, err := s.client.Do(ctx, req, project) diff --git a/vendor/github.com/google/go-github/github/repos_releases.go b/vendor/github.com/google/go-github/github/repos_releases.go index d5dfc70..c23601d 100644 --- a/vendor/github.com/google/go-github/github/repos_releases.go +++ b/vendor/github.com/google/go-github/github/repos_releases.go @@ -79,9 +79,6 @@ func (s *RepositoriesService) ListReleases(ctx context.Context, owner, repo stri  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	var releases []*RepositoryRelease  	resp, err := s.client.Do(ctx, req, &releases)  	if err != nil { @@ -120,9 +117,6 @@ func (s *RepositoriesService) getSingleRelease(ctx context.Context, url string)  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	release := new(RepositoryRelease)  	resp, err := s.client.Do(ctx, req, release)  	if err != nil { @@ -142,9 +136,6 @@ func (s *RepositoriesService) CreateRelease(ctx context.Context, owner, repo str  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	r := new(RepositoryRelease)  	resp, err := s.client.Do(ctx, req, r)  	if err != nil { @@ -164,9 +155,6 @@ func (s *RepositoriesService) EditRelease(ctx context.Context, owner, repo strin  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	r := new(RepositoryRelease)  	resp, err := s.client.Do(ctx, req, r)  	if err != nil { @@ -203,9 +191,6 @@ func (s *RepositoriesService) ListReleaseAssets(ctx context.Context, owner, repo  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	var assets []*ReleaseAsset  	resp, err := s.client.Do(ctx, req, &assets)  	if err != nil { @@ -225,9 +210,6 @@ func (s *RepositoriesService) GetReleaseAsset(ctx context.Context, owner, repo s  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	asset := new(ReleaseAsset)  	resp, err := s.client.Do(ctx, req, asset)  	if err != nil { @@ -292,9 +274,6 @@ func (s *RepositoriesService) EditReleaseAsset(ctx context.Context, owner, repo  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	asset := new(ReleaseAsset)  	resp, err := s.client.Do(ctx, req, asset)  	if err != nil { @@ -341,9 +320,6 @@ func (s *RepositoriesService) UploadReleaseAsset(ctx context.Context, owner, rep  		return nil, nil, err  	} -	// TODO: remove custom Accept header when this API fully launches. -	req.Header.Set("Accept", mediaTypeGraphQLNodeIDPreview) -  	asset := new(ReleaseAsset)  	resp, err := s.client.Do(ctx, req, asset)  	if err != nil { diff --git a/vendor/github.com/google/go-github/github/search.go b/vendor/github.com/google/go-github/github/search.go index 6e0000d..abaf5e1 100644 --- a/vendor/github.com/google/go-github/github/search.go +++ b/vendor/github.com/google/go-github/github/search.go @@ -8,7 +8,9 @@ package github  import (  	"context"  	"fmt" +	"net/url"  	"strconv" +	"strings"  	qs "github.com/google/go-querystring/query"  ) @@ -221,11 +223,15 @@ func (s *SearchService) search(ctx context.Context, searchType string, parameter  	if err != nil {  		return nil, err  	} -	params.Set("q", parameters.Query) +	q := strings.Replace(parameters.Query, " ", "+", -1)  	if parameters.RepositoryID != nil {  		params.Set("repository_id", strconv.FormatInt(*parameters.RepositoryID, 10))  	} -	u := fmt.Sprintf("search/%s?%s", searchType, params.Encode()) +	query := "q=" + url.PathEscape(q) +	if v := params.Encode(); v != "" { +		query = query + "&" + v +	} +	u := fmt.Sprintf("search/%s?%s", searchType, query)  	req, err := s.client.NewRequest("GET", u, nil)  	if err != nil { diff --git a/vendor/github.com/google/go-github/github/teams.go b/vendor/github.com/google/go-github/github/teams.go index 1021d53..c3773e0 100644 --- a/vendor/github.com/google/go-github/github/teams.go +++ b/vendor/github.com/google/go-github/github/teams.go @@ -1,7 +1,357 @@ +// Copyright 2018 The go-github AUTHORS. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +  package github +import ( +	"context" +	"fmt" +	"strings" +	"time" +) +  // TeamsService provides access to the team-related functions  // in the GitHub API.  //  // GitHub API docs: https://developer.github.com/v3/teams/  type TeamsService service + +// Team represents a team within a GitHub organization. Teams are used to +// manage access to an organization's repositories. +type Team struct { +	ID          *int64  `json:"id,omitempty"` +	Name        *string `json:"name,omitempty"` +	Description *string `json:"description,omitempty"` +	URL         *string `json:"url,omitempty"` +	Slug        *string `json:"slug,omitempty"` + +	// Permission specifies the default permission for repositories owned by the team. +	Permission *string `json:"permission,omitempty"` + +	// Privacy identifies the level of privacy this team should have. +	// Possible values are: +	//     secret - only visible to organization owners and members of this team +	//     closed - visible to all members of this organization +	// Default is "secret". +	Privacy *string `json:"privacy,omitempty"` + +	MembersCount    *int          `json:"members_count,omitempty"` +	ReposCount      *int          `json:"repos_count,omitempty"` +	Organization    *Organization `json:"organization,omitempty"` +	MembersURL      *string       `json:"members_url,omitempty"` +	RepositoriesURL *string       `json:"repositories_url,omitempty"` +	Parent          *Team         `json:"parent,omitempty"` + +	// LDAPDN is only available in GitHub Enterprise and when the team +	// membership is synchronized with LDAP. +	LDAPDN *string `json:"ldap_dn,omitempty"` +} + +func (t Team) String() string { +	return Stringify(t) +} + +// Invitation represents a team member's invitation status. +type Invitation struct { +	ID    *int64  `json:"id,omitempty"` +	Login *string `json:"login,omitempty"` +	Email *string `json:"email,omitempty"` +	// Role can be one of the values - 'direct_member', 'admin', 'billing_manager', 'hiring_manager', or 'reinstate'. +	Role              *string    `json:"role,omitempty"` +	CreatedAt         *time.Time `json:"created_at,omitempty"` +	Inviter           *User      `json:"inviter,omitempty"` +	TeamCount         *int       `json:"team_count,omitempty"` +	InvitationTeamURL *string    `json:"invitation_team_url,omitempty"` +} + +func (i Invitation) String() string { +	return Stringify(i) +} + +// ListTeams lists all of the teams for an organization. +// +// GitHub API docs: https://developer.github.com/v3/teams/#list-teams +func (s *TeamsService) ListTeams(ctx context.Context, org string, opt *ListOptions) ([]*Team, *Response, error) { +	u := fmt.Sprintf("orgs/%v/teams", org) +	u, err := addOptions(u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) + +	var teams []*Team +	resp, err := s.client.Do(ctx, req, &teams) +	if err != nil { +		return nil, resp, err +	} + +	return teams, resp, nil +} + +// GetTeam fetches a team by ID. +// +// GitHub API docs: https://developer.github.com/v3/teams/#get-team +func (s *TeamsService) GetTeam(ctx context.Context, team int64) (*Team, *Response, error) { +	u := fmt.Sprintf("teams/%v", team) +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) + +	t := new(Team) +	resp, err := s.client.Do(ctx, req, t) +	if err != nil { +		return nil, resp, err +	} + +	return t, resp, nil +} + +// NewTeam represents a team to be created or modified. +type NewTeam struct { +	Name         string   `json:"name"` // Name of the team. (Required.) +	Description  *string  `json:"description,omitempty"` +	Maintainers  []string `json:"maintainers,omitempty"` +	RepoNames    []string `json:"repo_names,omitempty"` +	ParentTeamID *int64   `json:"parent_team_id,omitempty"` + +	// Deprecated: Permission is deprecated when creating or editing a team in an org +	// using the new GitHub permission model. It no longer identifies the +	// permission a team has on its repos, but only specifies the default +	// permission a repo is initially added with. Avoid confusion by +	// specifying a permission value when calling AddTeamRepo. +	Permission *string `json:"permission,omitempty"` + +	// Privacy identifies the level of privacy this team should have. +	// Possible values are: +	//     secret - only visible to organization owners and members of this team +	//     closed - visible to all members of this organization +	// Default is "secret". +	Privacy *string `json:"privacy,omitempty"` + +	// LDAPDN may be used in GitHub Enterprise when the team membership +	// is synchronized with LDAP. +	LDAPDN *string `json:"ldap_dn,omitempty"` +} + +func (s NewTeam) String() string { +	return Stringify(s) +} + +// CreateTeam creates a new team within an organization. +// +// GitHub API docs: https://developer.github.com/v3/teams/#create-team +func (s *TeamsService) CreateTeam(ctx context.Context, org string, team NewTeam) (*Team, *Response, error) { +	u := fmt.Sprintf("orgs/%v/teams", org) +	req, err := s.client.NewRequest("POST", u, team) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) + +	t := new(Team) +	resp, err := s.client.Do(ctx, req, t) +	if err != nil { +		return nil, resp, err +	} + +	return t, resp, nil +} + +// EditTeam edits a team. +// +// GitHub API docs: https://developer.github.com/v3/teams/#edit-team +func (s *TeamsService) EditTeam(ctx context.Context, id int64, team NewTeam) (*Team, *Response, error) { +	u := fmt.Sprintf("teams/%v", id) +	req, err := s.client.NewRequest("PATCH", u, team) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) + +	t := new(Team) +	resp, err := s.client.Do(ctx, req, t) +	if err != nil { +		return nil, resp, err +	} + +	return t, resp, nil +} + +// DeleteTeam deletes a team. +// +// GitHub API docs: https://developer.github.com/v3/teams/#delete-team +func (s *TeamsService) DeleteTeam(ctx context.Context, team int64) (*Response, error) { +	u := fmt.Sprintf("teams/%v", team) +	req, err := s.client.NewRequest("DELETE", u, nil) +	if err != nil { +		return nil, err +	} + +	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) + +	return s.client.Do(ctx, req, nil) +} + +// ListChildTeams lists child teams for a team. +// +// GitHub API docs: https://developer.github.com/v3/teams/#list-child-teams +func (s *TeamsService) ListChildTeams(ctx context.Context, teamID int64, opt *ListOptions) ([]*Team, *Response, error) { +	u := fmt.Sprintf("teams/%v/teams", teamID) +	u, err := addOptions(u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) + +	var teams []*Team +	resp, err := s.client.Do(ctx, req, &teams) +	if err != nil { +		return nil, resp, err +	} + +	return teams, resp, nil +} + +// ListTeamRepos lists the repositories that the specified team has access to. +// +// GitHub API docs: https://developer.github.com/v3/teams/#list-team-repos +func (s *TeamsService) ListTeamRepos(ctx context.Context, team int64, opt *ListOptions) ([]*Repository, *Response, error) { +	u := fmt.Sprintf("teams/%v/repos", team) +	u, err := addOptions(u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when topics API fully launches. +	headers := []string{mediaTypeTopicsPreview, mediaTypeNestedTeamsPreview} +	req.Header.Set("Accept", strings.Join(headers, ", ")) + +	var repos []*Repository +	resp, err := s.client.Do(ctx, req, &repos) +	if err != nil { +		return nil, resp, err +	} + +	return repos, resp, nil +} + +// IsTeamRepo checks if a team manages the specified repository. If the +// repository is managed by team, a Repository is returned which includes the +// permissions team has for that repo. +// +// GitHub API docs: https://developer.github.com/v3/teams/#check-if-a-team-manages-a-repository +func (s *TeamsService) IsTeamRepo(ctx context.Context, team int64, owner string, repo string) (*Repository, *Response, error) { +	u := fmt.Sprintf("teams/%v/repos/%v/%v", team, owner, repo) +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	headers := []string{mediaTypeOrgPermissionRepo, mediaTypeNestedTeamsPreview} +	req.Header.Set("Accept", strings.Join(headers, ", ")) + +	repository := new(Repository) +	resp, err := s.client.Do(ctx, req, repository) +	if err != nil { +		return nil, resp, err +	} + +	return repository, resp, nil +} + +// TeamAddTeamRepoOptions specifies the optional parameters to the +// TeamsService.AddTeamRepo method. +type TeamAddTeamRepoOptions struct { +	// Permission specifies the permission to grant the team on this repository. +	// Possible values are: +	//     pull - team members can pull, but not push to or administer this repository +	//     push - team members can pull and push, but not administer this repository +	//     admin - team members can pull, push and administer this repository +	// +	// If not specified, the team's permission attribute will be used. +	Permission string `json:"permission,omitempty"` +} + +// AddTeamRepo adds a repository to be managed by the specified team. The +// specified repository must be owned by the organization to which the team +// belongs, or a direct fork of a repository owned by the organization. +// +// GitHub API docs: https://developer.github.com/v3/teams/#add-team-repo +func (s *TeamsService) AddTeamRepo(ctx context.Context, team int64, owner string, repo string, opt *TeamAddTeamRepoOptions) (*Response, error) { +	u := fmt.Sprintf("teams/%v/repos/%v/%v", team, owner, repo) +	req, err := s.client.NewRequest("PUT", u, opt) +	if err != nil { +		return nil, err +	} + +	return s.client.Do(ctx, req, nil) +} + +// RemoveTeamRepo removes a repository from being managed by the specified +// team. Note that this does not delete the repository, it just removes it +// from the team. +// +// GitHub API docs: https://developer.github.com/v3/teams/#remove-team-repo +func (s *TeamsService) RemoveTeamRepo(ctx context.Context, team int64, owner string, repo string) (*Response, error) { +	u := fmt.Sprintf("teams/%v/repos/%v/%v", team, owner, repo) +	req, err := s.client.NewRequest("DELETE", u, nil) +	if err != nil { +		return nil, err +	} + +	return s.client.Do(ctx, req, nil) +} + +// ListUserTeams lists a user's teams +// GitHub API docs: https://developer.github.com/v3/teams/#list-user-teams +func (s *TeamsService) ListUserTeams(ctx context.Context, opt *ListOptions) ([]*Team, *Response, error) { +	u := "user/teams" +	u, err := addOptions(u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) + +	var teams []*Team +	resp, err := s.client.Do(ctx, req, &teams) +	if err != nil { +		return nil, resp, err +	} + +	return teams, resp, nil +} diff --git a/vendor/github.com/google/go-github/github/teams_discussion_comments.go b/vendor/github.com/google/go-github/github/teams_discussion_comments.go index 26d0e8c..383d559 100644 --- a/vendor/github.com/google/go-github/github/teams_discussion_comments.go +++ b/vendor/github.com/google/go-github/github/teams_discussion_comments.go @@ -21,7 +21,7 @@ type DiscussionComment struct {  	DiscussionURL *string    `json:"discussion_url,omitempty"`  	HTMLURL       *string    `json:"html_url,omitempty"`  	NodeID        *string    `json:"node_id,omitempty"` -	Number        *int64     `json:"number,omitempty"` +	Number        *int       `json:"number,omitempty"`  	UpdatedAt     *Timestamp `json:"updated_at,omitempty"`  	URL           *string    `json:"url,omitempty"`  } diff --git a/vendor/github.com/google/go-github/github/teams_discussions.go b/vendor/github.com/google/go-github/github/teams_discussions.go index fc9b25a..5db06d1 100644 --- a/vendor/github.com/google/go-github/github/teams_discussions.go +++ b/vendor/github.com/google/go-github/github/teams_discussions.go @@ -16,13 +16,13 @@ type TeamDiscussion struct {  	Body          *string    `json:"body,omitempty"`  	BodyHTML      *string    `json:"body_html,omitempty"`  	BodyVersion   *string    `json:"body_version,omitempty"` -	CommentsCount *int64     `json:"comments_count,omitempty"` +	CommentsCount *int       `json:"comments_count,omitempty"`  	CommentsURL   *string    `json:"comments_url,omitempty"`  	CreatedAt     *Timestamp `json:"created_at,omitempty"`  	LastEditedAt  *Timestamp `json:"last_edited_at,omitempty"`  	HTMLURL       *string    `json:"html_url,omitempty"`  	NodeID        *string    `json:"node_id,omitempty"` -	Number        *int64     `json:"number,omitempty"` +	Number        *int       `json:"number,omitempty"`  	Pinned        *bool      `json:"pinned,omitempty"`  	Private       *bool      `json:"private,omitempty"`  	TeamURL       *string    `json:"team_url,omitempty"` diff --git a/vendor/github.com/google/go-github/github/teams_members.go b/vendor/github.com/google/go-github/github/teams_members.go new file mode 100644 index 0000000..d5cfa0d --- /dev/null +++ b/vendor/github.com/google/go-github/github/teams_members.go @@ -0,0 +1,174 @@ +// Copyright 2018 The go-github AUTHORS. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package github + +import ( +	"context" +	"fmt" +) + +// TeamListTeamMembersOptions specifies the optional parameters to the +// TeamsService.ListTeamMembers method. +type TeamListTeamMembersOptions struct { +	// Role filters members returned by their role in the team. Possible +	// values are "all", "member", "maintainer". Default is "all". +	Role string `url:"role,omitempty"` + +	ListOptions +} + +// ListTeamMembers lists all of the users who are members of the specified +// team. +// +// GitHub API docs: https://developer.github.com/v3/teams/members/#list-team-members +func (s *TeamsService) ListTeamMembers(ctx context.Context, team int64, opt *TeamListTeamMembersOptions) ([]*User, *Response, error) { +	u := fmt.Sprintf("teams/%v/members", team) +	u, err := addOptions(u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) + +	var members []*User +	resp, err := s.client.Do(ctx, req, &members) +	if err != nil { +		return nil, resp, err +	} + +	return members, resp, nil +} + +// IsTeamMember checks if a user is a member of the specified team. +// +// GitHub API docs: https://developer.github.com/v3/teams/members/#get-team-member +// +// Deprecated: This API has been marked as deprecated in the Github API docs, +// TeamsService.GetTeamMembership method should be used instead. +func (s *TeamsService) IsTeamMember(ctx context.Context, team int64, user string) (bool, *Response, error) { +	u := fmt.Sprintf("teams/%v/members/%v", team, user) +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return false, nil, err +	} + +	resp, err := s.client.Do(ctx, req, nil) +	member, err := parseBoolResponse(err) +	return member, resp, err +} + +// GetTeamMembership returns the membership status for a user in a team. +// +// GitHub API docs: https://developer.github.com/v3/teams/members/#get-team-membership +func (s *TeamsService) GetTeamMembership(ctx context.Context, team int64, user string) (*Membership, *Response, error) { +	u := fmt.Sprintf("teams/%v/memberships/%v", team, user) +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	req.Header.Set("Accept", mediaTypeNestedTeamsPreview) + +	t := new(Membership) +	resp, err := s.client.Do(ctx, req, t) +	if err != nil { +		return nil, resp, err +	} + +	return t, resp, nil +} + +// TeamAddTeamMembershipOptions specifies the optional +// parameters to the TeamsService.AddTeamMembership method. +type TeamAddTeamMembershipOptions struct { +	// Role specifies the role the user should have in the team. Possible +	// values are: +	//     member - a normal member of the team +	//     maintainer - a team maintainer. Able to add/remove other team +	//                  members, promote other team members to team +	//                  maintainer, and edit the team’s name and description +	// +	// Default value is "member". +	Role string `json:"role,omitempty"` +} + +// AddTeamMembership adds or invites a user to a team. +// +// In order to add a membership between a user and a team, the authenticated +// user must have 'admin' permissions to the team or be an owner of the +// organization that the team is associated with. +// +// If the user is already a part of the team's organization (meaning they're on +// at least one other team in the organization), this endpoint will add the +// user to the team. +// +// If the user is completely unaffiliated with the team's organization (meaning +// they're on none of the organization's teams), this endpoint will send an +// invitation to the user via email. This newly-created membership will be in +// the "pending" state until the user accepts the invitation, at which point +// the membership will transition to the "active" state and the user will be +// added as a member of the team. +// +// GitHub API docs: https://developer.github.com/v3/teams/members/#add-or-update-team-membership +func (s *TeamsService) AddTeamMembership(ctx context.Context, team int64, user string, opt *TeamAddTeamMembershipOptions) (*Membership, *Response, error) { +	u := fmt.Sprintf("teams/%v/memberships/%v", team, user) +	req, err := s.client.NewRequest("PUT", u, opt) +	if err != nil { +		return nil, nil, err +	} + +	t := new(Membership) +	resp, err := s.client.Do(ctx, req, t) +	if err != nil { +		return nil, resp, err +	} + +	return t, resp, nil +} + +// RemoveTeamMembership removes a user from a team. +// +// GitHub API docs: https://developer.github.com/v3/teams/members/#remove-team-membership +func (s *TeamsService) RemoveTeamMembership(ctx context.Context, team int64, user string) (*Response, error) { +	u := fmt.Sprintf("teams/%v/memberships/%v", team, user) +	req, err := s.client.NewRequest("DELETE", u, nil) +	if err != nil { +		return nil, err +	} + +	return s.client.Do(ctx, req, nil) +} + +// ListPendingTeamInvitations get pending invitaion list in team. +// Warning: The API may change without advance notice during the preview period. +// Preview features are not supported for production use. +// +// GitHub API docs: https://developer.github.com/v3/teams/members/#list-pending-team-invitations +func (s *TeamsService) ListPendingTeamInvitations(ctx context.Context, team int64, opt *ListOptions) ([]*Invitation, *Response, error) { +	u := fmt.Sprintf("teams/%v/invitations", team) +	u, err := addOptions(u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	var pendingInvitations []*Invitation +	resp, err := s.client.Do(ctx, req, &pendingInvitations) +	if err != nil { +		return nil, resp, err +	} + +	return pendingInvitations, resp, nil +} diff --git a/vendor/github.com/google/go-github/github/timestamp.go b/vendor/github.com/google/go-github/github/timestamp.go index a1c1554..90929d5 100644 --- a/vendor/github.com/google/go-github/github/timestamp.go +++ b/vendor/github.com/google/go-github/github/timestamp.go @@ -28,9 +28,9 @@ func (t *Timestamp) UnmarshalJSON(data []byte) (err error) {  	str := string(data)  	i, err := strconv.ParseInt(str, 10, 64)  	if err == nil { -		(*t).Time = time.Unix(i, 0) +		t.Time = time.Unix(i, 0)  	} else { -		(*t).Time, err = time.Parse(`"`+time.RFC3339+`"`, str) +		t.Time, err = time.Parse(`"`+time.RFC3339+`"`, str)  	}  	return  } diff --git a/vendor/github.com/google/go-github/github/users.go b/vendor/github.com/google/go-github/github/users.go index 8c4efe1..f164d55 100644 --- a/vendor/github.com/google/go-github/github/users.go +++ b/vendor/github.com/google/go-github/github/users.go @@ -20,6 +20,7 @@ type UsersService service  type User struct {  	Login             *string    `json:"login,omitempty"`  	ID                *int64     `json:"id,omitempty"` +	NodeID            *string    `json:"node_id,omitempty"`  	AvatarURL         *string    `json:"avatar_url,omitempty"`  	HTMLURL           *string    `json:"html_url,omitempty"`  	GravatarID        *string    `json:"gravatar_id,omitempty"` @@ -134,6 +135,56 @@ func (s *UsersService) Edit(ctx context.Context, user *User) (*User, *Response,  	return uResp, resp, nil  } +// HovercardOptions specifies optional parameters to the UsersService.GetHovercard +// method. +type HovercardOptions struct { +	// SubjectType specifies the additional information to be received about the hovercard. +	// Possible values are: organization, repository, issue, pull_request. (Required when using subject_id.) +	SubjectType string `url:"subject_type"` + +	// SubjectID specifies the ID for the SubjectType. (Required when using subject_type.) +	SubjectID string `url:"subject_id"` +} + +// Hovercard represents hovercard information about a user. +type Hovercard struct { +	Contexts []*UserContext `json:"contexts,omitempty"` +} + +// UserContext represents the contextual information about user. +type UserContext struct { +	Message *string `json:"message,omitempty"` +	Octicon *string `json:"octicon,omitempty"` +} + +// GetHovercard fetches contextual information about user. It requires authentication +// via Basic Auth or via OAuth with the repo scope. +// +// GitHub API docs: https://developer.github.com/v3/users/#get-contextual-information-about-a-user +func (s *UsersService) GetHovercard(ctx context.Context, user string, opt *HovercardOptions) (*Hovercard, *Response, error) { +	u := fmt.Sprintf("users/%v/hovercard", user) +	u, err := addOptions(u, opt) +	if err != nil { +		return nil, nil, err +	} + +	req, err := s.client.NewRequest("GET", u, nil) +	if err != nil { +		return nil, nil, err +	} + +	// TODO: remove custom Accept header when this API fully launches. +	req.Header.Set("Accept", mediaTypeHovercardPreview) + +	hc := new(Hovercard) +	resp, err := s.client.Do(ctx, req, hc) +	if err != nil { +		return nil, resp, err +	} + +	return hc, resp, nil +} +  // UserListOptions specifies optional parameters to the UsersService.ListAll  // method.  type UserListOptions struct { diff --git a/vendor/github.com/google/go-github/github/with_appengine.go b/vendor/github.com/google/go-github/github/with_appengine.go deleted file mode 100644 index 59ce26b..0000000 --- a/vendor/github.com/google/go-github/github/with_appengine.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 The go-github AUTHORS. All rights reserved. -// -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build appengine - -// This file provides glue for making github work on App Engine. - -package github - -import ( -	"context" -	"net/http" -) - -func withContext(ctx context.Context, req *http.Request) *http.Request { -	// No-op because App Engine adds context to a request differently. -	return req -} | 
