open_street_map 1.1.1 → 1.2.2

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: 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: []