opencage-geocoder 2.1.4 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/opencage/error.rb +40 -0
- data/lib/opencage/geocoder.rb +8 -14
- data/lib/opencage/version.rb +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '082f17ef74c65a95d5be53745bf7e7eabca63bfdb0626298d3d94aee90d6b137'
|
4
|
+
data.tar.gz: 1d32135b1afe9ff62f94b51bf4482fd977d6d2ce66ed94a801c2007892b87e23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10e91e1565f255b6bda63b03c92f445b5725008b817d83dee0238a487621409d55c2451f805fb20321412cfe7a8e04fee46f57afe979b6b89dd89718e16963b7
|
7
|
+
data.tar.gz: 9d43d9e52e6cd40fd57826528ae59bb06e7a35e7dcdaf8aea256d1d9c80f8abebd37acf54655672a88b4f2509491d0c39b290c53da03c84ed4a95293feba04d9
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module OpenCage
|
2
|
+
class Error < StandardError
|
3
|
+
attr_reader :code
|
4
|
+
|
5
|
+
InvalidRequest = Class.new(self)
|
6
|
+
AuthenticationError = Class.new(self)
|
7
|
+
QuotaExceeded = Class.new(self)
|
8
|
+
Forbidden = Class.new(self)
|
9
|
+
InvalidEndpoint = Class.new(self)
|
10
|
+
NotAllowedMethod = Class.new(self)
|
11
|
+
Timeout = Class.new(self)
|
12
|
+
RequestTooLong = Class.new(self)
|
13
|
+
UpgradeRequired = Class.new(self)
|
14
|
+
TooManyRequests = Class.new(self)
|
15
|
+
InternalServer = Class.new(self)
|
16
|
+
|
17
|
+
def initialize(message:, code: nil)
|
18
|
+
super(message)
|
19
|
+
@code = code
|
20
|
+
end
|
21
|
+
|
22
|
+
ERRORS = {
|
23
|
+
0 => OpenCage::Error,
|
24
|
+
400 => OpenCage::Error::InvalidRequest,
|
25
|
+
401 => OpenCage::Error::AuthenticationError,
|
26
|
+
402 => OpenCage::Error::QuotaExceeded,
|
27
|
+
403 => OpenCage::Error::Forbidden,
|
28
|
+
404 => OpenCage::Error::InvalidEndpoint,
|
29
|
+
405 => OpenCage::Error::NotAllowedMethod,
|
30
|
+
408 => OpenCage::Error::Timeout,
|
31
|
+
410 => OpenCage::Error::RequestTooLong,
|
32
|
+
426 => OpenCage::Error::UpgradeRequired,
|
33
|
+
429 => OpenCage::Error::TooManyRequests,
|
34
|
+
500 => OpenCage::Error::InternalServer,
|
35
|
+
502 => OpenCage::Error::InternalServer,
|
36
|
+
503 => OpenCage::Error::InternalServer,
|
37
|
+
504 => OpenCage::Error::InternalServer
|
38
|
+
}.freeze
|
39
|
+
end
|
40
|
+
end
|
data/lib/opencage/geocoder.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
require 'opencage/geocoder/location'
|
2
2
|
require 'opencage/geocoder/request'
|
3
|
+
require 'opencage/error'
|
3
4
|
require 'open-uri'
|
4
5
|
require 'json'
|
5
6
|
|
6
7
|
module OpenCage
|
7
8
|
class Geocoder
|
8
|
-
GeocodingError = Class.new(StandardError)
|
9
|
-
|
10
9
|
def initialize(default_options = {})
|
11
|
-
@api_key = default_options.fetch(:api_key) {
|
10
|
+
@api_key = default_options.fetch(:api_key) { raise_error('401 Missing API key') }
|
12
11
|
end
|
13
12
|
|
14
13
|
def geocode(location, options = {})
|
@@ -22,7 +21,7 @@ module OpenCage
|
|
22
21
|
|
23
22
|
def reverse_geocode(lat, lng, options = {})
|
24
23
|
if [lat, lng].any? { |coord| !coord.is_a?(Numeric) }
|
25
|
-
|
24
|
+
raise_error("400 Not valid numeric coordinates: #{lat.inspect}, #{lng.inspect}")
|
26
25
|
end
|
27
26
|
|
28
27
|
geocode("#{lat},#{lng}", options).first
|
@@ -33,18 +32,13 @@ module OpenCage
|
|
33
32
|
def fetch(url)
|
34
33
|
JSON.parse(URI(url).open.read)['results']
|
35
34
|
rescue OpenURI::HTTPError => e
|
36
|
-
|
35
|
+
raise_error(e)
|
37
36
|
end
|
38
37
|
|
39
|
-
def
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
when /^402/
|
44
|
-
'out of quota'
|
45
|
-
else
|
46
|
-
error
|
47
|
-
end
|
38
|
+
def raise_error(error)
|
39
|
+
code = String(error).slice(0, 3)
|
40
|
+
klass = OpenCage::Error::ERRORS[code.to_i]
|
41
|
+
raise klass.new(message: String(error), code: code.to_i)
|
48
42
|
end
|
49
43
|
end
|
50
44
|
end
|
data/lib/opencage/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opencage-geocoder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Scully
|
@@ -9,15 +9,16 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-11-01 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
|
-
description: A client for the OpenCage
|
14
|
+
description: A client for the OpenCage geocoding API - https://opencagedata.com/
|
15
15
|
email: support@opencagedata.com
|
16
16
|
executables: []
|
17
17
|
extensions: []
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
20
|
- lib/opencage.rb
|
21
|
+
- lib/opencage/error.rb
|
21
22
|
- lib/opencage/geocoder.rb
|
22
23
|
- lib/opencage/geocoder/location.rb
|
23
24
|
- lib/opencage/geocoder/request.rb
|
@@ -35,15 +36,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
35
36
|
requirements:
|
36
37
|
- - ">="
|
37
38
|
- !ruby/object:Gem::Version
|
38
|
-
version: '2.
|
39
|
+
version: '2.6'
|
39
40
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
40
41
|
requirements:
|
41
42
|
- - ">="
|
42
43
|
- !ruby/object:Gem::Version
|
43
44
|
version: '0'
|
44
45
|
requirements: []
|
45
|
-
rubygems_version: 3.
|
46
|
+
rubygems_version: 3.3.11
|
46
47
|
signing_key:
|
47
48
|
specification_version: 4
|
48
|
-
summary: A client for the OpenCage
|
49
|
+
summary: A client for the OpenCage geocoder API
|
49
50
|
test_files: []
|