lib/requests/payments/sources/sofort.ex

defmodule Requests.Payments.Sources.Sofort do
    @moduledoc false
  @type t :: %__MODULE__{
          type: String.t(),
          country_code: <<_::2>>,
          language_code: <<_::2>>
        }

  @enforce_keys [:type]
  defstruct [
    :type,
    :country_code,
    :language_code
  ]

  def build(%{type: type} = params) do
    %{
      type: type,
      country_code: params[:country_code],
      language_code: params[:language_code]
    }
  end

  def build(%{"type" => type} = params) do
    %{
      type: type,
      country_code: params["country_code"],
      language_code: params["language_code"]
    }
  end

  def build(_), do: nil
end