Skip to content

Commit

Permalink
Merge pull request #1 from c7v/af1104e
Browse files Browse the repository at this point in the history
df
  • Loading branch information
Артём Соколовский authored Sep 2, 2023
2 parents b9a906a + c24b2de commit ef02253
Show file tree
Hide file tree
Showing 11 changed files with 184 additions and 34 deletions.
3 changes: 3 additions & 0 deletions src/BaseRequester.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

use GuzzleHttp\Client;

/**
* @author Артём Соколовский <dev.sokolovsky@gmail.com>
*/
abstract class BaseRequester
{
/**
Expand Down
42 changes: 29 additions & 13 deletions src/Cleaner.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,26 @@
use GuzzleHttp\Client;
use GuzzleHttp\RequestOptions;

/**
* Класс для постройки запросов к стандартизацию.
*
* @author Артём Соколовский <dev.sokolovsky@gmail.com>
*/
final class Cleaner
{
/**
* @var Client Http client.
*/
/** @var string Базовая URL для обращения. */
const BASE_URL = 'https://cleaner.dadata.ru/api/v1/clean/';

/** @var Client Http client. */
private Client $_httpClient;

/**
* @var array Http options.
*/
/** @var array Http options. */
private array $_httpOptions;

/**
* @var string Токен доступа к API DaData.Ru
*/
/** @var string Токен доступа к API DaData.Ru */
private string $_accessToken;

/**
* @var string Секрет от API DaData.Ru
*/
/** @var string Секрет от API DaData.Ru */
private string $_secret;

/**
Expand All @@ -42,7 +42,7 @@ public function __construct(string $accessToken, string $secret, int $timeOut =
$this->_secret = $secret;

$this->_httpClient = new Client([
'base_uri' => 'https://cleaner.dadata.ru/api/v1/clean/',
'base_uri' => self::BASE_URL,
'timeout' => $timeOut,
]);

Expand Down Expand Up @@ -73,6 +73,11 @@ public function reSetAccessToken(string $accessToken, string $secret): self
return $this;
}

/**
* Разбор адреса из строки «стандартизация»
* @param string $query Адрес.
* @return AddressRequester
*/
public function requesterAddress(string $query): AddressRequester
{
$address = new AddressRequester($query);
Expand All @@ -83,6 +88,11 @@ public function requesterAddress(string $query): AddressRequester
return $address;
}

/**
* Разбор ФИО из строки «стандартизация»
* @param string $query ФИО.
* @return NameRequester
*/
public function requesterName(string $query): NameRequester
{
$name = new NameRequester($query);
Expand All @@ -93,6 +103,12 @@ public function requesterName(string $query): NameRequester
return $name;
}

/**
* Проверяет телефон по справочнику Россвязи, определяет оператора с учётом переноса номеров, заполняет страну,
* город и часовой пояс.
* @param string $query Телефон.
* @return PhoneRequester
*/
public function requesterPhone(string $query): PhoneRequester
{
$name = new PhoneRequester($query);
Expand Down
57 changes: 38 additions & 19 deletions src/Suggestions.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,33 +9,36 @@
use c7v\dadata\requesters\FindByIdPartyRequester;
use c7v\dadata\requesters\FindByIdBankRequester;

/**
* Класс для постройки запросов для получения информации.
*
* @author Артём Соколовский <dev.sokolovsky@gmail.com>
*/
final class Suggestions
{
/**
* @var Client Http client.
*/
/** @var string Базовая URL для обращения. */
const BASE_URL = 'https://suggestions.dadata.ru/suggestions/api/';

/** @var Client Http client. */
private Client $_httpClient;

/**
* @var array Http options.
*/
/** @var array Http options. */
private array $_httpOptions;

/**
* @var string Токен доступа к API DaData.Ru
*/
/** @var string Токен доступа к API DaData.Ru */
private string $_accessToken;

/**
* @param string $accessToken Токен доступа к API DaData.Ru
*/
/**
* @param string $accessToken Токен доступа к API DaData.Ru
* @param int $timeOut TimeOut для запроса.
*/
public function __construct(string $accessToken, int $timeOut = 60)
{
/** @var string _accessToken */
$this->_accessToken = $accessToken;

$this->_httpClient = new Client([
'base_uri' => 'https://suggestions.dadata.ru/suggestions/api/',
'base_uri' => self::BASE_URL,
'timeout' => $timeOut,
]);

Expand All @@ -55,7 +58,6 @@ public function __construct(string $accessToken, int $timeOut = 60)
public function reSetAccessToken(string $accessToken): self
{
$this->_accessToken = $accessToken;

$this->_httpOptions = [
RequestOptions::HEADERS => [
'Authorization' => 'Token ' . $this->_accessToken
Expand All @@ -64,10 +66,11 @@ public function reSetAccessToken(string $accessToken): self
return $this;
}

/**
* Получить данные по ИНН.
* @return FindByIdPartyRequester
*/
/**
* Получить данные по ИНН.
* @param string $inn ИНН компании или индивидуального предпринимателя.
* @return FindByIdPartyRequester
*/
public function requesterFindByIdParty(string $inn): FindByIdPartyRequester
{
$findById = new FindByIdPartyRequester($inn);
Expand All @@ -78,6 +81,12 @@ public function requesterFindByIdParty(string $inn): FindByIdPartyRequester
return $findById;
}

/**
* Банк по БИК, SWIFT, ИНН, рег. номеру
* @param string $query БИК, SWIFT, ИНН и рег. номер банка
* @param string|null $kpp Дополнительно можно указать КПП если параметр $query имеет значение ИНН.
* @return FindByIdBankRequester
*/
public function requesterFindByIdBank(string $query, string $kpp = null): FindByIdBankRequester
{
$findById = new FindByIdBankRequester($query, $kpp);
Expand All @@ -88,7 +97,12 @@ public function requesterFindByIdBank(string $query, string $kpp = null): FindBy
return $findById;
}

public function requesterFindByIdFnsUnit(int $query): FindByIdFnsUnitRequester
/**
* Справочник инспекций Налоговой службы.
* @param string $query Поиск работает по полям: code, name_short и address.
* @return FindByIdFnsUnitRequester
*/
public function requesterFindByIdFnsUnit(string $query): FindByIdFnsUnitRequester
{
$findById = new FindByIdFnsUnitRequester($query);

Expand All @@ -98,6 +112,11 @@ public function requesterFindByIdFnsUnit(int $query): FindByIdFnsUnitRequester
return $findById;
}

/**
* Отделения Почты России.
* @param string $query Поиск работает по полям: postal_code и address_str.
* @return FindByAddressPostalUnitRequester
*/
public function requesterFindByAddressPostalUnit(string $query): FindByAddressPostalUnitRequester
{
$findById = new FindByAddressPostalUnitRequester($query);
Expand Down
22 changes: 21 additions & 1 deletion src/helpers/StyleData.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,15 @@

namespace c7v\dadata\helpers;

/**
* @author Артём Соколовский <dev.sokolovsky@gmail.com>
*/
class StyleData
{
/**
* @param string $string Название компании.
* @return string
*/
public static function normalQuotes(string $string): string
{
return preg_replace([
Expand All @@ -15,17 +22,30 @@ public static function normalQuotes(string $string): string
], $string);
}

/**
* @param int $time Метка времени.
* @return string
*/
public static function normalDate(int $time): string
{
return date('d.m.Y', substr($time,0,-3));
}

public static function normalManagementPost(string $post, $charset = "utf-8"): string
/**
* @param string $post Должность
* @param string $charset Кодировка строки
* @return string
*/
public static function normalManagementPost(string $post, string $charset = "utf-8"): string
{
$post = mb_strtolower($post, 'utf-8');
return mb_strtoupper(mb_substr($post, 0, 1, $charset), $charset).mb_substr($post, 1, mb_strlen($post, $charset)-1, $charset);
}

/**
* @param string $name ФИО строкой.
* @return array
*/
public static function explodeName(string $name): array
{
$array = explode(' ', $name);
Expand Down
13 changes: 13 additions & 0 deletions src/requesters/AddressRequester.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,30 @@
use GuzzleHttp\RequestOptions;
use c7v\dadata\BaseRequester;

/**
* @author Артём Соколовский <dev.sokolovsky@gmail.com>
*/
class AddressRequester extends BaseRequester
{
/** @var string Имя метода */
const METHOD_URL = 'address';

/** @var array Данные для отправки */
private array $_data;

/**
* @param string $query Адрес.
*/
public function __construct(string $query)
{
$this->_data[] = $query;
}

/**
* Отправка запроса.
* @return \Psr\Http\Message\ResponseInterface
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function send(): \Psr\Http\Message\ResponseInterface
{
return self::$_httpClient->request('POST', self::METHOD_URL, array_merge(self::$_httpOptions, [
Expand Down
13 changes: 13 additions & 0 deletions src/requesters/FindByAddressPostalUnitRequester.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,30 @@
use GuzzleHttp\RequestOptions;
use c7v\dadata\BaseRequester;

/**
* @author Артём Соколовский <dev.sokolovsky@gmail.com>
*/
class FindByAddressPostalUnitRequester extends BaseRequester
{
/** @var string Имя метода */
const METHOD_URL = '4_1/rs/suggest/postal_unit';

/** @var array Данные для отправки */
private array $_data;

/**
* @param string $query Поиск работает по полям: postal_code и address_str.
*/
public function __construct(string $query)
{
$this->_data['query'] = $query;
}

/**
* Отправка запроса.
* @return \Psr\Http\Message\ResponseInterface
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function send(): \Psr\Http\Message\ResponseInterface
{
return self::$_httpClient->request('POST', self::METHOD_URL, array_merge(self::$_httpOptions, [
Expand Down
14 changes: 14 additions & 0 deletions src/requesters/FindByIdBankRequester.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,21 @@
use GuzzleHttp\RequestOptions;
use c7v\dadata\BaseRequester;

/**
* @author Артём Соколовский <dev.sokolovsky@gmail.com>
*/
class FindByIdBankRequester extends BaseRequester
{
/** @var string Имя метода */
const METHOD_URL = '4_1/rs/findById/bank';

/** @var array Данные для отправки */
private array $_data;

/**
* @param string $query БИК, SWIFT, ИНН и рег. номер банка
* @param string|null $kpp Дополнительно можно указать КПП если параметр $query имеет значение ИНН.
*/
public function __construct(string $query, string $kpp = null)
{
$this->_data = [];
Expand All @@ -20,6 +29,11 @@ public function __construct(string $query, string $kpp = null)
}
}

/**
* Отправка запроса.
* @return \Psr\Http\Message\ResponseInterface
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function send(): \Psr\Http\Message\ResponseInterface
{
return self::$_httpClient->request('POST', self::METHOD_URL, array_merge(self::$_httpOptions, [
Expand Down
15 changes: 14 additions & 1 deletion src/requesters/FindByIdFnsUnitRequester.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,30 @@
use GuzzleHttp\RequestOptions;
use c7v\dadata\BaseRequester;

/**
* @author Артём Соколовский <dev.sokolovsky@gmail.com>
*/
class FindByIdFnsUnitRequester extends BaseRequester
{
/** @var string Имя метода */
const METHOD_URL = '4_1/rs/suggest/fns_unit';

/** @var array Данные для отправки */
private array $_data;

public function __construct(int $query)
/**
* @param string $query Поиск работает по полям: code, name_short и address.
*/
public function __construct(string $query)
{
$this->_data['query'] = $query;
}

/**
* Отправка запроса.
* @return \Psr\Http\Message\ResponseInterface
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function send(): \Psr\Http\Message\ResponseInterface
{
return self::$_httpClient->request('POST', self::METHOD_URL, array_merge(self::$_httpOptions, [
Expand Down
Loading

0 comments on commit ef02253

Please sign in to comment.