Current section
Files
Jump to
Current section
Files
lib/elixcep.ex
defmodule Elixcep do
@moduledoc """
Documentation for `Elixcep`.
"""
alias Elixcep.Address
@url_correio "https://buscacepinter.correios.com.br/app/endereco/carrega-cep-endereco.php"
@doc """
Retorna todas informacoes do CEP fornecido.
"""
def get_address_by_cep(cep) do
get_address_by_cep_from_correios(cep)
end
@doc """
Retorna todas informacoes do endereco fornecido.
"""
def get_cep_by_address(address) do
get_cep_by_address_from_correios(address)
end
defp get_address_by_cep_from_correios(cep) do
case HTTPoison.post(
@url_correio,
{:form, [{"pagina", "/app/endereco/index.php"}, {"endereco",cep}, {"tipoCEP", "ALL"}]},
%{"Content-Type" => "application/x-www-form-urlencoded", "source" => "elixcep"}
) do
{:ok, %{body: raw_body, status_code: code}} -> {code, raw_body}
sct = Jason.decode!(raw_body)
dados = sct["dados"] |> hd
address = %Address{rua: dados["logradouroDNEC"], bairro: dados["bairro"], cep: dados["cep"], cidade: dados["localidade"], uf: dados["uf"]}
address
end
end
defp get_cep_by_address_from_correios(address) do
case HTTPoison.post(
@url_correio,
{:form, [{"pagina", "/app/endereco/index.php"}, {"endereco",address}, {"tipoCEP", "ALL"}]},
%{"Content-Type" => "application/x-www-form-urlencoded", "source" => "elixcep"}
) do
{:ok, %{body: raw_body, status_code: code}} -> {code, raw_body}
sct = Jason.decode!(raw_body)
dados = sct["dados"] |> hd
address = %Address{rua: dados["logradouroDNEC"], bairro: dados["bairro"], cep: dados["cep"], cidade: dados["localidade"], uf: dados["uf"]}
address
end
end
end