Skip to content

Commit b9a906a

Browse files
author
Артём Соколовский
committed
промежуточный
1 parent 1625cab commit b9a906a

7 files changed

+254
-0
lines changed

src/Cleaner.php

+105
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
<?php
2+
3+
namespace c7v\dadata;
4+
5+
use c7v\dadata\requesters\AddressRequester;
6+
use c7v\dadata\requesters\NameRequester;
7+
use c7v\dadata\requesters\PhoneRequester;
8+
use GuzzleHttp\Client;
9+
use GuzzleHttp\RequestOptions;
10+
11+
final class Cleaner
12+
{
13+
/**
14+
* @var Client Http client.
15+
*/
16+
private Client $_httpClient;
17+
18+
/**
19+
* @var array Http options.
20+
*/
21+
private array $_httpOptions;
22+
23+
/**
24+
* @var string Токен доступа к API DaData.Ru
25+
*/
26+
private string $_accessToken;
27+
28+
/**
29+
* @var string Секрет от API DaData.Ru
30+
*/
31+
private string $_secret;
32+
33+
/**
34+
* @param string $accessToken Токен доступа к API DaData.Ru
35+
*/
36+
public function __construct(string $accessToken, string $secret, int $timeOut = 60)
37+
{
38+
/** @var string _accessToken */
39+
$this->_accessToken = $accessToken;
40+
41+
/** @var string _secret */
42+
$this->_secret = $secret;
43+
44+
$this->_httpClient = new Client([
45+
'base_uri' => 'https://cleaner.dadata.ru/api/v1/clean/',
46+
'timeout' => $timeOut,
47+
]);
48+
49+
$this->_httpOptions = [
50+
RequestOptions::HEADERS => [
51+
'Authorization' => 'Token ' . $this->_accessToken,
52+
'X-Secret' => $this->_secret,
53+
],
54+
];
55+
}
56+
57+
/**
58+
* Данный метод поможет переопределить access token.
59+
*
60+
* @param string $accessToken Токен доступа к API DaData.Ru
61+
* @return $this
62+
*/
63+
public function reSetAccessToken(string $accessToken, string $secret): self
64+
{
65+
$this->_accessToken = $accessToken;
66+
67+
$this->_httpOptions = [
68+
RequestOptions::HEADERS => [
69+
'Authorization' => 'Token ' . $this->_accessToken,
70+
'X-Secret' => $secret,
71+
],
72+
];
73+
return $this;
74+
}
75+
76+
public function requesterAddress(string $query): AddressRequester
77+
{
78+
$address = new AddressRequester($query);
79+
80+
$address::setHttpClient($this->_httpClient);
81+
$address::setHttpOptions($this->_httpOptions);
82+
83+
return $address;
84+
}
85+
86+
public function requesterName(string $query): NameRequester
87+
{
88+
$name = new NameRequester($query);
89+
90+
$name::setHttpClient($this->_httpClient);
91+
$name::setHttpOptions($this->_httpOptions);
92+
93+
return $name;
94+
}
95+
96+
public function requesterPhone(string $query): PhoneRequester
97+
{
98+
$name = new PhoneRequester($query);
99+
100+
$name::setHttpClient($this->_httpClient);
101+
$name::setHttpOptions($this->_httpOptions);
102+
103+
return $name;
104+
}
105+
}

src/Suggestions.php

+11
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace c7v\dadata;
44

5+
use c7v\dadata\requesters\FindByAddressPostalUnitRequester;
56
use GuzzleHttp\Client;
67
use GuzzleHttp\RequestOptions;
78
use c7v\dadata\requesters\FindByIdFnsUnitRequester;
@@ -96,4 +97,14 @@ public function requesterFindByIdFnsUnit(int $query): FindByIdFnsUnitRequester
9697

9798
return $findById;
9899
}
100+
101+
public function requesterFindByAddressPostalUnit(string $query): FindByAddressPostalUnitRequester
102+
{
103+
$findById = new FindByAddressPostalUnitRequester($query);
104+
105+
$findById::setHttpClient($this->_httpClient);
106+
$findById::setHttpOptions($this->_httpOptions);
107+
108+
return $findById;
109+
}
99110
}

src/helpers/StyleData.php

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
namespace c7v\dadata\helpers;
4+
5+
class StyleData
6+
{
7+
public static function normalQuotes(string $string): string
8+
{
9+
return preg_replace([
10+
"/\s\"/",
11+
"/\"$/",
12+
], [
13+
' «',
14+
'»',
15+
], $string);
16+
}
17+
18+
public static function normalDate(int $time): string
19+
{
20+
return date('d.m.Y', substr($time,0,-3));
21+
}
22+
23+
public static function normalManagementPost(string $post, $charset = "utf-8"): string
24+
{
25+
$post = mb_strtolower($post, 'utf-8');
26+
return mb_strtoupper(mb_substr($post, 0, 1, $charset), $charset).mb_substr($post, 1, mb_strlen($post, $charset)-1, $charset);
27+
}
28+
29+
public static function explodeName(string $name): array
30+
{
31+
$array = explode(' ', $name);
32+
return [
33+
'last_name' => $array[0],
34+
'first_name' => $array[1],
35+
'nick_name' => $array[2] ?? null,
36+
];
37+
}
38+
}

src/requesters/AddressRequester.php

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace c7v\dadata\requesters;
4+
5+
use GuzzleHttp\RequestOptions;
6+
use c7v\dadata\BaseRequester;
7+
8+
class AddressRequester extends BaseRequester
9+
{
10+
const METHOD_URL = 'address';
11+
12+
private array $_data;
13+
14+
public function __construct(string $query)
15+
{
16+
$this->_data[] = $query;
17+
}
18+
19+
public function send(): \Psr\Http\Message\ResponseInterface
20+
{
21+
return self::$_httpClient->request('POST', self::METHOD_URL, array_merge(self::$_httpOptions, [
22+
RequestOptions::JSON => $this->_data,
23+
]));
24+
}
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace c7v\dadata\requesters;
4+
5+
use GuzzleHttp\RequestOptions;
6+
use c7v\dadata\BaseRequester;
7+
8+
class FindByAddressPostalUnitRequester extends BaseRequester
9+
{
10+
const METHOD_URL = '4_1/rs/suggest/postal_unit';
11+
12+
private array $_data;
13+
14+
public function __construct(string $query)
15+
{
16+
$this->_data['query'] = $query;
17+
}
18+
19+
public function send(): \Psr\Http\Message\ResponseInterface
20+
{
21+
return self::$_httpClient->request('POST', self::METHOD_URL, array_merge(self::$_httpOptions, [
22+
RequestOptions::JSON => $this->_data,
23+
]));
24+
}
25+
}

src/requesters/NameRequester.php

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace c7v\dadata\requesters;
4+
5+
use GuzzleHttp\RequestOptions;
6+
use c7v\dadata\BaseRequester;
7+
8+
class NameRequester extends BaseRequester
9+
{
10+
const METHOD_URL = 'name';
11+
12+
private array $_data;
13+
14+
public function __construct(string $query)
15+
{
16+
$this->_data[] = $query;
17+
}
18+
19+
public function send(): \Psr\Http\Message\ResponseInterface
20+
{
21+
return self::$_httpClient->request('POST', self::METHOD_URL, array_merge(self::$_httpOptions, [
22+
RequestOptions::JSON => $this->_data,
23+
]));
24+
}
25+
}

src/requesters/PhoneRequester.php

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace c7v\dadata\requesters;
4+
5+
use GuzzleHttp\RequestOptions;
6+
use c7v\dadata\BaseRequester;
7+
8+
class PhoneRequester extends BaseRequester
9+
{
10+
const METHOD_URL = 'phone';
11+
12+
private array $_data;
13+
14+
public function __construct(string $query)
15+
{
16+
$this->_data[] = $query;
17+
}
18+
19+
public function send(): \Psr\Http\Message\ResponseInterface
20+
{
21+
return self::$_httpClient->request('POST', self::METHOD_URL, array_merge(self::$_httpOptions, [
22+
RequestOptions::JSON => $this->_data,
23+
]));
24+
}
25+
}

0 commit comments

Comments
 (0)