regio 0.1.1 → 0.2.0
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 +4 -4
- data/CHANGELOG.md +7 -1
- data/Gemfile.lock +1 -1
- data/README.md +33 -2
- data/lib/regio/core.rb +58 -0
- data/lib/regio/geocode.rb +2 -49
- data/lib/regio/reverse_geocode.rb +31 -0
- data/lib/regio/version.rb +1 -1
- data/lib/regio.rb +2 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58f1f77fb4ff83302a5591e138bface9f60913e2649727bee81b7460067d8d44
|
4
|
+
data.tar.gz: 7e10c3b4eb3826aaf0865888c98507f3cdf5a97e550f3100e8f91beb89bffe41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6702d492cb1b10ee6f6795ef16be9c1d7f8e36009d2e3667e513974b642ceed446c41a83e106b832176aa90f7eadc05d7185fb5c5f24b23f1a0e8676bb68975f
|
7
|
+
data.tar.gz: a9e6cf6a456cdcda8d5abb1adb718199df81295aca6bc1fe7d488276b5f6a7ba1aa6eb94f35435fb34e551b5c6bc3da9eabab1e26534918dd68bea080914f5e8
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,18 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
## v0.2.0 (15.10.2022)
|
4
|
+
|
5
|
+
* 1 major enhancement:
|
6
|
+
* Regio [reverse geocode](https://api.regio.ee/documentation/#docs/reverse_geocode)
|
7
|
+
* Minor refactoring
|
8
|
+
|
3
9
|
## v0.1.1 (9.10.2022)
|
4
10
|
|
5
11
|
* 1 major enhancement:
|
6
12
|
* Regio [geocode](https://api.regio.ee/documentation/#docs/geocode)
|
7
13
|
* Minor improvements
|
8
14
|
|
9
|
-
## v0.1.0 (
|
15
|
+
## v0.1.0 (9.10.2022)
|
10
16
|
|
11
17
|
* 1 major enhancement:
|
12
18
|
* Initial release
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
Add this line to your application's Gemfile:
|
12
12
|
|
13
13
|
```ruby
|
14
|
-
gem 'regio', '~> 0.
|
14
|
+
gem 'regio', '~> 0.2.0'
|
15
15
|
```
|
16
16
|
|
17
17
|
And then execute:
|
@@ -30,7 +30,9 @@ Get your own API key
|
|
30
30
|
REGIO_API_KEY=SECRET
|
31
31
|
```
|
32
32
|
|
33
|
-
|
33
|
+
### Geocoding
|
34
|
+
|
35
|
+
Use `Geocode` class in your code
|
34
36
|
|
35
37
|
```ruby
|
36
38
|
require 'regio'
|
@@ -52,6 +54,35 @@ class Geocoding
|
|
52
54
|
end
|
53
55
|
```
|
54
56
|
|
57
|
+
Check Regio [geocode](https://api.regio.ee/documentation/#docs/geocode) documentation
|
58
|
+
|
59
|
+
|
60
|
+
### Reverse geocoding
|
61
|
+
|
62
|
+
Use `ReverseGeocode` class in your code
|
63
|
+
|
64
|
+
```ruby
|
65
|
+
require 'regio'
|
66
|
+
|
67
|
+
class Geocoding
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
def results
|
72
|
+
@results ||= Regio::ReverseGeocode.new(options).results
|
73
|
+
end
|
74
|
+
|
75
|
+
def options
|
76
|
+
{
|
77
|
+
lat: 59.4276340999273,
|
78
|
+
lng: 24.7790924770962
|
79
|
+
}
|
80
|
+
end
|
81
|
+
end
|
82
|
+
```
|
83
|
+
|
84
|
+
Check Regio [reverse geocode](https://api.regio.ee/documentation/#docs/reverse_geocode) documentation
|
85
|
+
|
55
86
|
## Development
|
56
87
|
|
57
88
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/lib/regio/core.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'httparty'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
module Regio
|
7
|
+
class Core
|
8
|
+
include HTTParty
|
9
|
+
base_uri 'https://api.regio.ee'
|
10
|
+
|
11
|
+
attr_accessor :options
|
12
|
+
|
13
|
+
def initialize(options = {})
|
14
|
+
@options = default_options.merge(options)
|
15
|
+
end
|
16
|
+
|
17
|
+
COMPONENTS = [
|
18
|
+
{ name: :country, type: 'A0' },
|
19
|
+
{ name: :county, type: 'A1' },
|
20
|
+
{ name: :municipality, type: 'A2' },
|
21
|
+
{ name: :settlement, type: 'A3' },
|
22
|
+
{ name: :small_place, type: 'A4' },
|
23
|
+
{ name: :street, type: 'A5' },
|
24
|
+
{ name: :farmstead, type: 'A6' },
|
25
|
+
{ name: :house, type: 'A7' },
|
26
|
+
{ name: :apartment, type: 'A8' }
|
27
|
+
].freeze
|
28
|
+
|
29
|
+
def run(path, params = {})
|
30
|
+
JSON.parse(self.class.get(path, query: params).body, symbolize_names: true)
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def transform(result)
|
36
|
+
hash = default_hash_for(result)
|
37
|
+
|
38
|
+
COMPONENTS.each do |component|
|
39
|
+
item = result[:components].detect { |o| o[:type] == component[:type] }
|
40
|
+
hash[component[:name]] = item.nil? ? nil : item[:name]
|
41
|
+
end
|
42
|
+
|
43
|
+
hash
|
44
|
+
end
|
45
|
+
|
46
|
+
def default_hash_for(result)
|
47
|
+
{
|
48
|
+
regio_id: result[:id],
|
49
|
+
title: result[:address],
|
50
|
+
valid: result[:is_valid],
|
51
|
+
complete: result[:is_complete],
|
52
|
+
zipcode: result[:postcode],
|
53
|
+
lat: result[:geometry].last,
|
54
|
+
lon: result[:geometry].first
|
55
|
+
}
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/regio/geocode.rb
CHANGED
@@ -1,31 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'httparty'
|
4
|
-
require 'json'
|
5
|
-
|
6
3
|
module Regio
|
7
|
-
class Geocode
|
8
|
-
include HTTParty
|
9
|
-
base_uri 'https://api.regio.ee'
|
10
|
-
|
11
|
-
COMPONENTS = [
|
12
|
-
{ name: :country, type: 'A0' },
|
13
|
-
{ name: :county, type: 'A1' },
|
14
|
-
{ name: :municipality, type: 'A2' },
|
15
|
-
{ name: :settlement, type: 'A3' },
|
16
|
-
{ name: :small_place, type: 'A4' },
|
17
|
-
{ name: :street, type: 'A5' },
|
18
|
-
{ name: :farmstead, type: 'A6' },
|
19
|
-
{ name: :house, type: 'A7' },
|
20
|
-
{ name: :apartment, type: 'A8' }
|
21
|
-
].freeze
|
22
|
-
|
23
|
-
attr_accessor :options
|
24
|
-
|
25
|
-
def initialize(options = {})
|
26
|
-
@options = default_options.merge(options)
|
27
|
-
end
|
28
|
-
|
4
|
+
class Geocode < Core
|
29
5
|
def results
|
30
6
|
raise Unprocessable, response[:message] if response[:message]
|
31
7
|
|
@@ -37,7 +13,7 @@ module Regio
|
|
37
13
|
private
|
38
14
|
|
39
15
|
def response
|
40
|
-
|
16
|
+
run('/geocode', options)
|
41
17
|
end
|
42
18
|
|
43
19
|
# NOTE: all options described in the documentation
|
@@ -52,28 +28,5 @@ module Regio
|
|
52
28
|
limit: 25
|
53
29
|
}
|
54
30
|
end
|
55
|
-
|
56
|
-
def transform(result)
|
57
|
-
hash = default_hash_for(result)
|
58
|
-
|
59
|
-
COMPONENTS.each do |component|
|
60
|
-
item = result[:components].detect { |o| o[:type] == component[:type] }
|
61
|
-
hash[component[:name]] = item.nil? ? nil : item[:name]
|
62
|
-
end
|
63
|
-
|
64
|
-
hash
|
65
|
-
end
|
66
|
-
|
67
|
-
def default_hash_for(result)
|
68
|
-
{
|
69
|
-
regio_id: result[:id],
|
70
|
-
title: result[:address],
|
71
|
-
valid: result[:is_valid],
|
72
|
-
complete: result[:is_complete],
|
73
|
-
zipcode: result[:postcode],
|
74
|
-
lat: result[:geometry].last,
|
75
|
-
lon: result[:geometry].first
|
76
|
-
}
|
77
|
-
end
|
78
31
|
end
|
79
32
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Regio
|
4
|
+
class ReverseGeocode < Core
|
5
|
+
def results
|
6
|
+
raise Unprocessable, response[:message] if response[:message]
|
7
|
+
|
8
|
+
response.merge(
|
9
|
+
collection: response[:data]&.map { |result| transform(result) } || []
|
10
|
+
)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def response
|
16
|
+
run('/revgeocode', options)
|
17
|
+
end
|
18
|
+
|
19
|
+
# NOTE: all options described in the documentation
|
20
|
+
# https://api.regio.ee/documentation/#docs/reverse_geocode
|
21
|
+
def default_options
|
22
|
+
{
|
23
|
+
apikey: Configuration.api_key,
|
24
|
+
address_format: 'long_address',
|
25
|
+
details: 'id,address,postcode,type,components,geometry,is_valid,is_complete',
|
26
|
+
output_format: 'json',
|
27
|
+
limit: 25
|
28
|
+
}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/regio/version.rb
CHANGED
data/lib/regio.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: regio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- tab
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-10-
|
11
|
+
date: 2022-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -162,11 +162,13 @@ files:
|
|
162
162
|
- bin/setup
|
163
163
|
- lib/regio.rb
|
164
164
|
- lib/regio/configuration.rb
|
165
|
+
- lib/regio/core.rb
|
165
166
|
- lib/regio/errors/failed.rb
|
166
167
|
- lib/regio/errors/forbidden.rb
|
167
168
|
- lib/regio/errors/not_found.rb
|
168
169
|
- lib/regio/errors/unprocessable.rb
|
169
170
|
- lib/regio/geocode.rb
|
171
|
+
- lib/regio/reverse_geocode.rb
|
170
172
|
- lib/regio/version.rb
|
171
173
|
- regio.gemspec
|
172
174
|
homepage: https://github.com/tab/regio
|