Current section
Files
Jump to
Current section
Files
src/openfeature@client.erl
-module(openfeature@client).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([get_domain/1, get_name/1, get_bool_details/4, get_string_details/4, get_int_details/4, get_float_details/4, get_dynamic_details/4, get_bool_value/4, get_string_value/4, get_int_value/4, get_float_value/4, get_dynamic_value/4, set_context/2]).
-export_type([client/0, client_metadata/0]).
-type client() :: {client,
openfeature@provider:feature_provider(),
client_metadata(),
openfeature@evaluation_context:evaluation_context()}.
-type client_metadata() :: {client_metadata, openfeature@domain:domain()}.
-spec get_domain(client_metadata()) -> openfeature@domain:domain().
get_domain(Metadata) ->
erlang:element(2, Metadata).
-spec get_name(client_metadata()) -> openfeature@domain:domain().
get_name(Metadata) ->
get_domain(Metadata).
-spec get_bool_details(
client(),
binary(),
boolean(),
openfeature@evaluation_context:evaluation_context()
) -> openfeature@evaluation:resolution_details(boolean()).
get_bool_details(Client, Flag, Default_value, Evaluation_context) ->
(erlang:element(5, erlang:element(2, Client)))(
Flag,
Default_value,
Evaluation_context
).
-spec get_string_details(
client(),
binary(),
binary(),
openfeature@evaluation_context:evaluation_context()
) -> openfeature@evaluation:resolution_details(binary()).
get_string_details(Client, Flag, Default_value, Evaluation_context) ->
(erlang:element(6, erlang:element(2, Client)))(
Flag,
Default_value,
Evaluation_context
).
-spec get_int_details(
client(),
binary(),
integer(),
openfeature@evaluation_context:evaluation_context()
) -> openfeature@evaluation:resolution_details(integer()).
get_int_details(Client, Flag, Default_value, Evaluation_context) ->
(erlang:element(7, erlang:element(2, Client)))(
Flag,
Default_value,
Evaluation_context
).
-spec get_float_details(
client(),
binary(),
float(),
openfeature@evaluation_context:evaluation_context()
) -> openfeature@evaluation:resolution_details(float()).
get_float_details(Client, Flag, Default_value, Evaluation_context) ->
(erlang:element(8, erlang:element(2, Client)))(
Flag,
Default_value,
Evaluation_context
).
-spec get_dynamic_details(
client(),
binary(),
gleam@dynamic:dynamic_(),
openfeature@evaluation_context:evaluation_context()
) -> openfeature@evaluation:resolution_details(gleam@dynamic:dynamic_()).
get_dynamic_details(Client, Flag, Default_value, Evaluation_context) ->
(erlang:element(9, erlang:element(2, Client)))(
Flag,
Default_value,
Evaluation_context
).
-spec get_value_from_details(openfeature@evaluation:resolution_details(HNB)) -> HNB.
get_value_from_details(Details) ->
erlang:element(2, Details).
-spec get_bool_value(
client(),
binary(),
boolean(),
openfeature@evaluation_context:evaluation_context()
) -> boolean().
get_bool_value(Client, Flag, Default_value, Evaluation_context) ->
_pipe = get_bool_details(Client, Flag, Default_value, Evaluation_context),
get_value_from_details(_pipe).
-spec get_string_value(
client(),
binary(),
binary(),
openfeature@evaluation_context:evaluation_context()
) -> binary().
get_string_value(Client, Flag, Default_value, Evaluation_context) ->
_pipe = get_string_details(Client, Flag, Default_value, Evaluation_context),
get_value_from_details(_pipe).
-spec get_int_value(
client(),
binary(),
integer(),
openfeature@evaluation_context:evaluation_context()
) -> integer().
get_int_value(Client, Flag, Default_value, Evaluation_context) ->
_pipe = get_int_details(Client, Flag, Default_value, Evaluation_context),
get_value_from_details(_pipe).
-spec get_float_value(
client(),
binary(),
float(),
openfeature@evaluation_context:evaluation_context()
) -> float().
get_float_value(Client, Flag, Default_value, Evaluation_context) ->
_pipe = get_float_details(Client, Flag, Default_value, Evaluation_context),
get_value_from_details(_pipe).
-spec get_dynamic_value(
client(),
binary(),
gleam@dynamic:dynamic_(),
openfeature@evaluation_context:evaluation_context()
) -> gleam@dynamic:dynamic_().
get_dynamic_value(Client, Flag, Default_value, Evaluation_context) ->
_pipe = get_dynamic_details(Client, Flag, Default_value, Evaluation_context),
get_value_from_details(_pipe).
-spec set_context(client(), openfeature@evaluation_context:evaluation_context()) -> client().
set_context(Client, Evaluation_context) ->
{client, Provider, Metadata, _} = Client,
{client, Provider, Metadata, Evaluation_context}.