lib/libphonenumber.ex

defmodule Libphonenumber do
  @moduledoc """
  Documentation for `Libphonenumber`.
  """

  @doc """
  Check is mobile phone valid (phone number must be MSISDN)

  ## Examples

      iex> Libphonenumber.mobile_phone_valid?("+380938562241")
      true

      iex> Libphonenumber.mobile_phone_valid?("+380338560241")
      false

  """
  @spec mobile_phone_valid?(binary) :: boolean
  def mobile_phone_valid?(phone_number) do
    :libphonenumbers.is_mobile_phone_valid(phone_number)
  end

  @doc """
  Show mobile phone validation info (phone number must be MSISDN)

  ## Examples

      iex> Libphonenumber.mobile_phone_number_info("+380938562241")
      %{
        country_metadata: %{code: "380", id: "UA", name: "Ukraine (UA)"},
        errors: [],
        phone: "+380938562241",
        valid: true
      }
  """
  @spec mobile_phone_number_info(binary) :: %{
          :errors => [:null | map],
          :valid => boolean,
          optional(:country_metadata) => %{code: binary, id: any, name: any},
          optional(:phone) => binary
        }

  def mobile_phone_number_info(phone_number) do
    :libphonenumbers.mobile_phone_number_info(phone_number)
  end
end