README.md

<img src='https://camo.githubusercontent.com/46886c3e689a0d4a3f6c0733d1cab5d9f9a3926d/68747470733a2f2f697066696e6465722e696f2f6173736574732f696d616765732f6c6f676f732f6c6f676f2e706e67' height='60' alt='IP Finder'></a>
#  IPFinder elixir Client Library

The official elixir client library for the [IPFinder.io](https://ipfinder.io) get details for :
-  IP address details (city, region, country, postal code, latitude and more ..)
-  ASN details (Organization name, registry,domain,comany_type, and more .. )
-  Firewall by supported formats details (apache_allow,  nginx_deny, CIDR , and more ..)
-  IP Address Ranges by the Organization name  details (list_asn, list_prefixes , and more ..)
-  service status details (queriesPerDay, queriesLeft, key_type, key_info)
- Get Domain IP (asn, organization,country_code ....)
- Get Domain IP history (total_ip, list_ip,organization,asn ....)
- Get list Domain By ASN, Country,Ranges (select_by , total_domain  , list_domain ....)

## Getting Started
singup for a free account at [https://ipfinder.io/auth/signup](https://ipfinder.io/auth/signup), for Free IPFinder API access token.

The free plan is limited to 4,000 requests a day, and doesn't include some of the data fields
To enable all the data fields and additional request volumes see [https://ipfinder.io/pricing](https://ipfinder.io/pricing).

## Documentation

See the [official documentation](https://ipfinder.io/docs).

## Installation
Add IPFinder  to your project's dependencies in `mix.exs`:
```elixir
  defp deps do
    [
      {:ipfinder, "~> 1.0.0"}
    ]
  end

  def application do
    [ applications: [:ipfinder] ]
  end
```
And fetch your project's dependencies:

```bash
$ mix deps.get
```

## Usage
Note: You can load IPFinder into the Elixir REPL by executing this command from the root of your project:

```bash
$ iex -S mix
```

## With `free` TOKEN

```elixir
iex> conf = Ipfinder.new

# lookup your IP address information
iex> {:ok, auth} = Authentication(conf)

auth
# print your ip
auth.ip
```

## Authentication

```elixir
iex> conf = Ipfinder.new("YOUR_TOKEN_GOES_HERE")

# lookup your IP address information
iex> {:ok, auth} = Authentication(conf)

iex> auth
# print your ip
iex> auth.ip

```

## Get IP address

```elixir
iex> conf = Ipfinder.new("YOUR_TOKEN_GOES_HERE")

# GET Get details for 1.0.0.0
iex> {:ok, ip} = getAddressInfo(conf,"1.0.0.0")
# print data
ip
```

## Get ASN
This API available as part of our Pro and enterprise [https://ipfinder.io/pricing](https://ipfinder.io/pricing).

```elixir
iex> conf = Ipfinder.new("YOUR_TOKEN_GOES_HERE")

iex> {:ok, asn} = getAsn(conf,"AS1")
# print data
iex> asn
```

## Firewall
This API available as part of our  enterprise [https://ipfinder.io/pricing](https://ipfinder.io/pricing).
formats supported are :  `apache_allow`, `apache_deny`,`nginx_allow`,`nginx_deny`, `CIDR`, `linux_iptables`, `netmask`, `inverse_netmask`, `web_config_allow `, `web_config_deny`, `cisco_acl`, `peer_guardian_2`, `network_object`, `cisco_bit_bucket`, `juniper_junos`, `microtik`

```elixir
iex> conf = Ipfinder.new("YOUR_TOKEN_GOES_HERE")

# lookup Asn Firewall information
iex> {:ok, fire} = getFirewall(conf,"AS1", 'nginx_deny')

iex>fire
```

## Get IP Address Ranges
This API available as part of our  enterprise [https://ipfinder.io/pricing](https://ipfinder.io/pricing).

```elixir
iex> conf = Ipfinder.new("YOUR_TOKEN_GOES_HERE")

# lookup Organization information
iex> {:ok, range} = getRanges(conf,"Telecom Algeria")

iex> range
```

## Get service status

```elixir
iex> conf = Ipfinder.new("YOUR_TOKEN_GOES_HERE")

# lookup IP TOKEN information
iex> {:ok, status} = getStatus(conf)

iex> status
```

## Get Domain IP


```elixir
iex> conf = Ipfinder.new("YOUR_TOKEN_GOES_HERE")

iex> {:ok, domain} = getDomain(conf,"google.fr")

iex> domain
```

## Get Domain IP history

```elixir
iex> conf = Ipfinder.new("YOUR_TOKEN_GOES_HERE")

# domain name IP history
iex> {:ok, domain} = getDomainHistory(conf,"google.fr")

iex> domain
```

## Get list Domain By ASN, Country,Ranges


```elixir
iex> conf = Ipfinder.new("YOUR_TOKEN_GOES_HERE")

# list live domain by country DZ,US,TN,FR,MA

iex> {:ok, by} = getDomainBy(conf,"FR")

iex> by
```

## Add proxy
```r
iex> conf = Ipfinder.new("YOUR_TOKEN_GOES_HERE", "https://ipfinder.yourdomain.com")
```

Sample codes under **examples/** folder.


## Contact

Contact Us With Additional Questions About Our API, if you would like more information about our API that isn’t available in our IP geolocation API developer documentation, simply [contact](https://ipfinder.io/contact) us at any time and we’ll be able to help you find what you need.

## License
----

[![GitHub license](https://img.shields.io/github/license/ipfinder-io/ip-finder-elixir.svg)](https://github.com/ipfinder-io/ip-finder-elixir)