vcsprovider

package
v0.1.16 Latest Latest
Warning

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

Go to latest
Published: Oct 27, 2023 License: MPL-2.0 Imports: 25 Imported by: 0

Documentation

Overview

Package vcsprovider is responsible for VCS providers

Index

Constants

View Source
const (
	GithubAPIURL  = "https://api.github.com"
	GithubHTTPURL = "https://github.com"
)

Variables

This section is empty.

Functions

func NewService

func NewService(opts Options) *service

Types

type CreateOptions

type CreateOptions struct {
	Organization string
	Name         string
	Kind         *vcs.Kind

	// Specify either token or github app install ID
	Token              *string
	GithubAppInstallID *int64
}

type Options

type Options struct {
	internal.HostnameService
	*sql.DB
	*tfeapi.Responder
	html.Renderer
	logr.Logger
	github.GithubAppService
	vcs.Subscriber

	GithubHostname      string
	GitlabHostname      string
	SkipTLSVerification bool
}

type Service

type Service interface {
	CreateVCSProvider(ctx context.Context, opts CreateOptions) (*VCSProvider, error)
	UpdateVCSProvider(ctx context.Context, id string, opts UpdateOptions) (*VCSProvider, error)
	GetVCSProvider(ctx context.Context, id string) (*VCSProvider, error)
	ListVCSProviders(ctx context.Context, organization string) ([]*VCSProvider, error)
	ListAllVCSProviders(ctx context.Context) ([]*VCSProvider, error)
	// ListVCSProvidersByGithubAppInstall lists VCS providers using the
	// credentials of a particular github app installation.
	ListVCSProvidersByGithubAppInstall(ctx context.Context, installID int64) ([]*VCSProvider, error)
	DeleteVCSProvider(ctx context.Context, id string) (*VCSProvider, error)

	// GetVCSClient combines retrieving a vcs provider and construct a cloud
	// client from that provider.
	//
	// TODO: rename vcs provider to vcs client; the central purpose of the vcs
	// provider is, after all, to construct a vcs client.
	GetVCSClient(ctx context.Context, providerID string) (vcs.Client, error)

	BeforeDeleteVCSProvider(l hooks.Listener[*VCSProvider])
}

type UpdateOptions added in v0.1.11

type UpdateOptions struct {
	Token *string
	Name  string
}

type VCSProvider

type VCSProvider struct {
	ID           string
	Name         string
	CreatedAt    time.Time
	Organization string // name of OTF organization
	Hostname     string // hostname of github/gitlab etc

	Kind  vcs.Kind // github/gitlab etc. Not necessary if GithubApp is non-nil.
	Token *string  // personal access token.

	GithubApp *github.InstallCredentials // mutually exclusive with Token.
	// contains filtered or unexported fields
}

VCSProvider provides authenticated access to a VCS.

func (*VCSProvider) LogValue

func (t *VCSProvider) LogValue() slog.Value

LogValue implements slog.LogValuer.

func (*VCSProvider) NewClient

func (t *VCSProvider) NewClient() (vcs.Client, error)

func (*VCSProvider) String

func (t *VCSProvider) String() string

String provides a human meaningful description of the vcs provider, using the name if set; otherwise a name is constructed using both the underlying cloud kind and the auth kind.

func (*VCSProvider) Update added in v0.1.11

func (t *VCSProvider) Update(opts UpdateOptions) error

type VCSProviderService

type VCSProviderService Service

Alias services so they don't conflict when nested together in struct

Jump to

Keyboard shortcuts

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