GeoIP v0.1.2 GeoIP
Elixir library to lookup the geo location for an IP address or hostname using freegeoip.net
iex> GeoIP.lookup("google.com")
{:ok,
%GeoIP.Location{city: "Mountain View", country_code: "US",
country_name: "United States", ip: "172.217.4.78", latitude: 37.4192,
longitude: -122.0574, metro_code: 807, region_code: "CA",
region_name: "California", time_zone: "America/Los_Angeles",
zip_code: "94043"}}
Summary
Functions
Lookup the location for the given IP address/hostname
Called when an application is started
Functions
Lookup the location for the given IP address/hostname.
Args:
host
- The IP/hostname or Plug.Conn instance to use for the lookup. The IP can be either a string or a tuple.
This function returns {:ok, response}
if the lookup is successful, {:error, %GeoIP.Error{reason: reason}}
otherwise.
Examples:
{:ok, location} = GeoIP.lookup({8, 8, 8, 8})
{:ok, location} = GeoIP.lookup("8.8.8.8")
{:ok, location} = GeoIP.lookup("google.com")
{:ok, location} = GeoIP.lookup(conn) # A `Plug.Conn` instance
Called when an application is started.
This function is called when an the application is started using
Application.start/2
(and functions on top of that, such as
Application.ensure_started/2
). This function should start the top-level
process of the application (which should be the top supervisor of the
application’s supervision tree if the application follows the OTP design
principles around supervision).
start_type
defines how the application is started:
:normal
- used if the startup is a normal startup or if the application is distributed and is started on the current node because of a failover from another mode and the application specification key:start_phases
is:undefined
.{:takeover, node}
- used if the application is distributed and is started on the current node because of a failover on the nodenode
.{:failover, node}
- used if the application is distributed and is started on the current node because of a failover on nodenode
, and the application specification key:start_phases
is not:undefined
.
start_args
are the arguments passed to the application in the :mod
specification key (e.g., mod: {MyApp, [:my_args]}
).
This function should either return {:ok, pid}
or {:ok, pid, state}
if
startup is successful. pid
should be the PID of the top supervisor. state
can be an arbitrary term, and if omitted will default to []
; if the
application is later stopped, state
is passed to the stop/1
callback (see
the documentation for the c:stop/1
callback for more information).
use Application
provides no default implementation for the start/2
callback.
Callback implementation for Application.start/2
.