Split.RPC.Fallback (split v0.1.0)
This module is used to provide default values for all Splitd RPC calls.
When a call to Splitd fails, and the SDK was initialized with fallback_enabled,
the fallback values are returned instead of the error received from the socket.
Summary
Functions
Provides a default value for the given RPC message.
Functions
Link to this function
fallback(message)
@spec fallback(Split.RPC.Message.t()) :: {:ok, map() | Split.Treatment.t(), list(), nil} | :ok
Provides a default value for the given RPC message.
Examples
iex> Fallback.fallback(%Message{o: 0x11})
{:ok, %Treatment{treatment: "control", label: "fallback treatment"}}
iex> Fallback.fallback(%Message{o: 0x13})
{:ok, %Treatment{treatment: "control", label: "fallback treatment", config: nil}}
iex> Fallback.fallback(%Message{
...> o: 0x12,
...> a: ["user_key", "bucketing_key", ["feature_1", "feature_2"], %{}]
...> })
{:ok,
%{
"feature_1" => %Treatment{treatment: "control", label: "fallback treatment"},
"feature_2" => %Treatment{treatment: "control", label: "fallback treatment"}
}}
iex> Fallback.fallback(%Message{o: 0x14, a: ["user_key", "bucketing_key", ["feature_a"], %{}]})
{:ok, %{"feature_a" => %Treatment{treatment: "control", label: "fallback treatment", config: nil}}}
iex> Fallback.fallback(%Message{o: 0xA1})
{:ok, nil}
iex> Fallback.fallback(%Message{o: 0xA2})
{:ok, []}
iex> Fallback.fallback(%Message{o: 0xA0})
{:ok, %{split_names: []}}
iex> Fallback.fallback(%Message{o: 0x80})
:ok