lib/auth0/entity/user_blocks.ex

defmodule Auth0.Entity.UserBlocks do
  @moduledoc """
  Documentation for entity of UserBlocks.

  """
  defmodule BlockedFor do
    @moduledoc """
    Documentation for entity of UserBlocks BlockedFor.

    """

    alias Auth0.Common.Util

    defstruct identifier: nil,
              connection: nil,
              ip: nil

    @type t :: %__MODULE__{
            identifier: String.t(),
            connection: String.t(),
            ip: String.t()
          }

    @spec from(map) :: __MODULE__.t()
    def from(value) do
      value |> Util.to_struct(__MODULE__)
    end
  end

  alias Auth0.Common.Util

  defstruct blocked_for: nil

  @type t :: %__MODULE__{
          blocked_for: list(BlockedFor.t())
        }

  @spec from(map) :: __MODULE__.t()
  def from(value) do
    user_blocks = value |> Util.to_struct(__MODULE__)

    %{
      user_blocks
      | blocked_for:
          if(user_blocks.blocked_for |> is_list,
            do: user_blocks.blocked_for |> Enum.map(&BlockedFor.from/1),
            else: nil
          )
    }
  end
end