Split.RPC.Fallback (split v0.2.0-rc.0)

This module is used to provide default values for all Splitd RPC calls.

When a call to Splitd fails, 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()) ::
  map() | Split.Impression.t() | list() | boolean() | nil

Provides a default value for the given RPC message.

Examples

iex> Fallback.fallback(%Message{o: 0x11})
%Impression{treatment: "control", label: "exception"}

iex> Fallback.fallback(%Message{o: 0x13})
%Impression{treatment: "control", label: "exception", config: nil}

iex> Fallback.fallback(%Message{
...>   o: 0x12,
...>   a: ["user_key", "bucketing_key", ["feature_1", "feature_2"], %{}]
...> })
%{
  "feature_1" => %Impression{treatment: "control", label: "exception"},
  "feature_2" => %Impression{treatment: "control", label: "exception"}
}

iex> Fallback.fallback(%Message{o: 0x14, a: ["user_key", "bucketing_key", ["feature_a"], %{}]})
%{"feature_a" => %Impression{treatment: "control", label: "exception", config: nil}}

iex> Fallback.fallback(%Message{o: 0xA1})
nil

iex> Fallback.fallback(%Message{o: 0xA2})
[]

iex> Fallback.fallback(%Message{o: 0xA0})
[]

iex> Fallback.fallback(%Message{o: 0x80})
false