Documentation ¶
Overview ¶
Authenticating the SDK ¶
The remote procedure calls mades by this SDK are authenticated via a ClientTokenProvider implementation. This can be supplied to New via the WithClientTokenProvider option.
Currently, there only exists a single implementation StaticClientTokenProvider:
func main() { provider := sdk.StaticClientTokenProvider("some-flipt-token") client := sdk.New(transport, sdk.WithClientTokenProvider(provider)) }
SDK Services ¶
The Flipt SDK is split into three sections Flipt, Auth and Meta. Each of which provides access to different parts of the Flipt system.
Flipt Service ¶
The Flipt service is the core Flipt API service. This service provides access to evaluate flag configuration within your application. As well as exposing the Flipt resource CRUD APIs.
client := sdk.New(transport).Flipt()
The following demonstrates how to evaluate the state of a flag.
result, err := client.Evaluate(ctx, &flipt.EvaluationRequest{ RequestId: uuid.NewV4().String(), NamespaceKey: sdk.DefaultNamespace, FlagKey: "my_flag_key", EntityId: userID, Context: map[string]string{ "organization": orgName, }, })
Additionally, Flipt resources can be accessed and managed directly.
flag, err := client.GetFlag(ctx, &flipt.GetFlagRequest{ NamespaceKey: "my_namespace", Key: "my_flag_key", }) if err != nil { panic(err) } fmt.Println(flag.Name) fmt.Println(flag.Description)
Index ¶
- Constants
- type Auth
- func (s Auth) AuthenticationMethodKubernetesService() *AuthenticationMethodKubernetesService
- func (s Auth) AuthenticationMethodOIDCService() *AuthenticationMethodOIDCService
- func (s Auth) AuthenticationMethodTokenService() *AuthenticationMethodTokenService
- func (s Auth) AuthenticationService() *AuthenticationService
- func (s Auth) PublicAuthenticationService() *PublicAuthenticationService
- type AuthClient
- type AuthenticationMethodKubernetesService
- type AuthenticationMethodOIDCService
- type AuthenticationMethodTokenService
- type AuthenticationService
- func (x *AuthenticationService) DeleteAuthentication(ctx context.Context, v *auth.DeleteAuthenticationRequest) error
- func (x *AuthenticationService) ExpireAuthenticationSelf(ctx context.Context, v *auth.ExpireAuthenticationSelfRequest) error
- func (x *AuthenticationService) GetAuthentication(ctx context.Context, v *auth.GetAuthenticationRequest) (*auth.Authentication, error)
- func (x *AuthenticationService) GetAuthenticationSelf(ctx context.Context) (*auth.Authentication, error)
- func (x *AuthenticationService) ListAuthentications(ctx context.Context, v *auth.ListAuthenticationsRequest) (*auth.ListAuthenticationsResponse, error)
- type ClientTokenProvider
- type Evaluation
- func (x *Evaluation) Batch(ctx context.Context, v *evaluation.BatchEvaluationRequest) (*evaluation.BatchEvaluationResponse, error)
- func (x *Evaluation) Boolean(ctx context.Context, v *evaluation.EvaluationRequest) (*evaluation.BooleanEvaluationResponse, error)
- func (x *Evaluation) Variant(ctx context.Context, v *evaluation.EvaluationRequest) (*evaluation.VariantEvaluationResponse, error)
- type Flipt
- func (x *Flipt) BatchEvaluate(ctx context.Context, v *flipt.BatchEvaluationRequest) (*flipt.BatchEvaluationResponse, error)
- func (x *Flipt) CreateConstraint(ctx context.Context, v *flipt.CreateConstraintRequest) (*flipt.Constraint, error)
- func (x *Flipt) CreateDistribution(ctx context.Context, v *flipt.CreateDistributionRequest) (*flipt.Distribution, error)
- func (x *Flipt) CreateFlag(ctx context.Context, v *flipt.CreateFlagRequest) (*flipt.Flag, error)
- func (x *Flipt) CreateNamespace(ctx context.Context, v *flipt.CreateNamespaceRequest) (*flipt.Namespace, error)
- func (x *Flipt) CreateRollout(ctx context.Context, v *flipt.CreateRolloutRequest) (*flipt.Rollout, error)
- func (x *Flipt) CreateRule(ctx context.Context, v *flipt.CreateRuleRequest) (*flipt.Rule, error)
- func (x *Flipt) CreateSegment(ctx context.Context, v *flipt.CreateSegmentRequest) (*flipt.Segment, error)
- func (x *Flipt) CreateVariant(ctx context.Context, v *flipt.CreateVariantRequest) (*flipt.Variant, error)
- func (x *Flipt) DeleteConstraint(ctx context.Context, v *flipt.DeleteConstraintRequest) error
- func (x *Flipt) DeleteDistribution(ctx context.Context, v *flipt.DeleteDistributionRequest) error
- func (x *Flipt) DeleteFlag(ctx context.Context, v *flipt.DeleteFlagRequest) error
- func (x *Flipt) DeleteNamespace(ctx context.Context, v *flipt.DeleteNamespaceRequest) error
- func (x *Flipt) DeleteRollout(ctx context.Context, v *flipt.DeleteRolloutRequest) error
- func (x *Flipt) DeleteRule(ctx context.Context, v *flipt.DeleteRuleRequest) error
- func (x *Flipt) DeleteSegment(ctx context.Context, v *flipt.DeleteSegmentRequest) error
- func (x *Flipt) DeleteVariant(ctx context.Context, v *flipt.DeleteVariantRequest) error
- func (x *Flipt) Evaluate(ctx context.Context, v *flipt.EvaluationRequest) (*flipt.EvaluationResponse, error)
- func (x *Flipt) GetFlag(ctx context.Context, v *flipt.GetFlagRequest) (*flipt.Flag, error)
- func (x *Flipt) GetNamespace(ctx context.Context, v *flipt.GetNamespaceRequest) (*flipt.Namespace, error)
- func (x *Flipt) GetRollout(ctx context.Context, v *flipt.GetRolloutRequest) (*flipt.Rollout, error)
- func (x *Flipt) GetRule(ctx context.Context, v *flipt.GetRuleRequest) (*flipt.Rule, error)
- func (x *Flipt) GetSegment(ctx context.Context, v *flipt.GetSegmentRequest) (*flipt.Segment, error)
- func (x *Flipt) ListFlags(ctx context.Context, v *flipt.ListFlagRequest) (*flipt.FlagList, error)
- func (x *Flipt) ListNamespaces(ctx context.Context, v *flipt.ListNamespaceRequest) (*flipt.NamespaceList, error)
- func (x *Flipt) ListRollouts(ctx context.Context, v *flipt.ListRolloutRequest) (*flipt.RolloutList, error)
- func (x *Flipt) ListRules(ctx context.Context, v *flipt.ListRuleRequest) (*flipt.RuleList, error)
- func (x *Flipt) ListSegments(ctx context.Context, v *flipt.ListSegmentRequest) (*flipt.SegmentList, error)
- func (x *Flipt) OrderRollouts(ctx context.Context, v *flipt.OrderRolloutsRequest) error
- func (x *Flipt) OrderRules(ctx context.Context, v *flipt.OrderRulesRequest) error
- func (x *Flipt) UpdateConstraint(ctx context.Context, v *flipt.UpdateConstraintRequest) (*flipt.Constraint, error)
- func (x *Flipt) UpdateDistribution(ctx context.Context, v *flipt.UpdateDistributionRequest) (*flipt.Distribution, error)
- func (x *Flipt) UpdateFlag(ctx context.Context, v *flipt.UpdateFlagRequest) (*flipt.Flag, error)
- func (x *Flipt) UpdateNamespace(ctx context.Context, v *flipt.UpdateNamespaceRequest) (*flipt.Namespace, error)
- func (x *Flipt) UpdateRollout(ctx context.Context, v *flipt.UpdateRolloutRequest) (*flipt.Rollout, error)
- func (x *Flipt) UpdateRule(ctx context.Context, v *flipt.UpdateRuleRequest) (*flipt.Rule, error)
- func (x *Flipt) UpdateSegment(ctx context.Context, v *flipt.UpdateSegmentRequest) (*flipt.Segment, error)
- func (x *Flipt) UpdateVariant(ctx context.Context, v *flipt.UpdateVariantRequest) (*flipt.Variant, error)
- type Meta
- type Option
- type PublicAuthenticationService
- type SDK
- type StaticClientTokenProvider
- type Transport
Examples ¶
Constants ¶
const DefaultNamespace = "default"
DefaultNamespace is the default namespace created in Flipt. This namespace is protected and will always be present. Omitting a namespace key leads to this namespace being referenced.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Auth ¶
type Auth struct {
// contains filtered or unexported fields
}
func (Auth) AuthenticationMethodKubernetesService ¶
func (s Auth) AuthenticationMethodKubernetesService() *AuthenticationMethodKubernetesService
func (Auth) AuthenticationMethodOIDCService ¶
func (s Auth) AuthenticationMethodOIDCService() *AuthenticationMethodOIDCService
func (Auth) AuthenticationMethodTokenService ¶
func (s Auth) AuthenticationMethodTokenService() *AuthenticationMethodTokenService
func (Auth) AuthenticationService ¶
func (s Auth) AuthenticationService() *AuthenticationService
func (Auth) PublicAuthenticationService ¶
func (s Auth) PublicAuthenticationService() *PublicAuthenticationService
type AuthClient ¶
type AuthClient interface { PublicAuthenticationServiceClient() auth.PublicAuthenticationServiceClient AuthenticationServiceClient() auth.AuthenticationServiceClient AuthenticationMethodTokenServiceClient() auth.AuthenticationMethodTokenServiceClient AuthenticationMethodOIDCServiceClient() auth.AuthenticationMethodOIDCServiceClient AuthenticationMethodKubernetesServiceClient() auth.AuthenticationMethodKubernetesServiceClient }
type AuthenticationMethodKubernetesService ¶
type AuthenticationMethodKubernetesService struct {
// contains filtered or unexported fields
}
func (*AuthenticationMethodKubernetesService) VerifyServiceAccount ¶
func (x *AuthenticationMethodKubernetesService) VerifyServiceAccount(ctx context.Context, v *auth.VerifyServiceAccountRequest) (*auth.VerifyServiceAccountResponse, error)
type AuthenticationMethodOIDCService ¶
type AuthenticationMethodOIDCService struct {
// contains filtered or unexported fields
}
func (*AuthenticationMethodOIDCService) AuthorizeURL ¶
func (x *AuthenticationMethodOIDCService) AuthorizeURL(ctx context.Context, v *auth.AuthorizeURLRequest) (*auth.AuthorizeURLResponse, error)
func (*AuthenticationMethodOIDCService) Callback ¶
func (x *AuthenticationMethodOIDCService) Callback(ctx context.Context, v *auth.CallbackRequest) (*auth.CallbackResponse, error)
type AuthenticationMethodTokenService ¶
type AuthenticationMethodTokenService struct {
// contains filtered or unexported fields
}
func (*AuthenticationMethodTokenService) CreateToken ¶
func (x *AuthenticationMethodTokenService) CreateToken(ctx context.Context, v *auth.CreateTokenRequest) (*auth.CreateTokenResponse, error)
type AuthenticationService ¶
type AuthenticationService struct {
// contains filtered or unexported fields
}
func (*AuthenticationService) DeleteAuthentication ¶
func (x *AuthenticationService) DeleteAuthentication(ctx context.Context, v *auth.DeleteAuthenticationRequest) error
func (*AuthenticationService) ExpireAuthenticationSelf ¶
func (x *AuthenticationService) ExpireAuthenticationSelf(ctx context.Context, v *auth.ExpireAuthenticationSelfRequest) error
func (*AuthenticationService) GetAuthentication ¶
func (x *AuthenticationService) GetAuthentication(ctx context.Context, v *auth.GetAuthenticationRequest) (*auth.Authentication, error)
func (*AuthenticationService) GetAuthenticationSelf ¶
func (x *AuthenticationService) GetAuthenticationSelf(ctx context.Context) (*auth.Authentication, error)
func (*AuthenticationService) ListAuthentications ¶
func (x *AuthenticationService) ListAuthentications(ctx context.Context, v *auth.ListAuthenticationsRequest) (*auth.ListAuthenticationsResponse, error)
type ClientTokenProvider ¶
ClientTokenProvider is a type which when requested provides a client token which can be used to authenticate RPC/API calls invoked through the SDK.
type Evaluation ¶ added in v0.4.0
type Evaluation struct {
// contains filtered or unexported fields
}
func (*Evaluation) Batch ¶ added in v0.4.0
func (x *Evaluation) Batch(ctx context.Context, v *evaluation.BatchEvaluationRequest) (*evaluation.BatchEvaluationResponse, error)
func (*Evaluation) Boolean ¶ added in v0.4.0
func (x *Evaluation) Boolean(ctx context.Context, v *evaluation.EvaluationRequest) (*evaluation.BooleanEvaluationResponse, error)
func (*Evaluation) Variant ¶ added in v0.4.0
func (x *Evaluation) Variant(ctx context.Context, v *evaluation.EvaluationRequest) (*evaluation.VariantEvaluationResponse, error)
type Flipt ¶
type Flipt struct {
// contains filtered or unexported fields
}
func (*Flipt) BatchEvaluate ¶
func (x *Flipt) BatchEvaluate(ctx context.Context, v *flipt.BatchEvaluationRequest) (*flipt.BatchEvaluationResponse, error)
func (*Flipt) CreateConstraint ¶
func (x *Flipt) CreateConstraint(ctx context.Context, v *flipt.CreateConstraintRequest) (*flipt.Constraint, error)
func (*Flipt) CreateDistribution ¶
func (x *Flipt) CreateDistribution(ctx context.Context, v *flipt.CreateDistributionRequest) (*flipt.Distribution, error)
func (*Flipt) CreateFlag ¶
func (*Flipt) CreateNamespace ¶ added in v0.2.0
func (*Flipt) CreateRollout ¶ added in v0.4.0
func (*Flipt) CreateRule ¶
func (*Flipt) CreateSegment ¶
func (*Flipt) CreateVariant ¶
func (*Flipt) DeleteConstraint ¶
func (*Flipt) DeleteDistribution ¶
func (*Flipt) DeleteFlag ¶
func (*Flipt) DeleteNamespace ¶ added in v0.2.0
func (*Flipt) DeleteRollout ¶ added in v0.4.0
func (*Flipt) DeleteRule ¶
func (*Flipt) DeleteSegment ¶
func (*Flipt) DeleteVariant ¶
func (*Flipt) Evaluate ¶
func (x *Flipt) Evaluate(ctx context.Context, v *flipt.EvaluationRequest) (*flipt.EvaluationResponse, error)
func (*Flipt) GetNamespace ¶ added in v0.2.0
func (*Flipt) GetRollout ¶ added in v0.4.0
func (*Flipt) GetSegment ¶
func (*Flipt) ListNamespaces ¶ added in v0.2.0
func (x *Flipt) ListNamespaces(ctx context.Context, v *flipt.ListNamespaceRequest) (*flipt.NamespaceList, error)
func (*Flipt) ListRollouts ¶ added in v0.4.0
func (x *Flipt) ListRollouts(ctx context.Context, v *flipt.ListRolloutRequest) (*flipt.RolloutList, error)
func (*Flipt) ListSegments ¶
func (x *Flipt) ListSegments(ctx context.Context, v *flipt.ListSegmentRequest) (*flipt.SegmentList, error)
func (*Flipt) OrderRollouts ¶ added in v0.4.0
func (*Flipt) OrderRules ¶
func (*Flipt) UpdateConstraint ¶
func (x *Flipt) UpdateConstraint(ctx context.Context, v *flipt.UpdateConstraintRequest) (*flipt.Constraint, error)
func (*Flipt) UpdateDistribution ¶
func (x *Flipt) UpdateDistribution(ctx context.Context, v *flipt.UpdateDistributionRequest) (*flipt.Distribution, error)
func (*Flipt) UpdateFlag ¶
func (*Flipt) UpdateNamespace ¶ added in v0.2.0
func (*Flipt) UpdateRollout ¶ added in v0.4.0
func (*Flipt) UpdateRule ¶
func (*Flipt) UpdateSegment ¶
func (*Flipt) UpdateVariant ¶
type Meta ¶
type Meta struct {
// contains filtered or unexported fields
}
func (*Meta) GetConfiguration ¶
type Option ¶
type Option func(*SDK)
Option is a functional option which configures the Flipt SDK.
func WithClientTokenProvider ¶
func WithClientTokenProvider(p ClientTokenProvider) Option
WithClientTokenProviders returns an Option which configures any supplied SDK with the provided ClientTokenProvider.
type PublicAuthenticationService ¶
type PublicAuthenticationService struct {
// contains filtered or unexported fields
}
func (*PublicAuthenticationService) ListAuthenticationMethods ¶
func (x *PublicAuthenticationService) ListAuthenticationMethods(ctx context.Context) (*auth.ListAuthenticationMethodsResponse, error)
type SDK ¶
type SDK struct {
// contains filtered or unexported fields
}
SDK is the definition of Flipt's Go SDK. It depends on a pluggable transport implementation and exposes a consistent API surface area across both transport implementations. It also provides consistent client-side instrumentation and authentication lifecycle support.
func New ¶
New constructs and configures a Flipt SDK instance from the provided Transport implementation and options.
Example ¶
// see the following subpackages for transport implementations: // - grpc // - http var transport Transport client := New(transport) client.Flipt().GetFlag(context.Background(), &flipt.GetFlagRequest{ NamespaceKey: "my_namespace", Key: "my_flag", })
Output:
func (SDK) Evaluation ¶ added in v0.4.0
func (s SDK) Evaluation() *Evaluation
type StaticClientTokenProvider ¶
type StaticClientTokenProvider string
StaticClientTokenProvider is a string which is supplied as a static client token on each RPC which requires authentication.
func (StaticClientTokenProvider) ClientToken ¶
func (p StaticClientTokenProvider) ClientToken() (string, error)
ClientToken returns the underlying string that is the StaticClientTokenProvider.
type Transport ¶
type Transport interface { AuthClient() AuthClient EvaluationClient() evaluation.EvaluationServiceClient FliptClient() flipt.FliptClient MetaClient() meta.MetadataServiceClient }