Documentation
¶
Index ¶
- Constants
- Variables
- func NewClient(ctx context.Context, optFns ...ClientOption) (gitprovider.Client, error)
- type Client
- func (c *Client) OrgRepositories() gitprovider.OrgRepositoriesClient
- func (c *Client) Organizations() gitprovider.OrganizationsClient
- func (c *Client) ProviderID() gitprovider.ProviderID
- func (c *Client) Raw() interface{}
- func (c *Client) SupportedDomain() string
- func (c *Client) UserRepositories() gitprovider.UserRepositoriesClient
- type ClientFactory
- type ClientOption
- type DeployKeyClient
- func (c *DeployKeyClient) Create(ctx context.Context, req gitprovider.DeployKeyInfo) (gitprovider.DeployKey, error)
- func (c *DeployKeyClient) Get(ctx context.Context, name string) (gitprovider.DeployKey, error)
- func (c *DeployKeyClient) List(ctx context.Context) ([]gitprovider.DeployKey, error)
- func (c *DeployKeyClient) Reconcile(ctx context.Context, req gitprovider.DeployKeyInfo) (gitprovider.DeployKey, bool, error)
- type OrgRepositoriesClient
- func (c *OrgRepositoriesClient) Create(ctx context.Context, ref gitprovider.OrgRepositoryRef, ...) (gitprovider.OrgRepository, error)
- func (c *OrgRepositoriesClient) Get(ctx context.Context, ref gitprovider.OrgRepositoryRef) (gitprovider.OrgRepository, error)
- func (c *OrgRepositoriesClient) List(ctx context.Context, ref gitprovider.OrganizationRef) ([]gitprovider.OrgRepository, error)
- func (c *OrgRepositoriesClient) Reconcile(ctx context.Context, ref gitprovider.OrgRepositoryRef, ...) (gitprovider.OrgRepository, bool, error)
- type OrganizationsClient
- func (c *OrganizationsClient) Children(_ context.Context, _ gitprovider.OrganizationRef) ([]gitprovider.Organization, error)
- func (c *OrganizationsClient) Get(ctx context.Context, ref gitprovider.OrganizationRef) (gitprovider.Organization, error)
- func (c *OrganizationsClient) List(ctx context.Context) ([]gitprovider.Organization, error)
- type TeamAccessClient
- func (c *TeamAccessClient) Create(ctx context.Context, req gitprovider.TeamAccessInfo) (gitprovider.TeamAccess, error)
- func (c *TeamAccessClient) Get(ctx context.Context, teamName string) (gitprovider.TeamAccess, error)
- func (c *TeamAccessClient) List(ctx context.Context) ([]gitprovider.TeamAccess, error)
- func (c *TeamAccessClient) Reconcile(ctx context.Context, req gitprovider.TeamAccessInfo) (gitprovider.TeamAccess, bool, error)
- type TeamsClient
- type UserRepositoriesClient
- func (c *UserRepositoriesClient) Create(ctx context.Context, ref gitprovider.UserRepositoryRef, ...) (gitprovider.UserRepository, error)
- func (c *UserRepositoriesClient) Get(ctx context.Context, ref gitprovider.UserRepositoryRef) (gitprovider.UserRepository, error)
- func (c *UserRepositoriesClient) List(ctx context.Context, ref gitprovider.UserRef) ([]gitprovider.UserRepository, error)
- func (c *UserRepositoriesClient) Reconcile(ctx context.Context, ref gitprovider.UserRepositoryRef, ...) (gitprovider.UserRepository, bool, error)
Constants ¶
const ProviderID = gitprovider.ProviderID("github")
ProviderID is the provider ID for GitHub
Variables ¶
var ( // ErrInvalidClientOptions is the error returned when calling NewClient() with // invalid options (e.g. specifying mutually exclusive options) ErrInvalidClientOptions = errors.New("invalid options given to NewClient()") // ErrDestructiveCallDisallowed happens when the client isn't set up with WithDestructiveAPICalls() // but a destructive action is called. ErrDestructiveCallDisallowed = errors.New("a destructive call was blocked because it wasn't allowed by the client") )
Functions ¶
func NewClient ¶
func NewClient(ctx context.Context, optFns ...ClientOption) (gitprovider.Client, error)
NewClient creates a new gitprovider.Client instance for GitHub API endpoints.
Using WithOAuth2Token or WithPersonalAccessToken you can specify authentication credentials, passing no such ClientOption will allow public read access only.
Basic Auth is not supported because it is deprecated by GitHub, see https://developer.github.com/changes/2020-02-14-deprecating-password-auth/
GitHub Enterprise can be used if you specify the domain using the WithDomain option.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func (*Client) OrgRepositories ¶
func (c *Client) OrgRepositories() gitprovider.OrgRepositoriesClient
OrgRepositories returns the OrgRepositoriesClient handling sets of repositories in an organization.
func (*Client) Organizations ¶
func (c *Client) Organizations() gitprovider.OrganizationsClient
Organizations returns the OrganizationsClient handling sets of organizations.
func (*Client) ProviderID ¶
func (c *Client) ProviderID() gitprovider.ProviderID
ProviderID returns the provider ID "github" This field is set at client creation time, and can't be changed
func (*Client) Raw ¶
func (c *Client) Raw() interface{}
Raw returns the Go GitHub client (github.com/google/go-github/v32/github *Client) used under the hood for accessing GitHub.
func (*Client) SupportedDomain ¶
SupportedDomain returns the domain endpoint for this client, e.g. "github.com", "enterprise.github.com" or "my-custom-git-server.com:6443". This allows a higher-level user to know what Client to use for what endpoints. This field is set at client creation time, and can't be changed
func (*Client) UserRepositories ¶
func (c *Client) UserRepositories() gitprovider.UserRepositoriesClient
UserRepositories returns the UserRepositoriesClient handling sets of repositories for a user.
type ClientFactory ¶
type ClientFactory interface {
// Client returns a *http.Client, possibly with auth credentials
Client(ctx context.Context) *http.Client
}
ClientFactory is a way to aquire a *http.Client, possibly with auth credentials
type ClientOption ¶
type ClientOption func(*clientOptions) error
ClientOption is a function that is mutating a pointer to a clientOptions object which holds information of how the Client should be initialized.
func WithClientFactory ¶
func WithClientFactory(clientFactory ClientFactory) ClientOption
WithClientFactory initializes a Client with a given ClientFactory, used for aquiring the *http.Client later. clientFactory must not be nil. WithClientFactory is mutually exclusive with WithOAuth2Token and WithPersonalAccessToken.
func WithDestructiveAPICalls ¶
func WithDestructiveAPICalls(destructiveActions bool) ClientOption
WithDestructiveAPICalls tells the client whether it's allowed to do dangerous and possibly destructive actions, like e.g. deleting a repository.
func WithDomain ¶
func WithDomain(domain string) ClientOption
WithDomain initializes a Client for a custom GitHub Enterprise instance of the given domain. Only host and port information should be present in domain. domain must not be an empty string.
func WithOAuth2Token ¶
func WithOAuth2Token(oauth2Token string) ClientOption
WithOAuth2Token initializes a Client which authenticates with GitHub through an OAuth2 token. oauth2Token must not be an empty string. WithOAuth2Token is mutually exclusive with WithPersonalAccessToken and WithClientFactory.
func WithPersonalAccessToken ¶
func WithPersonalAccessToken(patToken string) ClientOption
WithPersonalAccessToken initializes a Client which authenticates with GitHub through a personal access token. patToken must not be an empty string. WithPersonalAccessToken is mutually exclusive with WithOAuth2Token and WithClientFactory.
type DeployKeyClient ¶
type DeployKeyClient struct {
// contains filtered or unexported fields
}
DeployKeyClient operates on the access deploy key list for a specific repository
func (*DeployKeyClient) Create ¶
func (c *DeployKeyClient) Create(ctx context.Context, req gitprovider.DeployKeyInfo) (gitprovider.DeployKey, error)
Create creates a deploy key with the given specifications.
ErrAlreadyExists will be returned if the resource already exists.
func (*DeployKeyClient) Get ¶
func (c *DeployKeyClient) Get(ctx context.Context, name string) (gitprovider.DeployKey, error)
Get returns the repository at the given path.
ErrNotFound is returned if the resource does not exist.
func (*DeployKeyClient) List ¶
func (c *DeployKeyClient) List(ctx context.Context) ([]gitprovider.DeployKey, error)
List lists all repository deploy keys of the given deploy key type.
List returns all available repository deploy keys for the given type, using multiple paginated requests if needed.
func (*DeployKeyClient) Reconcile ¶
func (c *DeployKeyClient) Reconcile(ctx context.Context, req gitprovider.DeployKeyInfo) (gitprovider.DeployKey, bool, error)
Reconcile makes sure req is the actual state in the backing Git provider.
If req doesn't exist under the hood, it is created (actionTaken == true). If req doesn't equal the actual state, the resource will be deleted and recreated (actionTaken == true). If req is already the actual state, this is a no-op (actionTaken == false).
type OrgRepositoriesClient ¶
type OrgRepositoriesClient struct {
// contains filtered or unexported fields
}
OrgRepositoriesClient operates on repositories the user has access to
func (*OrgRepositoriesClient) Create ¶
func (c *OrgRepositoriesClient) Create(ctx context.Context, ref gitprovider.OrgRepositoryRef, req gitprovider.RepositoryInfo, opts ...gitprovider.RepositoryCreateOption) (gitprovider.OrgRepository, error)
Create creates a repository for the given organization, with the data and options
ErrAlreadyExists will be returned if the resource already exists.
func (*OrgRepositoriesClient) Get ¶
func (c *OrgRepositoriesClient) Get(ctx context.Context, ref gitprovider.OrgRepositoryRef) (gitprovider.OrgRepository, error)
Get returns the repository at the given path.
ErrNotFound is returned if the resource does not exist.
func (*OrgRepositoriesClient) List ¶
func (c *OrgRepositoriesClient) List(ctx context.Context, ref gitprovider.OrganizationRef) ([]gitprovider.OrgRepository, error)
List all repositories in the given organization.
List returns all available repositories, using multiple paginated requests if needed.
func (*OrgRepositoriesClient) Reconcile ¶
func (c *OrgRepositoriesClient) Reconcile(ctx context.Context, ref gitprovider.OrgRepositoryRef, req gitprovider.RepositoryInfo, opts ...gitprovider.RepositoryReconcileOption) (gitprovider.OrgRepository, bool, error)
Reconcile makes sure req is the actual state in the backing Git provider.
If req doesn't exist under the hood, it is created (actionTaken == true). If req doesn't equal the actual state, the resource will be updated (actionTaken == true). If req is already the actual state, this is a no-op (actionTaken == false).
type OrganizationsClient ¶
type OrganizationsClient struct {
// contains filtered or unexported fields
}
func (*OrganizationsClient) Children ¶
func (c *OrganizationsClient) Children(_ context.Context, _ gitprovider.OrganizationRef) ([]gitprovider.Organization, error)
Children returns the immediate child-organizations for the specific OrganizationRef o. The OrganizationRef may point to any existing sub-organization.
This is not supported in GitHub.
Children returns all available organizations, using multiple paginated requests if needed.
func (*OrganizationsClient) Get ¶
func (c *OrganizationsClient) Get(ctx context.Context, ref gitprovider.OrganizationRef) (gitprovider.Organization, error)
Get a specific organization the user has access to. This can't refer to a sub-organization in GitHub, as those aren't supported.
ErrNotFound is returned if the resource does not exist.
func (*OrganizationsClient) List ¶
func (c *OrganizationsClient) List(ctx context.Context) ([]gitprovider.Organization, error)
List all top-level organizations the specific user has access to.
List returns all available organizations, using multiple paginated requests if needed.
type TeamAccessClient ¶
type TeamAccessClient struct {
// contains filtered or unexported fields
}
TeamAccessClient operates on the teams list for a specific repository
func (*TeamAccessClient) Create ¶
func (c *TeamAccessClient) Create(ctx context.Context, req gitprovider.TeamAccessInfo) (gitprovider.TeamAccess, error)
Create adds a given team to the repo's team access control list.
ErrAlreadyExists will be returned if the resource already exists.
func (*TeamAccessClient) Get ¶
func (c *TeamAccessClient) Get(ctx context.Context, teamName string) (gitprovider.TeamAccess, error)
func (*TeamAccessClient) List ¶
func (c *TeamAccessClient) List(ctx context.Context) ([]gitprovider.TeamAccess, error)
List lists the team access control list for this repository.
List returns all available team access lists, using multiple paginated requests if needed.
func (*TeamAccessClient) Reconcile ¶
func (c *TeamAccessClient) Reconcile(ctx context.Context, req gitprovider.TeamAccessInfo) (gitprovider.TeamAccess, bool, error)
Reconcile makes sure req is the actual state in the backing Git provider.
If req doesn't exist under the hood, it is created (actionTaken == true). If req doesn't equal the actual state, the resource will be deleted and recreated (actionTaken == true). If req is already the actual state, this is a no-op (actionTaken == false).
type TeamsClient ¶
type TeamsClient struct {
// contains filtered or unexported fields
}
TeamsClient handles teams organization-wide
func (*TeamsClient) Get ¶
func (c *TeamsClient) Get(ctx context.Context, teamName string) (gitprovider.Team, error)
Get a team within the specific organization.
teamName may include slashes, to point to e.g. subgroups in GitLab. teamName must not be an empty string.
ErrNotFound is returned if the resource does not exist.
func (*TeamsClient) List ¶
func (c *TeamsClient) List(ctx context.Context) ([]gitprovider.Team, error)
List all teams (recursively, in terms of subgroups) within the specific organization
List returns all available organizations, using multiple paginated requests if needed.
type UserRepositoriesClient ¶
type UserRepositoriesClient struct {
// contains filtered or unexported fields
}
UserRepositoriesClient operates on repositories the user has access to
func (*UserRepositoriesClient) Create ¶
func (c *UserRepositoriesClient) Create(ctx context.Context, ref gitprovider.UserRepositoryRef, req gitprovider.RepositoryInfo, opts ...gitprovider.RepositoryCreateOption) (gitprovider.UserRepository, error)
Create creates a repository for the given organization, with the data and options
ErrAlreadyExists will be returned if the resource already exists.
func (*UserRepositoriesClient) Get ¶
func (c *UserRepositoriesClient) Get(ctx context.Context, ref gitprovider.UserRepositoryRef) (gitprovider.UserRepository, error)
Get returns the repository at the given path.
ErrNotFound is returned if the resource does not exist.
func (*UserRepositoriesClient) List ¶
func (c *UserRepositoriesClient) List(ctx context.Context, ref gitprovider.UserRef) ([]gitprovider.UserRepository, error)
List all repositories in the given organization.
List returns all available repositories, using multiple paginated requests if needed.
func (*UserRepositoriesClient) Reconcile ¶
func (c *UserRepositoriesClient) Reconcile(ctx context.Context, ref gitprovider.UserRepositoryRef, req gitprovider.RepositoryInfo, opts ...gitprovider.RepositoryReconcileOption) (gitprovider.UserRepository, bool, error)
Reconcile makes sure req is the actual state in the backing Git provider.
If req doesn't exist under the hood, it is created (actionTaken == true). If req doesn't equal the actual state, the resource will be updated (actionTaken == true). If req is already the actual state, this is a no-op (actionTaken == false).