Packages

Find the mail exchanger for a given hostname.

Current section

Files

Jump to
mx_tool lib adapter live.ex
Raw

lib/adapter/live.ex

defmodule MxTool.Adapter.Live do
alias MxTool.{Request, Response}
@behaviour MxTool.Adapter.Base
def lookup(%Request{domain: domain}), do: lookup(domain)
def lookup(domain) when is_binary(domain) do
domain
|> to_charlist
|> lookup
end
def lookup(domain) when is_list(domain) do
domain
|> lookup_all
|> Response.new
end
defp lookup_all(domain) do
domain
|> :inet_res.lookup(:in, :mx)
|> normalize_records
end
defp normalize_records(nil), do: []
defp normalize_records(domains) do
Enum.map(domains, fn({priority, domain}) ->
{priority, to_string(domain)}
end)
end
end