dadatas 0.1.3 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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