GeoIP v0.2.6 GeoIP View Source

Elixir library to lookup the geo location for an IP address or hostname using freegeoip.net

iex> GeoIP.lookup("google.com")
{:ok,
 %{
  city: "San Francisco",
  country_code: "US",
  country_name: "United States",
  ip: "192.30.253.113",
  latitude: 37.7697,
  longitude: -122.3933,
  metro_code: 807,
  region_code: "CA",
  region_name: "California",
  time_zone: "America/Los_Angeles",
  zip_code: "94107"
  }
}

Link to this section Summary

Functions

Lookup the location for the given IP address/hostname.

Called when an application is started.

Link to this section 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 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 node 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 node node.
  • {:failover, node} - used if the application is distributed and is started on the current node because of a failover on node node, 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.