Packages

Simple api client for https://www.postcodeapi.nu

Current section

Files

Jump to
postcodeapi lib postcodeapi.ex
Raw

lib/postcodeapi.ex

defmodule PostcodeApi do
defmodule Postcode do
defstruct [:city, :streets, :postcode, :municipality, :province, :nen5825, :geo]
end
defmodule City do
defstruct [:id, :label]
end
defmodule Municipality do
defstruct [:id, :label]
end
defmodule Province do
defstruct [:id, :label]
end
defmodule Nen5825 do
defstruct [:streets, :postcode]
end
defmodule Error do
defstruct [:status_code, :message]
end
defmodule Embedded do
defstruct [:_embedded]
end
defmodule Postcodes do
defstruct [:postcodes]
end
@moduledoc """
Documentation for PostcodeApi.
"""
@doc """
All postcodes in the Netherlands
## Examples
```
iex> PostcodeApi.get_postcodes(%{"postcodeArea" => "1234"})
{:ok, %Embedded{}}
iex> PostcodeApi.get_postcodes("1234")
{:ok, %Embedded{}}
```
"""
def get_postcodes(postcode) when is_map(postcode) do
query = URI.encode_query(postcode)
PostcodeApi.Base.request("postcodes/?" <> query, build_postcodes())
end
def get_postcodes(postcode) do
get_postcodes(%{"postcodeArea" => postcode})
end
@doc """
Return information on single postcode in P6 format
## Examples
```
iex> PostcodeApi.get_postcode("1234AA")
{:ok, %Postcode{}}
```
"""
def get_postcode(postcode) do
PostcodeApi.Base.request("postcodes/" <> postcode, build_postcode())
end
defp build_postcodes do
%Embedded{_embedded: %Postcodes{postcodes: [build_postcode()]}}
end
defp build_postcode do
%Postcode{
city: %City{},
province: %Province{},
municipality: %Municipality{},
nen5825: %Nen5825{}
}
end
end