A SDK for ip.

v1.1.9 2019-04-18 08:48 UTC

README

A SDK for ip.

Build Status Scrutinizer Code Quality Code Coverage StyleCI build status

Support

Installing

composer require duc_cnzj/ip

Usage

$client = new IpClient();

$client->setIp('xxx.xxx.xxx.xxx')->getCity();
$client->setIp('xxx.xxx.xxx.xxx')->getCountry();
$client->setIp('xxx.xxx.xxx.xxx')->getRegion();
$client->setIp('xxx.xxx.xxx.xxx')->getIp();

# or
$client->setIp('xxx.xxx.xxx.xxx');
$client->getCity();
$client->city;

# use Provider (baidu, taobao, ali)
$client = new IpClient();

# if use baidu api, you need provide ak secret.
$client->useProvider('baidu')
    ->setProviderConfig('baidu', ['ak' => 'xxxxxxxxxxxx']);
# or 
$client->useProvider('baidu')
    ->setProviderConfig('baidu', 'xxxxxxxxxxxx');

# if use tencent api, you need provide ak secret.
$client->useProvider('tencent')
    ->setProviderConfig('tencent', ['key' => 'xxxxxxxxxxxx']);
# or 
$client->useProvider('tencent')
    ->setProviderConfig('tencent', 'xxxxxxxxxxxx');

# mutil set/get configs
$client->setConfigs(['ali' => 'xxxxx', 'baidu' => 'xxxxx']);
$client->getConfigs('ali', 'baidu');

# if use ali api, you need provide ak secret.
$client->useProvider('ali')
    ->setProviderConfig('ali', ['app_code' => 'xxxxxxxxxxxx']);

# if use taobao.
$client->useProvider('taobao');

# default use all provider. if you want use all, pls set secret for each provider.
$client->setProviderConfig('baidu', ['ak' => 'xxxxxxxxxxxx']);
$client->setProviderConfig('ali', 'xxxxxxxxxxxx');

# package will try 3 times when provider response error. use try method to reset tryTimes.
$client->setIp('xxx.xxx.xxx.xxx')->try(10);

# in laravel
 $client = app('ip');

extra property

# baidu/ali/tencent return point_x and point_y, so you can:
$client->useProvider('baidu')
    ->setProviderConfig('baidu', ['ak' => 'xxxxxxxxxxxx']);

$client->useProvider('ali')
    ->setProviderConfig('ali', ['app_code' => 'xxxxxxxxxxxx']);

$client->useProvider('tencent')
    ->setProviderConfig('tencent', 'xxxxxxxxxxxx');

$client->getPointX();
$client->getPointY();

# taobao return isp, so u can:

$client->useProvider('taobao')
    ->setIp('xxx.xxx.xxx.xxx')
    ->getIsp();

when getXXX() false it will return null, u can use $client->getErrors() get error info;

alias

$client->use('taobao', 'baidu'); # It will be executed in the order you passed it in
# Equals to
$client->useProvider('taobao', 'baidu');

other methods

$client->clearUse(); # will clear providers;

# custom your instance. need implement DucCnzj\Ip\Imp\IpImp, Object or String.
# if it dont need secret, pls set the third parameter false;
$client->bind('taobao', $taobao);

# set custom CacheStore. default is ArrayStore. need implement DucCnzj\Ip\Imp\CacheStoreImp;
$client->setCacheStore($store);

License

MIT