Documentation
¶
Overview ¶
Package github provides github related code
templ: version: v0.3.1001
Index ¶
- Constants
- Variables
- func DefaultBaseURL() *internal.WebURL
- func HandleEvent(r *http.Request, secret string) (*vcs.EventPayload, error)
- func Icon() templ.Component
- func NewOAuthClient(cfg authenticator.OAuthConfig, token *oauth2.Token) (authenticator.IdentityProviderClient, error)
- func RegisterOAuthHandler(authenticatorService *authenticator.Service, baseURL *internal.WebURL, ...) error
- type App
- func (a *App) AdvancedURL() templ.SafeURL
- func (a *App) DeleteInstallation(ctx context.Context, installID int64) error
- func (a *App) GetInstallation(ctx context.Context, installID int64) (vcs.Installation, error)
- func (a *App) InstallationLink() templ.SafeURL
- func (a *App) ListInstallations(ctx context.Context) ([]vcs.Installation, error)
- func (a *App) LogValue() slog.Value
- func (a *App) NewInstallURL(hostname string) string
- func (a *App) String() string
- func (a *App) URL(hostname string) string
- type AppCredentials
- type AppEventHandler
- type AppID
- type Client
- func (g *Client) CreateWebhook(ctx context.Context, opts vcs.CreateWebhookOptions) (string, error)
- func (g *Client) DeleteWebhook(ctx context.Context, opts vcs.DeleteWebhookOptions) error
- func (g *Client) ExchangeCode(ctx context.Context, code string) (*github.AppConfig, error)
- func (g *Client) GetCommit(ctx context.Context, repo vcs.Repo, ref string) (vcs.Commit, error)
- func (g *Client) GetCurrentUser(ctx context.Context) (authenticator.UserInfo, error)
- func (g *Client) GetDefaultBranch(ctx context.Context, identifier string) (string, error)
- func (g *Client) GetRepoTarball(ctx context.Context, opts vcs.GetRepoTarballOptions) ([]byte, string, error)
- func (g *Client) GetWebhook(ctx context.Context, opts vcs.GetWebhookOptions) (vcs.Webhook, error)
- func (g *Client) ListPullRequestFiles(ctx context.Context, repo vcs.Repo, pull int) ([]string, error)
- func (g *Client) ListRepositories(ctx context.Context, opts vcs.ListRepositoriesOptions) ([]vcs.Repo, error)
- func (g *Client) ListTags(ctx context.Context, opts vcs.ListTagsOptions) ([]string, error)
- func (g *Client) SetStatus(ctx context.Context, opts vcs.SetStatusOptions) error
- func (g *Client) UpdateWebhook(ctx context.Context, id string, opts vcs.UpdateWebhookOptions) error
- type ClientOptions
- type CreateAppOptions
- type GithubService
- type InstallCredentials
- type Options
- type Service
- func (a *Service) CreateApp(ctx context.Context, opts CreateAppOptions) (*App, error)
- func (a *Service) DeleteApp(ctx context.Context) error
- func (a *Service) DeleteInstallation(ctx context.Context, installID int64) error
- func (a *Service) GetApp(ctx context.Context) (*App, error)
- func (a *Service) GetInstallation(ctx context.Context, installID int64) (vcs.Installation, error)
- func (a *Service) ListInstallations(ctx context.Context) ([]vcs.Installation, error)
Constants ¶
const ( TokenKindID vcs.KindID = "github-token" AppKindID vcs.KindID = "github-app" Source source.Source = "github" )
const AppEventsPath = "/webhooks/github-app"
AppEventsPath is the URL path for the endpoint receiving VCS events from the Github App
Variables ¶
var ( OAuthEndpoint = oauth2github.Endpoint // TODO: don't think read:org scope is necessary any more...not since OTF // stopped sync'ing org and team memberships from github. OAuthScopes = []string{"user:email", "read:org"} )
Functions ¶
func DefaultBaseURL ¶ added in v0.4.0
func HandleEvent ¶
func NewOAuthClient ¶ added in v0.1.14
func NewOAuthClient(cfg authenticator.OAuthConfig, token *oauth2.Token) (authenticator.IdentityProviderClient, error)
func RegisterOAuthHandler ¶ added in v0.3.24
Types ¶
type App ¶ added in v0.1.14
type App struct {
ID AppID `db:"github_app_id"` // github's app id
Slug string // github's "slug" name
WebhookSecret string `db:"webhook_secret"`
PrivateKey string `db:"private_key"`
// Organization is the name of the *github* organization that owns the
// app. If the app is owned by a user then this is nil.
Organization *string `db:"organization"`
GithubURL *internal.WebURL
*Client
}
App is a Github App. Includes a client for interacting with Github authenticated as the app.
func (*App) AdvancedURL ¶ added in v0.1.14
AdvancedURL returns the URL for the "advanced" settings on github
func (*App) DeleteInstallation ¶ added in v0.3.24
DeleteInstallation deletes an installation of a github app with the given installation ID.
func (*App) GetInstallation ¶ added in v0.3.24
func (*App) InstallationLink ¶ added in v0.3.24
func (*App) ListInstallations ¶ added in v0.3.24
ListInstallations lists installations of the currently authenticated app.
func (*App) NewInstallURL ¶ added in v0.1.14
NewInstallURL returns the GitHub URL for creating a new install of the app.
type AppCredentials ¶ added in v0.1.14
type AppCredentials struct {
// Github app ID
ID AppID
// Private key in PEM format
PrivateKey string
}
Credentials for authenticating as an app: https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/about-authentication-with-a-github-app#authentication-as-a-github-app
type AppEventHandler ¶ added in v0.3.24
type AppEventHandler struct {
logr.Logger
vcs.Publisher
VCSService *vcs.Service
GithubApps *Service
}
func (*AppEventHandler) AddHandlers ¶ added in v0.3.24
func (h *AppEventHandler) AddHandlers(r *mux.Router)
func (*AppEventHandler) ServeHTTP ¶ added in v0.3.24
func (h *AppEventHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is a wrapper around the upstream go-github client
func NewClient ¶
func NewClient(cfg ClientOptions) (*Client, error)
func (*Client) CreateWebhook ¶
CreateWebhook creates a webhook on a github repository.
func (*Client) DeleteWebhook ¶
func (*Client) ExchangeCode ¶ added in v0.1.14
func (*Client) GetCurrentUser ¶ added in v0.1.8
func (*Client) GetDefaultBranch ¶ added in v0.3.24
func (*Client) GetRepoTarball ¶
func (*Client) GetWebhook ¶
func (*Client) ListPullRequestFiles ¶ added in v0.1.4
func (*Client) ListRepositories ¶
func (g *Client) ListRepositories(ctx context.Context, opts vcs.ListRepositoriesOptions) ([]vcs.Repo, error)
ListRepositories has different behaviour depending on the authentication: (a) if authenticated as an app installation then repositories accessible to the installation are listed; *all* repos are listed, in order of last pushed to. (b) if authenticated using a personal access token then repositories belonging to the user are listed; only the first page of repos is listed, those that have most recently been pushed to.
func (*Client) UpdateWebhook ¶
type ClientOptions ¶ added in v0.1.14
type ClientOptions struct {
// BaseURL is the base URL for github.
BaseURL *internal.WebURL
SkipTLSVerification bool
// Only specify one of the following
OAuthToken *oauth2.Token
PersonalToken *string
*AppCredentials
*InstallCredentials
}
type CreateAppOptions ¶ added in v0.1.14
type GithubService ¶ added in v0.5.18
type GithubService = Service
Alias service to permit embedding it with other services in a struct without a name clash.
type InstallCredentials ¶ added in v0.1.14
type InstallCredentials struct {
// Github installation ID
ID int64
// Github username if installed in a user account; mutually exclusive
// with Organization
User *string
// Github organization if installed in an organization; mutually
// exclusive with User
Organization *string
AppCredentials
}
Credentials for authenticating as an app installation: https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/about-authentication-with-a-github-app#authentication-as-an-app-installation
type Service ¶ added in v0.1.14
type Service struct {
logr.Logger
*authz.Authorizer
// contains filtered or unexported fields
}
Service is the service for github app management