Packages

Get mime type information from a url. Return error if the url is not a valid web url.

Current section

Files

Jump to
url_info lib url_info.ex
Raw

lib/url_info.ex

defmodule UrlInfo do
def get(url) do
uri = URI.parse(url)
if valid_url?(uri) do
[ type, name ] = parse_uri(uri)
%{
mime_type: "#{type}/#{name}",
type: type
}
else
%{ error: "invalid url" }
end
end
def parse_uri(uri) do
get_ext_from_uri(uri)
|> MIME.type()
|> String.split("/")
end
defp get_ext_from_uri(%URI{ path: nil }), do: nil
defp get_ext_from_uri(%URI{ path: path }) do
case Path.extname(path) do
"" -> nil
ext -> String.slice(ext, 1..(String.length(ext)))
end
end
defp valid_url?(%URI{ scheme: nil }), do: false
defp valid_url?(%URI{ host: nil }), do: false
defp valid_url?(%URI{ scheme: "http" }), do: true
defp valid_url?(%URI{ scheme: "https" }), do: true
defp valid_url?(_uri), do: false
end