dadatas 0.1.3 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b14b94246fd891e914260452eb947e52e5fabd2cf66663deae2fd27d76ae1515
4
- data.tar.gz: a275bd84fba2fb5e549016c88a4b61930b9f388af08fcee76ece6309518a951a
3
+ metadata.gz: bfd127fc088248df5ba04bc959eb2e42f733283988d3c65ffe9fb4af549cacda
4
+ data.tar.gz: 4b0a24497dddbf09962bdb404c6303ed89adf541c5e350ace1763833c5a65f43
5
5
  SHA512:
6
- metadata.gz: 8b71cf9f37ed17d8bc11e85a7ac98748743b020c7cba759ec028d612003adcdd17e0252b04eac19444a65dd986de27cf50f3e38eb823a60a1bfd762fa9d97e80
7
- data.tar.gz: 8569c5a9b53da9f28110f90765be95f4736174f4020b951d5a5817583e10e79df33e5c79e691af60af0f34e3e23b5083e6d130db190d39975d84c2d139fbd2bd
6
+ metadata.gz: 617b18a29b63c53667f46c702eea55041f16269dcdecf4e0aca4bff209e5459bc366b94b2ca2f065efa275d3c5cd9737186d8ffe04ddecf68b19e58458167fb0
7
+ data.tar.gz: 8011273da255784265da566577e7204996493e675fc2c55ff822964c6a63e666b7f1cd080bf99ff932ae63372c7a140279628a790ec02eb2e09bcd679913521e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # CHANGELOG
2
2
 
3
+
4
+ ## 0.1.6 - 2022-06-18
5
+
6
+ * Refactoring Dadatas::Suggestion
7
+
8
+ ## 0.1.5 - 2022-06-08
9
+
10
+ * change method address_by_str in Dadatas::Suggestion now method can pass many arguments.
11
+
12
+ ## 0.1.4 - 2022-02-05
13
+
14
+ * add req_value in data suggestion
3
15
  ## 0.1.3 - 2021-12-18
4
16
 
5
17
  * fix faraday dependency
data/README.md CHANGED
@@ -1,8 +1,5 @@
1
1
  # Dadata
2
2
 
3
-
4
- # Faker
5
- [![Ruby](https://github.com/sendit-ru/dadatas/actions/workflows/main.yml/badge.svg)](https://github.com/sendit-ru/dadatas/actions/workflows/main.yml)
6
3
  [![Gem Version](https://badge.fury.io/rb/dadatas.svg)](https://badge.fury.io/rb/dadatas)
7
4
 
8
5
  [Dadata.ru](https://dadata.ru/) API интеграционная обертка для проектов ruby
@@ -23,13 +20,59 @@ gem 'dadatas'
23
20
 
24
21
  $ gem install dadata
25
22
 
26
- ## Использование Suggestion
23
+ # Использование подсказок (Suggestion)
24
+ Добавьте в ваш код инициализацию класса с параметрами (ключи API dadata)
27
25
 
28
26
  ```ruby
29
27
  require 'dadatas'
30
28
 
31
- dadata = Dadatas::Suggestion.new(api_key: 'YOURKEY', secret_key: 'YOURSECRETKEY')
29
+ dadata = Dadatas::Suggestion.new(api_key: 'YOURKEY', secret_key: 'YOURSECRETKEY')
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", ... }]]
32
74
  ```
75
+
33
76
  ### Подсказки по организациям
34
77
 
35
78
  Получение подсказок по названию:
@@ -53,6 +96,11 @@ dadata.address_by_fias_id(fias_id: '203221a4-dde4-4954-99cb-e788df9d0ce8')
53
96
  dadata.address_by_str(query: 'Ижевск г, Устиновский район, Им Конструктора Калашникова М.Т. пр-кт, 17')
54
97
  # => [true, [{ value: "г Ижевск, пр-кт Им Конструктора Калашникова М.Т., д 17", ... }]]
55
98
  ```
99
+
100
+ ```ruby
101
+ dadata.address_by_str(query: "Вашингтон", from_bound: {"value": "city"},to_bound: {"value": "settlement"}, locations: {"country": "*"} )
102
+ # => [true, [{ value: "США, Пенсильвания, г Вашингтон"", ... }]]
103
+ ```
56
104
  ### Подсказки по банкам
57
105
 
58
106
  Получение подсказок по БИК, SWIFT, ИНН, 'регистрационному номеру, присвоенному Банком России'.
@@ -67,6 +115,21 @@ dadata.bank_branch(query: '7728168971', kpp: '667102002')
67
115
  # => [true, [{:value=>"ФИЛИАЛ \"ЕКАТЕРИНБУРГСКИЙ\" АО \"АЛЬФА-БАНК\"", :unrestricted_value=>"ФИЛИАЛ \"ЕКАТЕРИНБУРГСКИЙ\" АО \"АЛЬФА-БАНК\"", ... }]]
68
116
  ```
69
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
+ ```
70
133
 
71
134
  ## Использование Clean
72
135
 
@@ -29,14 +29,29 @@ 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
38
44
 
39
45
  def success(response)
46
+ new_response = response.map do |result|
47
+ result[:data].merge!(req_value: result[:value]) if result.key?(:data)
48
+ result
49
+ end
50
+
51
+ [response.any?, new_response]
52
+ end
53
+
54
+ def special_success(response)
40
55
  [response.any?, response]
41
56
  end
42
57
 
@@ -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
- def organization(query: nil)
17
- call_method('suggest/party', query: query)
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(query: nil)
25
- call_method('suggest/address', query: query)
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)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dadatas
4
- VERSION = '0.1.3'
4
+ VERSION = '0.1.6'
5
5
  end
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.3
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: 2021-12-17 00:00:00.000000000 Z
11
+ date: 2022-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday