rest

package
v0.6.3 Latest Latest
Warning

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

Go to latest
Published: Oct 14, 2022 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Bool

func Bool(v bool) *bool

Bool returns a pointer value for the bool value passed in.

func Byte

func Byte(v byte) *byte

Byte returns a pointer value for the byte value passed in.

func Int

func Int(v int) *int

Int returns a pointer value for the int value passed in.

func NewAuth

func NewAuth(am *AuthMap) *actionAuthMap

func String

func String(v string) *string

String returns a pointer value for the string value passed in.

Types

type Action

type Action struct {
	Strategy             string             `yaml:"strategy" json:"strategy"`
	Order                *int               `yaml:"order,omitempty" json:"order,omitempty"`
	Endpoint             string             `yaml:"endpoint" json:"endpoint"`
	GetEndpointSuffix    *string            `yaml:"getEndpointSuffix,omitempty" json:"getEndpointSuffix,omitempty"`
	PostEndpointSuffix   *string            `yaml:"postEndpointSuffix,omitempty" json:"postEndpointSuffix,omitempty"`
	PatchEndpointSuffix  *string            `yaml:"patchEndpointSuffix,omitempty" json:"patchEndpointSuffix,omitempty"`
	PutEndpointSuffix    *string            `yaml:"putEndpointSuffix,omitempty" json:"putEndpointSuffix,omitempty"`
	DeleteEndpointSuffix *string            `yaml:"deleteEndpointSuffix,omitempty" json:"deleteEndpointSuffix,omitempty"`
	FindByJsonPathExpr   string             `yaml:"findByJsonPathExpr,omitempty" json:"findByJsonPathExpr,omitempty"`
	PayloadTemplate      string             `yaml:"payloadTemplate" json:"payloadTemplate"`
	PatchPayloadTemplate string             `yaml:"patchPayloadTemplate,omitempty" json:"patchPayloadTemplate,omitempty"`
	RuntimeVars          *map[string]string `yaml:"runtimeVars,omitempty" json:"runtimeVars,omitempty"`
	AuthMapRef           string             `yaml:"authMapRef" json:"authMapRef"`
	HttpHeaders          *map[string]string `yaml:"httpHeaders,omitempty" json:"httpHeaders,omitempty"`
	Variables            KvMapVarsAny       `yaml:"variables" json:"variables"`
	// contains filtered or unexported fields
}

+k8s:deepcopy-gen=true Action defines the single action to make agains an endpoint and selecting a strategy Endpoint is the base url to make the requests against GetEndpointSuffix can be used to specify a direct ID or query params PostEndpointSuffix

func (*Action) DeepCopy

func (in *Action) DeepCopy() *Action

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Action.

func (*Action) DeepCopyInto

func (in *Action) DeepCopyInto(out *Action)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Action) WithHeader

func (a *Action) WithHeader() *Action

WithHeader allows the overwrite of default Accept and Content-Type headers both default to `application/json` and adding additional header params on per Action basis. NOTE: each rest call inside the action will inherit the same header

func (*Action) WithName

func (a *Action) WithName(name string) *Action

type AuthConfig

type AuthConfig struct {
	AuthStrategy AuthType     `yaml:"type" json:"type"`
	Username     string       `yaml:"username" json:"username"`
	Password     string       `yaml:"password" json:"password"`
	OAuth        *ConfigOAuth `yaml:"oauth,omitempty" json:"oauth,omitempty"`
	CustomToken  *CustomToken `yaml:"custom,omitempty" json:"custom,omitempty"`
}

+k8s:deepcopy-gen=true Auth holds the auth strategy for all Seeders

func (*AuthConfig) DeepCopy

func (in *AuthConfig) DeepCopy() *AuthConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthConfig.

func (*AuthConfig) DeepCopyInto

func (in *AuthConfig) DeepCopyInto(out *AuthConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AuthMap

type AuthMap map[string]AuthConfig

+k8s:deepcopy-gen=true

func (AuthMap) DeepCopy

func (in AuthMap) DeepCopy() AuthMap

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthMap.

func (AuthMap) DeepCopyInto

func (in AuthMap) DeepCopyInto(out *AuthMap)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AuthType

type AuthType string

AuthType specifies the type of authentication to perform currently only a single authType per instance is allowed

const (
	Basic         AuthType = "BasicAuth"
	OAuth         AuthType = "OAuthClientCredentials"
	CustomToToken AuthType = "CustomToToken"
)

type Client

type Client interface {
	Do(req *http.Request) (*http.Response, error)
}

type ConfigOAuth

type ConfigOAuth struct {
	ServerUrl               string              `yaml:"serverUrl"`
	Scopes                  []string            `yaml:"scopes"`
	EndpointParams          map[string][]string `yaml:"endpointParams"`
	OAuthSendParamsInHeader bool                `yaml:"oAuthSendParamsInHeader"`
}

+k8s:deepcopy-gen=true

func (*ConfigOAuth) DeepCopy

func (in *ConfigOAuth) DeepCopy() *ConfigOAuth

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigOAuth.

func (*ConfigOAuth) DeepCopyInto

func (in *ConfigOAuth) DeepCopyInto(out *ConfigOAuth)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CustomToken

type CustomToken struct {
	// Url to use to POST the customRequest
	AuthUrl string `yaml:"authUrl" json:"authUrl"`
	// holds the K/V credential pair. e.g.
	// email: some@one.com
	// password: pass123
	// will post this body or send in header params that payload
	CustomAuthMap KvMapVarsAny `yaml:"credential" json:"credential"`
	// whether to send the values in the header as params
	// defaults to false and map is posted in the body
	SendInHeader bool `yaml:"inHeader" json:"inHeader"`
	// JSONPAth expression to use to get the token from response
	// e.g. "$.token"
	// empty will take the entire response as the token - raw response must be string
	ResponseKey string `yaml:"responseKey" json:"responseKey" `
	// if omitted `Authorization` will be used
	// Could be X-API-Token etc..
	HeaderKey string `yaml:"headerKey" json:"headerKey"`
	// Token prefix - if omitted Bearer will be used
	// e.g. Admin ==> `Authorization: "Admin [TOKEN]"`
	TokenPrefix string `yaml:"tokenPrefix" json:"tokenPrefix"`
}

+k8s:deepcopy-gen=true customToken stores the required data to call and process custom auth Endpoints returning a token. the token will need to be extracted from the response it will then need adding to subsequent requests in the header under specified key and in specified format

func (*CustomToken) DeepCopy

func (in *CustomToken) DeepCopy() *CustomToken

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomToken.

func (*CustomToken) DeepCopyInto

func (in *CustomToken) DeepCopyInto(out *CustomToken)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CustomTokenResponse

type CustomTokenResponse struct {
	HeaderKey   string
	TokenPrefix string
	TokenValue  string
}

type Diagnostic

type Diagnostic struct {
	Status          int
	Name            string
	Message         string
	HostPathMethod  string
	ProceedFallback bool
	IsFatal         bool
}

func (*Diagnostic) Error

func (d *Diagnostic) Error() string

func (*Diagnostic) WithIsFatal

func (d *Diagnostic) WithIsFatal(v bool) *Diagnostic

func (*Diagnostic) WithMessage

func (d *Diagnostic) WithMessage(m string) *Diagnostic

func (*Diagnostic) WithProceedFallback

func (d *Diagnostic) WithProceedFallback(v bool) *Diagnostic

func (*Diagnostic) WithStatus

func (d *Diagnostic) WithStatus(s int) *Diagnostic

type KvMapVarsAny

type KvMapVarsAny map[string]any

+k8s:deepcopy-gen=false

func (*KvMapVarsAny) DeepCopy

func (in *KvMapVarsAny) DeepCopy() *KvMapVarsAny

func (*KvMapVarsAny) DeepCopyInto

func (in *KvMapVarsAny) DeepCopyInto(out *KvMapVarsAny)

type SeederImpl

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

func NewSeederImpl

func NewSeederImpl(log log.Loggeriface) *SeederImpl

func (*SeederImpl) FindDeletePost

func (r *SeederImpl) FindDeletePost(ctx context.Context, action *Action) error

FindDeletePost

func (*SeederImpl) FindPatchPost

func (r *SeederImpl) FindPatchPost(ctx context.Context, action *Action) error

FindPatchPost is same as FindPutPost strategy but uses PATCH

func (*SeederImpl) FindPost

func (r *SeederImpl) FindPost(ctx context.Context, action *Action) error

FindPost strategy calls a GET endpoint and if item ***FOUND it does NOT do a POST*** this strategy should be used sparingly and only in cases where the service REST implementation does not support an update of existing item.

func (*SeederImpl) FindPutPost

func (r *SeederImpl) FindPutPost(ctx context.Context, action *Action) error

FindPutPost strategy gets an item either by specifying a known ID in the endpoint suffix or by pathExpression. Get can look for a response in an array or in a single response object. once a single item that matches is found and the relevant ID is extracted it will do a PUT else it will do a POST as the item can be created

func (*SeederImpl) GetPost

func (r *SeederImpl) GetPost(ctx context.Context, action *Action) error

GetPost strategy calls a GET endpoint and if item ***FOUND it does NOT do a POST*** this strategy should be used sparingly and only in cases where the service REST implementation does not support an update of existing item.

func (*SeederImpl) GetPutPost

func (r *SeederImpl) GetPutPost(ctx context.Context, action *Action) error

GetPutPost strategy gets an item by specifying a known ID in the endpoint suffix If a non error or non empty response is found it will do a PUT else it will do a POST as the item can be created

func (*SeederImpl) Put

func (r *SeederImpl) Put(ctx context.Context, action *Action) error

Put strategy calls a PUT endpoint if standards compliant this should be an idempotent operation

func (*SeederImpl) PutPost

func (r *SeederImpl) PutPost(ctx context.Context, action *Action) error

Put strategy calls a PUT endpoint if standards compliant this should be an idempotent operation

func (*SeederImpl) WithAuth

func (r *SeederImpl) WithAuth(auth *AuthMap) *SeederImpl

WithAuth assigns auth options used by AuthMapRef within the actions

func (*SeederImpl) WithClient

func (r *SeederImpl) WithClient(c Client) *SeederImpl

type Seeders

type Seeders map[string]Action

+k8s:deepcopy-gen=true

func (Seeders) DeepCopy

func (in Seeders) DeepCopy() Seeders

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Seeders.

func (Seeders) DeepCopyInto

func (in Seeders) DeepCopyInto(out *Seeders)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Status

type Status int
const (
	StatusFatal Status = iota
	StatusRetryable
)

type StrategyConfig

type StrategyConfig struct {
	AuthConfig AuthMap `yaml:"auth" json:"auth"`
	Seeders    Seeders `yaml:"seed" json:"seed"`
}

+k8s:deepcopy-gen=true StrategyConfig defines top level Spec

func (*StrategyConfig) DeepCopy

func (in *StrategyConfig) DeepCopy() *StrategyConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StrategyConfig.

func (*StrategyConfig) DeepCopyInto

func (in *StrategyConfig) DeepCopyInto(out *StrategyConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

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