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
+ }
0 commit comments