timezone 1.2.7 → 1.2.8

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
  SHA1:
3
- metadata.gz: 1e67f5f5b2a7f199d1d9c639db1b1684cb154b4d
4
- data.tar.gz: cb3c97f023a8a73a975c45d198825826416da358
3
+ metadata.gz: 8a63e375d390532b48a5893acc6b5cae503327d8
4
+ data.tar.gz: 027d0d641967c2d31819c1ae08474119e037e03f
5
5
  SHA512:
6
- metadata.gz: 2738b0e271a9d7e18972d30ec5d59cdd25c9d7b70aac9485bbcc52b73ecd17e767979ef7ac390245ee87dd05f347d32de84c050f22baded4acfca0faf8d78820
7
- data.tar.gz: 6da76970b046a2c8b333ae02f0f48e1c9ed8e22eb697f0c8b3878edf110fe4fc1c63452696fa00c567be76ff3de6562bf6c5b5e90ab2f5675ed9243f9c9a099d
6
+ metadata.gz: a6ab4ce56850408b116810372db3a249d7350e77ce7f2262aa1e5e24ef989deea3b00aafedcbd21d8ad4737b2c7776d779af12b0807068c769b4a9fe478a3745
7
+ data.tar.gz: 629551995f3b72c874c0403bbf600141b2af662be10a2eabc880c2b23cf6f5312ad0a997f2d10d7bb1f173deb7d169b4e630535d788421f16f5d61c797fadfff
@@ -1,5 +1,9 @@
1
1
  # master (unreleased)
2
2
 
3
+ # 1.2.8
4
+
5
+ * Handle `ZERO_RESULTS` response from Google API. (zhublik)
6
+
3
7
  # 1.2.7
4
8
 
5
9
  * Updated with `tzdata-2017b-1`. (panthomakos)
@@ -170,6 +170,21 @@ Latitude - longitude lookups can raise `::Timezone::Error::Lookup` exceptions wh
170
170
  Timezone.lookup(10, 100000){ |name| "#{name} is invalid" }
171
171
  => " is invalid"
172
172
 
173
+ ## Using Geonames and Google Lookups
174
+
175
+ `timezone` can be configured to use both Google and Geonames lookups. For instance, you may choose to fallback to Google if a Geonames lookup fails. The return value from a `::Timezone::Lookup.config` call can be stored and re-used to trigger lookups for the configured service. For instance:
176
+
177
+ GEONAMES_LOOKUP = Timezone::Lookup.config(:geonames) { |c| c.username = ... }
178
+ GOOGLE_LOOKUP = Timezone::Lookup.config(:google) { |c| c.api_key = ... }
179
+
180
+ lat, lon = 89, 40
181
+
182
+ begin
183
+ GEONAMES_LOOKUP.lookup(lat, lon)
184
+ rescue ::Timezone::Error::Lookup
185
+ GOOGLE_LOOKUP.lookup(lat, lon)
186
+ end
187
+
173
188
  ## Listing Timezones
174
189
 
175
190
  Retrieving the complete list of timezones can be accomplished using the `::Timezone::names` function. NOTE: the list is not ordered.
@@ -10,6 +10,10 @@ module Timezone
10
10
  module Lookup
11
11
  # @!visibility private
12
12
  class Google < ::Timezone::Lookup::Basic
13
+ # Indicates that no time zone data could be found for the specified
14
+ # <lat, lng>. This can occur if the query is incomplete or ambiguous.
15
+ NO_TIMEZONE_INFORMATION = 'ZERO_RESULTS'.freeze
16
+
13
17
  def initialize(config)
14
18
  if config.api_key.nil?
15
19
  raise(::Timezone::Error::InvalidConfig, 'missing api key'.freeze)
@@ -31,6 +35,8 @@ module Timezone
31
35
  return unless response.code =~ /^2\d\d$/
32
36
  data = JSON.parse(response.body)
33
37
 
38
+ return if data['status'.freeze] == NO_TIMEZONE_INFORMATION
39
+
34
40
  if data['status'.freeze] != 'OK'.freeze
35
41
  raise(Timezone::Error::Google, data['errorMessage'])
36
42
  end
@@ -1,3 +1,3 @@
1
1
  module Timezone
2
- VERSION = '1.2.7'.freeze
2
+ VERSION = '1.2.8'.freeze
3
3
  end
@@ -0,0 +1 @@
1
+ { "status" : "ZERO_RESULTS" }
@@ -73,6 +73,12 @@ class TestGoogle < ::Minitest::Test
73
73
  end
74
74
  end
75
75
 
76
+ def test_no_result_found
77
+ mine = lookup(File.open(mock_path + '/google_no_result_found.json').read)
78
+
79
+ assert_nil(mine.lookup(26.188703, -78.987053))
80
+ end
81
+
76
82
  private
77
83
 
78
84
  def mock_path
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timezone
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.7
4
+ version: 1.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pan Thomakos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-27 00:00:00.000000000 Z
11
+ date: 2017-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -699,6 +699,7 @@ files:
699
699
  - test/http_test_client.rb
700
700
  - test/mocks/api_limit_reached.json
701
701
  - test/mocks/google_lat_lon_coords.txt
702
+ - test/mocks/google_no_result_found.json
702
703
  - test/mocks/google_request_denied.txt
703
704
  - test/mocks/invalid_latlong.json
704
705
  - test/mocks/invalid_parameter.json
@@ -745,13 +746,14 @@ rubyforge_project: timezone
745
746
  rubygems_version: 2.5.1
746
747
  signing_key:
747
748
  specification_version: 4
748
- summary: timezone-1.2.7
749
+ summary: timezone-1.2.8
749
750
  test_files:
750
751
  - test/data/Helsinki_rules_without_timestamps.json
751
752
  - test/data/asia
752
753
  - test/http_test_client.rb
753
754
  - test/mocks/api_limit_reached.json
754
755
  - test/mocks/google_lat_lon_coords.txt
756
+ - test/mocks/google_no_result_found.json
755
757
  - test/mocks/google_request_denied.txt
756
758
  - test/mocks/invalid_latlong.json
757
759
  - test/mocks/invalid_parameter.json