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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fa0422db824d58176c9804c59fd32a1e37f83d2127f7db1613e121c0566eb95d
4
- data.tar.gz: c1a7195688b6b1b20be07dade613c0b6a980b2538913e6835235315cbf2c1df1
3
+ metadata.gz: bfd127fc088248df5ba04bc959eb2e42f733283988d3c65ffe9fb4af549cacda
4
+ data.tar.gz: 4b0a24497dddbf09962bdb404c6303ed89adf541c5e350ace1763833c5a65f43
5
5
  SHA512:
6
- metadata.gz: 670647ab62e12f1f51e39aed1d222623e68f122eed6ecddf13deda0ce682bc89914937017f2c11af5c94658fe7def97a1328b8caaaf300a71d18cb33ea642192
7
- data.tar.gz: 245131fe5b87c785b53b1f39396e65881961e87d6566c39b7e54079a02e55a91de0cc83d22e5ec2c910b4602c9881c8f8351eddf49b50719f877b6d61b116980
6
+ metadata.gz: 617b18a29b63c53667f46c702eea55041f16269dcdecf4e0aca4bff209e5459bc366b94b2ca2f065efa275d3c5cd9737186d8ffe04ddecf68b19e58458167fb0
7
+ data.tar.gz: 8011273da255784265da566577e7204996493e675fc2c55ff822964c6a63e666b7f1cd080bf99ff932ae63372c7a140279628a790ec02eb2e09bcd679913521e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # CHANGELOG
2
2
 
3
+
4
+ ## 0.1.6 - 2022-06-18
5
+
6
+ * Refactoring Dadatas::Suggestion
7
+
3
8
  ## 0.1.5 - 2022-06-08
4
9
 
5
10
  * change method address_by_str in Dadatas::Suggestion now method can pass many arguments.
data/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  # Dadata
2
2
 
3
- [![Ruby](https://github.com/sendit-ru/dadatas/actions/workflows/main.yml/badge.svg)](https://github.com/sendit-ru/dadatas/actions/workflows/main.yml)
4
3
  [![Gem Version](https://badge.fury.io/rb/dadatas.svg)](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
- ## Использование Suggestion
23
+ # Использование подсказок (Suggestion)
24
+ Добавьте в ваш код инициализацию класса с параметрами (ключи API dadata)
25
25
 
26
26
  ```ruby
27
27
  require 'dadatas'
28
28
 
29
- dadata = Dadatas::Suggestion.new(api_key: 'YOURKEY', secret_key: 'YOURSECRETKEY')
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
 
@@ -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',
@@ -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(**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)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dadatas
4
- VERSION = '0.1.5'
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.5
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-08 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