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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf89cc2a9860608487a2e39ae028912a15209f675d10ad70e4d09a5d1ca7903f
4
- data.tar.gz: b08b3864ed1cb9e843a98faab1f07aefecbfea78eaa609148c78350e8364d126
3
+ metadata.gz: 3a1e278a717dae481c5901268fcee1bfd6cd17c44050b4824cbdd66924a86e16
4
+ data.tar.gz: 345103fee4f35f4faf91f0143cd291753bcdff202330eb1e8591f0921499c395
5
5
  SHA512:
6
- metadata.gz: e0747f589ef8b0870da627b6706c788d0fa74f5b63b1dcddcf4962b326a19f275c01871d3a1f08033426568273c231d4244bc135aded5bbe136fd1242a537781
7
- data.tar.gz: c511bf49cd166de25a90c194618447c04a002a3930a86578a621c4b4e18a8ffaa16beb37d368fa9088dc9a959fb4200f5d7d387d72d9769c805bb535713018da
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
- Metrics/LineLength:
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/AlignHash:
38
- Enabled: false
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
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2018 kortirso
3
+ Copyright (c) 2018-2020 kortirso
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
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
- #### Responces
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
- #### Responces
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 fetch(url, args)
26
- url = hostname(args[:hostname]) + url
27
- RestClient.get(url, user_agent: user_agent(args[:user_agent]))
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
- # parse response
31
- def parse(response, format)
32
- if json_parse_valid?(format)
33
- JSON.parse(response.body)
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 accept_language email]
43
- when 'reverse' then %i[format lat lon zoom addressdetails extratags namedetails accept_language email]
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
- require 'rest-client'
2
- require 'json'
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/'.freeze
11
- DEFAULT_USER_AGENT = "webgents/open_street_map_gem_#{SecureRandom.urlsafe_base64}".freeze
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 = {})
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OpenStreetMap
2
- VERSION = '1.1.1'.freeze
4
+ VERSION = '1.2.2'
3
5
  end
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'open_street_map/version'
2
4
  require_relative 'open_street_map/client'
3
5
 
4
- # Main declaration
5
6
  module OpenStreetMap
6
7
  end
@@ -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 OpenStrretMap API'
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.0'
24
+ spec.required_ruby_version = '>= 2.5.1'
24
25
 
25
- spec.add_development_dependency 'bundler', '~> 1.15'
26
- spec.add_development_dependency 'rake', '~> 10.0'
27
- spec.add_development_dependency 'rspec', '~> 3.0'
28
- spec.add_development_dependency 'rubocop', '~> 0.57.2'
29
- spec.add_dependency 'rest-client', '2.0.2'
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.1.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: 2018-10-31 00:00:00.000000000 Z
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: '1.15'
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: '1.15'
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: '10.0'
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: '10.0'
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.0'
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.0'
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: 0.57.2
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: 0.57.2
69
+ version: '1.23'
70
70
  - !ruby/object:Gem::Dependency
71
- name: rest-client
71
+ name: httparty
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '='
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: 2.0.2
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: 2.0.2
84
- description: Integration with OpenStrretMap API
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
- post_install_message:
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.0
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
- rubyforge_project:
127
- rubygems_version: 2.7.6
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: []