Packages
ConfigCat SDK for Elixir. Feature Flags created by developers for developers with ❤️. ConfigCat lets you manage feature flags across frontend, backend, mobile, and desktop apps without (re)deploying code. % rollouts, user targeting, segmentation. Feature toggle SDKs for all main languages.
Current section
Files
Jump to
Current section
Files
lib/config_cat/local_map_data_source.ex
defmodule ConfigCat.LocalMapDataSource do
@moduledoc """
Use flag overrides from a provided `Map`.
See `ConfigCat.OverrideDataSource` for more details.
"""
alias ConfigCat.{Config, Constants, OverrideDataSource}
require ConfigCat.Constants
require Logger
defstruct [:override_behaviour, :settings]
@type t :: %__MODULE__{
override_behaviour: OverrideDataSource.behaviour(),
settings: Config.t()
}
@doc """
Create a `ConfigCat.OverrideDataSource` from a map of flag/value pairs.
"""
@spec new(map, OverrideDataSource.behaviour()) :: t
def new(overrides, override_behaviour) do
flags =
overrides
|> Enum.map(fn {key, value} -> {key, %{Constants.value() => value}} end)
|> Map.new()
%__MODULE__{
override_behaviour: override_behaviour,
settings: %{Constants.feature_flags() => flags}
}
end
defimpl OverrideDataSource do
def behaviour(%{override_behaviour: behaviour}), do: behaviour
def overrides(%{settings: settings}), do: {:ok, settings}
end
end