dadatas 0.1.5 → 0.1.7

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: e597deb0aed70594dff13cf1b8b1afa73dd392e6b9482f4c5abecfd80d5d2404
4
+ data.tar.gz: 2eb74fd8d77bb454071a6105c4a4836d4109a0827dd24ee965041af16c3967dc
5
5
  SHA512:
6
- metadata.gz: 670647ab62e12f1f51e39aed1d222623e68f122eed6ecddf13deda0ce682bc89914937017f2c11af5c94658fe7def97a1328b8caaaf300a71d18cb33ea642192
7
- data.tar.gz: 245131fe5b87c785b53b1f39396e65881961e87d6566c39b7e54079a02e55a91de0cc83d22e5ec2c910b4602c9881c8f8351eddf49b50719f877b6d61b116980
6
+ metadata.gz: 7c5db4f3d29cbc4ed12e7bea56e32d445a612702863c6b22ae290587100204fcbac36aced3907dcd78bb4da79a7596619b62a115d449f3f02ecd1bc00f22ad4d
7
+ data.tar.gz: 5d94c926718d6e7bd511fe08d11c5305dd59d4ed6acec00dcca854cb121a346ba00c57885e7d9ef7a49d406e2b1d01d038fdc965a37523e30710a4e465cb26a9
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.1.7 - 2022-09-28
4
+
5
+ * Add geo method suggestion address
6
+
7
+ ## 0.1.6 - 2022-06-18
8
+
9
+ * Refactoring Dadatas::Suggestion
10
+
3
11
  ## 0.1.5 - 2022-06-08
4
12
 
5
13
  * 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,39 @@
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
+ address_by_geo: 'geolocate/address'
19
+ }.freeze
20
+
10
21
  attr_reader :config
11
22
 
12
23
  def initialize(config)
13
24
  @config = config
14
25
  end
15
26
 
16
- def organization(query: nil)
17
- call_method('suggest/party', query: query)
27
+ TYPES.each_key do |type|
28
+ define_method(type) do |args = nil|
29
+ call_method(Dadatas::Suggestion::TYPES[type], **args)
30
+ end
18
31
  end
19
32
 
20
33
  def address_by_fias_id(fias_id: nil)
21
34
  call_method('findById/address', query: fias_id)
22
35
  end
23
36
 
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
37
  private
37
38
 
38
39
  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.7'
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.7
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-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday