apiclient

package
v1.7.1 Latest Latest
Warning

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

Go to latest
Published: Oct 31, 2023 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ValidateMandatoryEnvironment added in v0.1.0

func ValidateMandatoryEnvironment(host string, apiKey string, accessToken string) error

Types

type Client

type Client struct {
	// Underlying HTTP Client (settable for mocking in unit tests).
	// If nil, will use the system default HTTP client to connect to the Octopus Deploy server
	HttpClient *http.Client

	// TODO this should be an interface rather than a struct, but this requires changing the SDK, we'll get round to that
	// Octopus API Client not scoped to any space. nullable, lazily created by Get()
	SystemClient *octopusApiClient.Client

	// TODO this should be an interface rather than a struct, but this requires changing the SDK, we'll get round to that
	// Octopus API Client scoped to the current space. nullable, lazily created by Get()
	SpaceScopedClient *octopusApiClient.Client

	// the Server URL, obtained from OCTOPUS_URL
	ApiUrl *url.URL
	// Credentials, obtained from OCTOPUS_API_KEY or OCTOPUS_ACCESS_TOKEN
	Credentials octopusApiClient.ICredential
	// the Octopus SpaceNameOrID to work within. Obtained from OCTOPUS_SPACE (TODO: or --space=XYZ on the command line??)
	// Required for commands that need a space, but may be omitted for server-wide commands such as listing teams
	SpaceNameOrID string

	// After the space lookup process has occurred, we cache a reference to the SpaceNameOrID object for future use
	// May be nil if we haven't done space lookup yet
	ActiveSpace *spaces.Space

	Ask question.AskProvider
}

func (*Client) GetActiveSpace added in v0.2.0

func (c *Client) GetActiveSpace() *spaces.Space

func (*Client) GetHostUrl added in v0.2.0

func (c *Client) GetHostUrl() string

func (*Client) GetSpacedClient added in v0.2.0

func (c *Client) GetSpacedClient(requester Requester) (*octopusApiClient.Client, error)

func (*Client) GetSystemClient added in v0.2.0

func (c *Client) GetSystemClient(requester Requester) (*octopusApiClient.Client, error)

func (*Client) SetSpaceNameOrId added in v0.2.0

func (c *Client) SetSpaceNameOrId(spaceNameOrId string)

type ClientFactory

type ClientFactory interface {
	// GetSpacedClient returns an Octopus api Client instance which is bound to the Space
	// specified in the OCTOPUS_SPACE environment variable, or the command line. It should be the default
	GetSpacedClient(requester Requester) (*octopusApiClient.Client, error)

	// GetSystemClient returns an Octopus api Client instance which isn't bound to any Space.
	// Use it for things that live outside of a space, such as Teams, or Spaces themselves
	GetSystemClient(requester Requester) (*octopusApiClient.Client, error)

	// GetActiveSpace returns the currently selected space.
	// Note this is lazily populated when you call GetSpacedClient;
	// if you have not yet done so then it may return nil
	GetActiveSpace() *spaces.Space

	// SetSpaceNameOrId replaces whichever space name or ID was picked up from the environment or selected
	// interactively. This resets the internal cache inside the ClientFactory, meaning that the next time
	// someone calls GetSpacedClient we will have to query the Octopus Server to look up spaceNameOrId,
	// and any calls to GetActiveSpace before that will return nil
	SetSpaceNameOrId(spaceNameOrId string)

	// GetHostUrl returns the current set API URL as a string
	GetHostUrl() string
}

func NewClientFactory added in v0.2.0

func NewClientFactory(httpClient *http.Client, host string, credentials octopusApiClient.ICredential, spaceNameOrID string, ask question.AskProvider) (ClientFactory, error)

func NewClientFactoryFromConfig added in v0.2.1

func NewClientFactoryFromConfig(ask question.AskProvider) (ClientFactory, error)

NewClientFactoryFromConfig Creates a new Client wrapper structure by reading the viper config. specifies nil for the HTTP Client, so this is not for unit tests; use NewClientFactory(... instead)

func NewStubClientFactory added in v0.3.0

func NewStubClientFactory() ClientFactory

NewStubClientFactory returns a stub instance, so you can satisfy external code that needs a ClientFactory

type FakeRequesterContext added in v0.7.0

type FakeRequesterContext struct {
}

func (*FakeRequesterContext) GetRequester added in v0.7.0

func (r *FakeRequesterContext) GetRequester() string

type Requester added in v0.7.0

type Requester interface {
	GetRequester() string
}

type RequesterContext added in v0.7.0

type RequesterContext struct {
	// contains filtered or unexported fields
}

func NewRequester added in v0.7.0

func NewRequester(c *cobra.Command) *RequesterContext

func (*RequesterContext) GetRequester added in v0.7.0

func (r *RequesterContext) GetRequester() string

type SpinnerRoundTripper added in v0.2.1

type SpinnerRoundTripper struct {
	Next    http.RoundTripper
	Spinner *spinner.Spinner
}

func NewSpinnerRoundTripper added in v0.2.1

func NewSpinnerRoundTripper() *SpinnerRoundTripper

func (*SpinnerRoundTripper) RoundTrip added in v0.2.1

func (c *SpinnerRoundTripper) RoundTrip(r *http.Request) (*http.Response, error)

Jump to

Keyboard shortcuts

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