IP information lookup provider.
To use Geolix with your projects, edit your mix.exs file and add the project as a dependency:
defp deps do
[
# ...
{:geolix, "~> 2.0"},
# ...
]
endIf you want to use a manual supervision approach (without starting the application) please look at the inline documentation of Geolix.Supervisor.
Every lookup request is passed to all configured databases:
config :geolix,
databases: [
%{
id: :city,
adapter: MyAdapter,
source: "/absolute/path/to/city.db"
},
%{
id: :country,
adapter: MyAdapter,
source: "/absolute/path/to/country.db"
}
]Above configuration will use the adapter MyAdapter and return a result for an example :city and :country database. The exact configuration values you need to provide are defined by the adapter you are using.
More details on database configuration can be found inline at the main Geolix module.
All the work done by Geolix is handled using adapters. These adapters can use a database, a webservice or any other means available to handle your lookup requests.
Known adapters:
For detailed information how to configure the adapter of your choice please read the adapter's configuration.
Pre-packaged is a fake/static adapter (Geolix.Adapter.Fake) working on a plain Agent holding your IP lookup responses. An example of how you might use this adapter:
config :geolix,
databases: [
%{
id: :country,
adapter: Geolix.Adapter.Fake,
data: %{
{1, 1, 1, 1} => %{country: %{iso_code: "US"}},
{2, 2, 2, 2} => %{country: %{iso_code: "GB"}}
}
}
]Please refer to the inline documentation of the Geolix.Adapter.Fake module for more details.
Adapters are expected to adhere to the Geolix.Adapter behaviour. As a starting point for writing a custom adapter you can look at the packaged Geolix.Adapter.Fake.
Lookups are done using Geolix.lookup/1,2:
iex(1)> Geolix.lookup("127.0.0.1")
%{
city: %{...},
country: %{...}
}
iex(2)> Geolix.lookup({127, 0, 0, 1}, where: :my_database)
%{...}Full documentation is available inline in the Geolix module and at https://hexdocs.pm/geolix.