ipdata / api-client
API client for ipdata.co
Installs: 51 590
Dependents: 0
Suggesters: 0
Security: 0
Stars: 18
Watchers: 4
Forks: 4
Open Issues: 0
Requires
- php: >= 7.2
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
Requires (Dev)
- nyholm/psr7: ^1.2
- php-http/discovery: ^1.7
- php-http/httplug: ^2.0
- php-http/mock-client: ^1.3
- phpunit/phpunit: ^8.5
- symfony/http-client: ^5.0
This package is auto-updated.
Last update: 2024-12-08 21:51:16 UTC
README
An API client to communicate with Ipdata.co.
Install
composer require ipdata/api-client
The client is built upon PSR standards. We use PSR-18 for HTTP client and PSR-17 for RequestFactory. These needs to be passed to the client's constructor.
Example packages for PSR-17 and PSR-18:
composer require nyholm/psr7 symfony/http-client
use Ipdata\ApiClient\Ipdata; use Symfony\Component\HttpClient\Psr18Client; use Nyholm\Psr7\Factory\Psr17Factory; $httpClient = new Psr18Client(); $psr17Factory = new Psr17Factory(); $ipdata = new Ipdata('my_api_key', $httpClient, $psr17Factory);
How to use
To send a geocode request you simply need to provide the IP address you are interested in.
$data = $ipdata->lookup('69.78.70.144'); echo json_encode($data, JSON_PRETTY_PRINT);
The output will be the response from the API server with one additional status
field.
{ "ip": "69.78.70.144", "is_eu": false, "city": null, "region": null, "region_code": null, "country_name": "United States", "country_code": "US", "continent_name": "North America", "continent_code": "NA", "latitude": 37.751, "longitude": -97.822, "postal": null, "calling_code": "1", "flag": "https:\/\/ipdata.co\/flags\/us.png", "emoji_flag": "\ud83c\uddfa\ud83c\uddf8", "emoji_unicode": "U+1F1FA U+1F1F8", "asn": { "asn": "AS6167", "name": "Cellco Partnership DBA Verizon Wireless", "domain": "verizonwireless.com", "route": "69.78.0.0\/16", "type": "business" }, "carrier": { "name": "Verizon", "mcc": "310", "mnc": "004" }, "languages": [ { "name": "English", "native": "English" } ], "currency": { "name": "US Dollar", "code": "USD", "symbol": "$", "native": "$", "plural": "US dollars" }, "time_zone": { "name": "America\/Chicago", "abbr": "CST", "offset": "-0600", "is_dst": false, "current_time": "2020-01-25T06:14:37.081772-06:00" }, "threat": { "is_tor": false, "is_proxy": false, "is_anonymous": false, "is_known_attacker": false, "is_known_abuser": false, "is_threat": false, "is_bogon": false }, "count": "6", "status": 200 }
If you are not interested in all the fields in the response, you may query only the fields you want.
$data = $ipdata->lookup('69.78.70.144', ['longitude', 'latitude', 'country_name']); echo json_encode($data, JSON_PRETTY_PRINT);
{ "longitude": -97.822, "latitude": 37.751, "country_name": "United States", "status": 200 }
Bulk request
If you want to look up multiple IPs at the same time you may use the bulkLookup()
function.
$data = $ipdata->buildLookup(['1.1.1.1', '69.78.70.144'], ['longitude', 'latitude', 'country_name']); echo json_encode($data, JSON_PRETTY_PRINT);
{ "0": { "longitude": 143.2104, "latitude": -33.494, "country_name": "Australia" }, "1": { "longitude": -97.822, "latitude": 37.751, "country_name": "United States" }, "status": 200 }
Available Fields
A list of all the fields returned by the API is maintained at Response Fields
Errors
A list of possible errors is available at Status Codes