unleash-client-haskell-0.6.0: Unleash feature toggle client
CopyrightCopyright © FINN.no AS Inc. All rights reserved.
LicenseMIT
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

Unleash.Client

Description

Functions and types that constitute an Unleash client SDK.

This module re-exports select constructors from unleash-client-haskell-core.

Synopsis

Documentation

makeUnleashConfig Source #

Arguments

:: MonadIO m 
=> Text

Application name.

-> Text

Instance identifier.

-> BaseUrl

Unleash server base URL.

-> Maybe Text

API key for authorization.

-> m UnleashConfig

Configuration instance.

Smart constructor for Unleash client configuration. Initializes the mutable variables properly.

data UnleashConfig Source #

Unleash client configuration. Use the smart constructor or make sure the mutable metrics variables are not empty.

Constructors

UnleashConfig 

Fields

class HasUnleash r where Source #

Reader monad convenience class. Use this to get an Unleash configuration from inside of an application configuration (for example).

registerClient :: (HasUnleash r, MonadReader r m, MonadIO m) => m (Either ClientError ()) Source #

Register client for the Unleash server. Call this on application startup before calling the state poller and metrics pusher functions.

pollToggles :: (HasUnleash r, MonadReader r m, MonadIO m) => m (Either ClientError ()) Source #

Fetch the most recent feature toggle set from the Unleash server. Meant to be run every statePollIntervalInSeconds. Non-blocking.

pushMetrics :: (HasUnleash r, MonadReader r m, MonadIO m) => m (Either ClientError ()) Source #

Push metrics to the Unleash server. Meant to be run every metricsPushIntervalInSeconds. Blocks if the mutable metrics variables are empty.

isEnabled Source #

Arguments

:: (HasUnleash r, MonadReader r m, MonadIO m) 
=> Text

Feature toggle name.

-> Context

Client context.

-> m Bool

Whether or not the feature toggle is enabled.

Check if a feature is enabled or not. Blocks until first feature toggle set is received. Blocks if the mutable metrics variables are empty.

tryIsEnabled Source #

Arguments

:: (HasUnleash r, MonadReader r m, MonadIO m) 
=> Text

Feature toggle name.

-> Context

Client context.

-> m Bool

Whether or not the feature toggle is enabled.

Check if a feature is enabled or not. Returns false for all toggles until first toggle set is received. Blocks if the mutable metrics variables are empty.

getVariant Source #

Arguments

:: (HasUnleash r, MonadReader r m, MonadIO m) 
=> Text

Feature toggle name.

-> Context

Client context.

-> m VariantResponse

Variant.

Get a variant. Blocks until first feature toggle set is received.

tryGetVariant Source #

Arguments

:: (HasUnleash r, MonadReader r m, MonadIO m) 
=> Text

Feature toggle name.

-> Context

Client context.

-> m VariantResponse

Variant.

Get a variant. Returns an empty variant until first toggle set is received.

data Context #

Client context.

Constructors

Context 

Fields

Instances

Instances details
FromJSON Context 
Instance details

Defined in Unleash.Internal.JsonTypes

ToJSON Context 
Instance details

Defined in Unleash.Internal.JsonTypes

Generic Context 
Instance details

Defined in Unleash.Internal.JsonTypes

Associated Types

type Rep Context :: Type -> Type #

Methods

from :: Context -> Rep Context x #

to :: Rep Context x -> Context #

Show Context 
Instance details

Defined in Unleash.Internal.JsonTypes

Eq Context 
Instance details

Defined in Unleash.Internal.JsonTypes

Methods

(==) :: Context -> Context -> Bool #

(/=) :: Context -> Context -> Bool #

type Rep Context 
Instance details

Defined in Unleash.Internal.JsonTypes

type Rep Context = D1 ('MetaData "Context" "Unleash.Internal.JsonTypes" "unleash-client-haskell-core-0.10.0-IeJtXZ1BtSK7TdlmAppTyM" 'False) (C1 ('MetaCons "Context" 'PrefixI 'True) ((S1 ('MetaSel ('Just "userId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: (S1 ('MetaSel ('Just "sessionId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "remoteAddress") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))) :*: ((S1 ('MetaSel ('Just "currentTime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "environment") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text))) :*: (S1 ('MetaSel ('Just "appName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "properties") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Map Text (Maybe Text))))))))

emptyContext :: Context #

An initial client context.

data VariantResponse #

Variant response.

Constructors

VariantResponse 

Fields

Instances

Instances details
FromJSON VariantResponse 
Instance details

Defined in Unleash.Internal.JsonTypes

ToJSON VariantResponse 
Instance details

Defined in Unleash.Internal.JsonTypes

Generic VariantResponse 
Instance details

Defined in Unleash.Internal.JsonTypes

Associated Types

type Rep VariantResponse :: Type -> Type #

Show VariantResponse 
Instance details

Defined in Unleash.Internal.JsonTypes

Eq VariantResponse 
Instance details

Defined in Unleash.Internal.JsonTypes

type Rep VariantResponse 
Instance details

Defined in Unleash.Internal.JsonTypes

type Rep VariantResponse = D1 ('MetaData "VariantResponse" "Unleash.Internal.JsonTypes" "unleash-client-haskell-core-0.10.0-IeJtXZ1BtSK7TdlmAppTyM" 'False) (C1 ('MetaCons "VariantResponse" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "payload") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Payload)) :*: S1 ('MetaSel ('Just "enabled") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))