dadatas 0.1.5 → 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: 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