lib/unleash/strategy/application_hostname.ex

defmodule Unleash.Strategy.ApplicationHostname do
  @moduledoc """
  Does not require anything in `t:Unleash.context/0`

  Based on the
  [`applicationHostname`](https://unleash.github.io/docs/activation_strategy#applicationhostname)
  strategy.

  """
  use Unleash.Strategy, name: "ApplicationHostname"

  alias Unleash.Strategy.Utils

  def enabled?(%{"hostnames" => hostnames}, _context) do
    with {:ok, hostname} <- :inet.gethostname(),
         hostname = List.to_string(hostname) do
      {Utils.in_list?(hostnames, hostname, &String.downcase/1),
       %{hostname: hostname, hostnames: hostnames}}
    end
  end

  def enabled?(_params, _context), do: false
end