open_street_map 1.1.1 → 1.2.2
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/.rubocop.yml +7 -3
- data/.ruby-version +1 -0
- data/LICENSE.txt +1 -1
- data/README.md +9 -2
- data/lib/open_street_map/client/request.rb +12 -59
- data/lib/open_street_map/client.rb +6 -6
- data/lib/open_street_map/version.rb +3 -1
- data/lib/open_street_map.rb +2 -1
- data/open_street_map.gemspec +8 -7
- metadata +26 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a1e278a717dae481c5901268fcee1bfd6cd17c44050b4824cbdd66924a86e16
|
4
|
+
data.tar.gz: 345103fee4f35f4faf91f0143cd291753bcdff202330eb1e8591f0921499c395
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7790f5a3607598f33db9946c73e2a60b7e91a57026f41e51d49312643f9cbe09b35ea3ecf0c1ad233696b2e16a82cef1fcdb703cc93f044845512c10f73e5b1
|
7
|
+
data.tar.gz: 4217e529692d22ba661cc5cc97e5fec57c0304738d6c0cfad6aff0360b8484c52008b7dd5587b60c485daa259bf9340725a778e55bd717aeb287a3752817c4dd
|
data/.rubocop.yml
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
AllCops:
|
2
2
|
Exclude:
|
3
3
|
- bin/*
|
4
|
+
NewCops: enable
|
4
5
|
TargetRubyVersion: 2.5.0
|
5
6
|
|
6
7
|
Metrics/AbcSize:
|
@@ -12,7 +13,7 @@ Metrics/BlockLength:
|
|
12
13
|
Metrics/ClassLength:
|
13
14
|
Enabled: false
|
14
15
|
|
15
|
-
|
16
|
+
Layout/LineLength:
|
16
17
|
Enabled: false
|
17
18
|
|
18
19
|
Metrics/MethodLength:
|
@@ -34,8 +35,9 @@ Layout/CaseIndentation:
|
|
34
35
|
- end
|
35
36
|
IndentOneStep: true
|
36
37
|
|
37
|
-
Layout/
|
38
|
-
|
38
|
+
Layout/HashAlignment:
|
39
|
+
EnforcedHashRocketStyle: table
|
40
|
+
EnforcedColonStyle: table
|
39
41
|
|
40
42
|
Style/GuardClause:
|
41
43
|
Enabled: false
|
@@ -55,3 +57,5 @@ Style/FrozenStringLiteralComment:
|
|
55
57
|
Style/RescueStandardError:
|
56
58
|
Enabled: false
|
57
59
|
|
60
|
+
Style/Documentation:
|
61
|
+
Enabled: false
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-3.0.2
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -2,6 +2,13 @@
|
|
2
2
|
|
3
3
|
Integration of OpenStreetMap api from [Nominatim](https://wiki.openstreetmap.org/wiki/Nominatim)
|
4
4
|
|
5
|
+
## Prerequisites
|
6
|
+
|
7
|
+
This project requires:
|
8
|
+
|
9
|
+
* Ruby >= 2.3.1, but can work with earlier versions
|
10
|
+
* HTTParty >= 0.16
|
11
|
+
|
5
12
|
## Installation
|
6
13
|
|
7
14
|
Add this line to your application's Gemfile:
|
@@ -47,7 +54,7 @@ Request for search objects is #search.
|
|
47
54
|
user_agent - User-Agent identifying the application, default - webgents/open_street_map_gem_random
|
48
55
|
hostname - allow overwriting the host name for users who have their own Nominatim installation, default - https://nominatim.openstreetmap.org/
|
49
56
|
|
50
|
-
####
|
57
|
+
#### Responses
|
51
58
|
|
52
59
|
```ruby
|
53
60
|
[
|
@@ -98,7 +105,7 @@ Request for objects by coordinates is #reverse.
|
|
98
105
|
user_agent - User-Agent identifying the application, default - webgents/open_street_map_gem_random
|
99
106
|
hostname - allow overwriting the host name for users who have their own Nominatim installation, default - https://nominatim.openstreetmap.org/
|
100
107
|
|
101
|
-
####
|
108
|
+
#### Responses
|
102
109
|
|
103
110
|
```ruby
|
104
111
|
{
|
@@ -1,74 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module OpenStreetMap
|
2
4
|
class Client
|
3
|
-
# methods for request
|
4
5
|
module Request
|
5
6
|
private
|
6
7
|
|
7
|
-
def call(type, args)
|
8
|
-
url = generate_url(type, args)
|
9
|
-
response = fetch(url, args)
|
10
|
-
sleep(REQUEST_TIMEOUT)
|
11
|
-
parse(response, args[:format])
|
12
|
-
rescue
|
13
|
-
{ 'errors' => 'Bad request' }
|
14
|
-
end
|
15
|
-
|
16
|
-
# generate url from args
|
17
|
-
def generate_url(type, args)
|
18
|
-
valid_args_list = valid_args(type)
|
19
|
-
args = args.select { |key, _value| valid_args_list.include?(key) }
|
20
|
-
url = args.inject('') { |acc, (key, value)| acc + add_to_options(key, value, acc) }
|
21
|
-
type + url
|
22
|
-
end
|
23
|
-
|
24
8
|
# make request to API
|
25
|
-
def
|
26
|
-
url = hostname(args[:hostname]) +
|
27
|
-
|
9
|
+
def call(type, args)
|
10
|
+
url = hostname(args[:hostname]) + type
|
11
|
+
headers = { 'User-Agent' => user_agent(args[:user_agent]) }
|
12
|
+
self.class.get(url, query: generate_body(type, args), headers: headers).parsed_response
|
28
13
|
end
|
29
14
|
|
30
|
-
#
|
31
|
-
def
|
32
|
-
if
|
33
|
-
|
34
|
-
else
|
35
|
-
response.body
|
36
|
-
end
|
15
|
+
# generate body from args
|
16
|
+
def generate_body(type, args)
|
17
|
+
args[:'accept-language'] = args[:accept_language] if args.key?(:accept_language)
|
18
|
+
args.select { |key, _| valid_args(type).include?(key) }
|
37
19
|
end
|
38
20
|
|
39
21
|
# get list of permitted args
|
40
22
|
def valid_args(type)
|
41
23
|
case type
|
42
|
-
when 'search' then %i[q format addressdetails extratags namedetails viewbox bounded exclude_place_ids limit
|
43
|
-
when 'reverse' then %i[format lat lon zoom addressdetails extratags namedetails
|
24
|
+
when 'search' then %i[q format addressdetails extratags namedetails viewbox bounded exclude_place_ids limit accept-language email]
|
25
|
+
when 'reverse' then %i[format lat lon zoom addressdetails extratags namedetails accept-language email]
|
44
26
|
else []
|
45
27
|
end
|
46
28
|
end
|
47
29
|
|
48
|
-
# make combination of special symbol and param with value
|
49
|
-
def add_to_options(key, value, acc)
|
50
|
-
symbol_for_param(acc) + key_value_param(key, remove_spaces(value))
|
51
|
-
end
|
52
|
-
|
53
|
-
# select special symbol
|
54
|
-
def symbol_for_param(acc)
|
55
|
-
acc == '' ? '?' : '&'
|
56
|
-
end
|
57
|
-
|
58
|
-
# make combination of param with value
|
59
|
-
def key_value_param(key, value)
|
60
|
-
if key == :accept_language
|
61
|
-
"accept-language=#{value}"
|
62
|
-
else
|
63
|
-
"#{key}=#{value}"
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
# replace spaces with + for values
|
68
|
-
def remove_spaces(value)
|
69
|
-
value.gsub(/\s+/, '+')
|
70
|
-
end
|
71
|
-
|
72
30
|
# select hostname for request
|
73
31
|
def hostname(value)
|
74
32
|
value || BASE_URI
|
@@ -78,11 +36,6 @@ module OpenStreetMap
|
|
78
36
|
def user_agent(value)
|
79
37
|
value || DEFAULT_USER_AGENT
|
80
38
|
end
|
81
|
-
|
82
|
-
# if format equal json then allow parsing
|
83
|
-
def json_parse_valid?(format)
|
84
|
-
format == 'json' || format == 'jsonv2'
|
85
|
-
end
|
86
39
|
end
|
87
40
|
end
|
88
41
|
end
|
@@ -1,15 +1,15 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'httparty'
|
3
4
|
require_relative 'client/request'
|
4
5
|
|
5
6
|
module OpenStreetMap
|
6
|
-
# Client requests
|
7
7
|
class Client
|
8
|
+
include HTTParty
|
8
9
|
include OpenStreetMap::Client::Request
|
9
10
|
|
10
|
-
BASE_URI = 'https://nominatim.openstreetmap.org/'
|
11
|
-
DEFAULT_USER_AGENT = "webgents/open_street_map_gem_#{SecureRandom.urlsafe_base64}"
|
12
|
-
REQUEST_TIMEOUT = 1
|
11
|
+
BASE_URI = 'https://nominatim.openstreetmap.org/'
|
12
|
+
DEFAULT_USER_AGENT = "webgents/open_street_map_gem_#{SecureRandom.urlsafe_base64}"
|
13
13
|
|
14
14
|
# Search objects by query
|
15
15
|
def search(args = {})
|
data/lib/open_street_map.rb
CHANGED
data/open_street_map.gemspec
CHANGED
@@ -7,9 +7,10 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.version = OpenStreetMap::VERSION
|
8
8
|
spec.authors = ['JungleCoders', 'Anton Bogdanov']
|
9
9
|
spec.email = ['kortirso@gmail.com']
|
10
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
10
11
|
|
11
12
|
spec.summary = 'OpenStrretMap API'
|
12
|
-
spec.description = 'Integration with
|
13
|
+
spec.description = 'Integration with OpenStreetMap API'
|
13
14
|
spec.homepage = 'https://github.com/WebGents/open_street_map'
|
14
15
|
spec.license = 'MIT'
|
15
16
|
|
@@ -20,11 +21,11 @@ Gem::Specification.new do |spec|
|
|
20
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
22
|
spec.require_paths = ['lib']
|
22
23
|
|
23
|
-
spec.required_ruby_version = '>= 2.5.
|
24
|
+
spec.required_ruby_version = '>= 2.5.1'
|
24
25
|
|
25
|
-
spec.add_development_dependency 'bundler', '
|
26
|
-
spec.add_development_dependency 'rake', '~>
|
27
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
28
|
-
spec.add_development_dependency 'rubocop', '~>
|
29
|
-
spec.add_dependency '
|
26
|
+
spec.add_development_dependency 'bundler', '>= 2.2.33'
|
27
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
28
|
+
spec.add_development_dependency 'rspec', '~> 3.10'
|
29
|
+
spec.add_development_dependency 'rubocop', '~> 1.23'
|
30
|
+
spec.add_dependency 'httparty', '~> 0.17'
|
30
31
|
end
|
metadata
CHANGED
@@ -1,87 +1,87 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: open_street_map
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JungleCoders
|
8
8
|
- Anton Bogdanov
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-12-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 2.2.33
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: 2.2.33
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '13.0'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '13.0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rspec
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '3.
|
48
|
+
version: '3.10'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '3.
|
55
|
+
version: '3.10'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: rubocop
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: '1.23'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: '1.23'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
71
|
+
name: httparty
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
76
|
+
version: '0.17'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- -
|
81
|
+
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version:
|
84
|
-
description: Integration with
|
83
|
+
version: '0.17'
|
84
|
+
description: Integration with OpenStreetMap API
|
85
85
|
email:
|
86
86
|
- kortirso@gmail.com
|
87
87
|
executables: []
|
@@ -91,6 +91,7 @@ files:
|
|
91
91
|
- ".gitignore"
|
92
92
|
- ".rspec"
|
93
93
|
- ".rubocop.yml"
|
94
|
+
- ".ruby-version"
|
94
95
|
- ".travis.yml"
|
95
96
|
- CODE_OF_CONDUCT.md
|
96
97
|
- Gemfile
|
@@ -107,8 +108,9 @@ files:
|
|
107
108
|
homepage: https://github.com/WebGents/open_street_map
|
108
109
|
licenses:
|
109
110
|
- MIT
|
110
|
-
metadata:
|
111
|
-
|
111
|
+
metadata:
|
112
|
+
rubygems_mfa_required: 'true'
|
113
|
+
post_install_message:
|
112
114
|
rdoc_options: []
|
113
115
|
require_paths:
|
114
116
|
- lib
|
@@ -116,16 +118,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
118
|
requirements:
|
117
119
|
- - ">="
|
118
120
|
- !ruby/object:Gem::Version
|
119
|
-
version: 2.5.
|
121
|
+
version: 2.5.1
|
120
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
123
|
requirements:
|
122
124
|
- - ">="
|
123
125
|
- !ruby/object:Gem::Version
|
124
126
|
version: '0'
|
125
127
|
requirements: []
|
126
|
-
|
127
|
-
|
128
|
-
signing_key:
|
128
|
+
rubygems_version: 3.2.22
|
129
|
+
signing_key:
|
129
130
|
specification_version: 4
|
130
131
|
summary: OpenStrretMap API
|
131
132
|
test_files: []
|