dadatas 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +63 -3
- data/lib/dadatas/api_call.rb +10 -0
- data/lib/dadatas/suggestion.rb +14 -14
- data/lib/dadatas/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bfd127fc088248df5ba04bc959eb2e42f733283988d3c65ffe9fb4af549cacda
|
4
|
+
data.tar.gz: 4b0a24497dddbf09962bdb404c6303ed89adf541c5e350ace1763833c5a65f43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 617b18a29b63c53667f46c702eea55041f16269dcdecf4e0aca4bff209e5459bc366b94b2ca2f065efa275d3c5cd9737186d8ffe04ddecf68b19e58458167fb0
|
7
|
+
data.tar.gz: 8011273da255784265da566577e7204996493e675fc2c55ff822964c6a63e666b7f1cd080bf99ff932ae63372c7a140279628a790ec02eb2e09bcd679913521e
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# Dadata
|
2
2
|
|
3
|
-
[](https://github.com/sendit-ru/dadatas/actions/workflows/main.yml)
|
4
3
|
[](https://badge.fury.io/rb/dadatas)
|
5
4
|
|
6
5
|
[Dadata.ru](https://dadata.ru/) API интеграционная обертка для проектов ruby
|
@@ -21,13 +20,59 @@ gem 'dadatas'
|
|
21
20
|
|
22
21
|
$ gem install dadata
|
23
22
|
|
24
|
-
|
23
|
+
# Использование подсказок (Suggestion)
|
24
|
+
Добавьте в ваш код инициализацию класса с параметрами (ключи API dadata)
|
25
25
|
|
26
26
|
```ruby
|
27
27
|
require 'dadatas'
|
28
28
|
|
29
|
-
dadata = Dadatas::Suggestion.new(api_key: 'YOURKEY',
|
29
|
+
dadata = Dadatas::Suggestion.new(api_key: 'YOURKEY', secret_key: 'YOURSECRETKEY')
|
30
30
|
```
|
31
|
+
|
32
|
+
## Получение подсказок по адресам
|
33
|
+
> Официальная документация: [Dadata.ru](https://dadata.ru/api/suggest/address/)
|
34
|
+
|
35
|
+
Базовый запрос:
|
36
|
+
```ruby
|
37
|
+
dadata.address(query: "москва сухонская 11")
|
38
|
+
# => [true, [{:value=>"г Москва, ул Сухонская, д 11, кв 8", ... }]]
|
39
|
+
```
|
40
|
+
Сложный запрос:
|
41
|
+
> Сложный запрос может включать в себя такие параметры как:
|
42
|
+
- **query(string)** - Текст запроса
|
43
|
+
- **count(integer)** - Количество результатов (максимум — 20)
|
44
|
+
- **language(string)** - На каком языке вернуть результат (ru / en)
|
45
|
+
- **locations(array)** - Ограничение по родителю (страна, регион, район, город, улица)
|
46
|
+
- **locations_geo(array)** - Ограничение по радиусу окружности
|
47
|
+
- **locations_boost(array)** - Приоритет города при ранжировании
|
48
|
+
- **from_bound(array)** - Гранулярные подсказки по адресу
|
49
|
+
- **to_bound(array)** - Гранулярные подсказки по адресу
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
dadata.address(
|
53
|
+
query: "москва",
|
54
|
+
from_bound: { value: 'city' },
|
55
|
+
to_bound: { value: 'settlement' },
|
56
|
+
locations: { country_iso_code: "RU" }
|
57
|
+
)
|
58
|
+
# => [true, [{:value=>"г Москва", :unrestricted_value=>"101000, г Москва", ... }]]
|
59
|
+
|
60
|
+
```
|
61
|
+
Сложный поиск позволяет находить только в РФ.
|
62
|
+
```ruby
|
63
|
+
dadata.address(query: "Гюмри", locations: { country_iso_code: "AM" })
|
64
|
+
# => [true, [{:value=>"Армения, Ширакская обл, г Гюмри", ... }]]
|
65
|
+
```
|
66
|
+
|
67
|
+
### Город по IP
|
68
|
+
```ruby
|
69
|
+
dadata.city_by_ip(ip: "46.226.227.20")
|
70
|
+
# => [true, {:value=>"г Краснодар", ... }]]
|
71
|
+
|
72
|
+
dadata.city_by_ip(ip: "46.226.227.20", language: "en")
|
73
|
+
# => [true, {:value=>"Russia, gorod Krasnodar", ... }]]
|
74
|
+
```
|
75
|
+
|
31
76
|
### Подсказки по организациям
|
32
77
|
|
33
78
|
Получение подсказок по названию:
|
@@ -70,6 +115,21 @@ dadata.bank_branch(query: '7728168971', kpp: '667102002')
|
|
70
115
|
# => [true, [{:value=>"ФИЛИАЛ \"ЕКАТЕРИНБУРГСКИЙ\" АО \"АЛЬФА-БАНК\"", :unrestricted_value=>"ФИЛИАЛ \"ЕКАТЕРИНБУРГСКИЙ\" АО \"АЛЬФА-БАНК\"", ... }]]
|
71
116
|
```
|
72
117
|
|
118
|
+
## Справочник стран мира по стандарту ISO 3166.
|
119
|
+
#### параметр `query` может принимать значения:
|
120
|
+
- code
|
121
|
+
- alfa2
|
122
|
+
- alfa3
|
123
|
+
- name_short
|
124
|
+
- name
|
125
|
+
```ruby
|
126
|
+
dadata.country(query: "Россия")
|
127
|
+
=> [true, [{:value=>"Россия", :unrestricted_value=>"Российская Федерация", :data=>{:code=>"643", :alfa2=>"RU", :alfa3=>"RUS", :name_short=>"Россия", :name=>"Российская Федерация", :req_value=>"Россия"}}]]
|
128
|
+
|
129
|
+
)
|
130
|
+
dadata.country(query: "Россия")
|
131
|
+
=> [true, [{:value=>"Россия", :unrestricted_value=>"Российская Федерация", :data=>{:code=>"643", :alfa2=>"RU", :alfa3=>"RUS", :name_short=>"Россия", :name=>"Российская Федерация", :req_value=>"Россия"}}]]
|
132
|
+
```
|
73
133
|
|
74
134
|
## Использование Clean
|
75
135
|
|
data/lib/dadatas/api_call.rb
CHANGED
@@ -29,9 +29,15 @@ module Dadatas
|
|
29
29
|
|
30
30
|
return success(response_body[:suggestions]) if response_body.key?(:suggestions)
|
31
31
|
|
32
|
+
return special_success(response_body[:location]) if location_condition?(response_body)
|
33
|
+
|
32
34
|
error_response(response, response_body)
|
33
35
|
end
|
34
36
|
|
37
|
+
def location_condition?(response_body)
|
38
|
+
response_body.key?(:location) && !response_body[:location].nil?
|
39
|
+
end
|
40
|
+
|
35
41
|
def error_response(response, response_body)
|
36
42
|
[false, { code: response.status, message: response_body }]
|
37
43
|
end
|
@@ -45,6 +51,10 @@ module Dadatas
|
|
45
51
|
[response.any?, new_response]
|
46
52
|
end
|
47
53
|
|
54
|
+
def special_success(response)
|
55
|
+
[response.any?, response]
|
56
|
+
end
|
57
|
+
|
48
58
|
def header
|
49
59
|
{
|
50
60
|
'Content-Type' => 'application/json',
|
data/lib/dadatas/suggestion.rb
CHANGED
@@ -1,38 +1,38 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'dadatas/api_call'
|
4
|
+
require 'byebug'
|
4
5
|
|
5
6
|
module Dadatas
|
6
7
|
# Suggestion API
|
7
8
|
class Suggestion
|
8
9
|
BASE_URL = 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/'
|
9
10
|
|
11
|
+
TYPES = {
|
12
|
+
address: 'suggest/address',
|
13
|
+
city_by_ip: 'iplocate/address',
|
14
|
+
bank: 'findById/bank',
|
15
|
+
organization: 'suggest/party',
|
16
|
+
address_by_str: 'suggest/address',
|
17
|
+
country: 'suggest/country'
|
18
|
+
}.freeze
|
19
|
+
|
10
20
|
attr_reader :config
|
11
21
|
|
12
22
|
def initialize(config)
|
13
23
|
@config = config
|
14
24
|
end
|
15
25
|
|
16
|
-
|
17
|
-
|
26
|
+
TYPES.each_key do |type|
|
27
|
+
define_method(type) do |args = nil|
|
28
|
+
call_method(Dadatas::Suggestion::TYPES[type], **args)
|
29
|
+
end
|
18
30
|
end
|
19
31
|
|
20
32
|
def address_by_fias_id(fias_id: nil)
|
21
33
|
call_method('findById/address', query: fias_id)
|
22
34
|
end
|
23
35
|
|
24
|
-
def address_by_str(**params)
|
25
|
-
call_method('suggest/address', **params)
|
26
|
-
end
|
27
|
-
|
28
|
-
def bank(query: nil)
|
29
|
-
call_method('findById/bank', query: query)
|
30
|
-
end
|
31
|
-
|
32
|
-
def bank_branch(query: nil, kpp: nil)
|
33
|
-
call_method('findById/bank', query: query, kpp: kpp)
|
34
|
-
end
|
35
|
-
|
36
36
|
private
|
37
37
|
|
38
38
|
def call_method(method, **query_data)
|
data/lib/dadatas/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dadatas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Hitchens
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-06-
|
11
|
+
date: 2022-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|