timezone 0.3.9 → 0.3.10
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/.travis.yml +2 -1
- data/CHANGES.markdown +5 -0
- data/data/Africa/Cairo +1 -981
- data/data/America/Adak +1033 -1033
- data/data/America/Atka +1033 -1033
- data/data/America/Montreal +25 -25
- data/data/America/Santiago +14 -12
- data/data/America/Whitehorse +2 -2
- data/data/Antarctica/Palmer +4 -4
- data/data/Canada/Yukon +2 -2
- data/data/Chile/Continental +14 -12
- data/data/Chile/EasterIsland +7 -10
- data/data/Egypt +1 -981
- data/data/Pacific/Easter +7 -10
- data/data/US/Aleutian +1033 -1033
- data/lib/timezone/configure.rb +2 -2
- data/lib/timezone/error.rb +1 -0
- data/lib/timezone/lookup/basic.rb +10 -0
- data/lib/timezone/lookup/geonames.rb +8 -0
- data/lib/timezone/lookup/google.rb +7 -0
- data/lib/timezone/version.rb +1 -1
- data/test/basic_lookup_test.rb +26 -0
- data/test/geonames_lookup_test.rb +10 -3
- data/test/google_lookup_test.rb +11 -4
- data/test/timezone_test.rb +8 -9
- metadata +19 -17
data/lib/timezone/configure.rb
CHANGED
@@ -29,7 +29,7 @@ module Timezone
|
|
29
29
|
# @return [String]
|
30
30
|
# the Google API key ('abc123')
|
31
31
|
def self.google_api_key
|
32
|
-
@google_api_key
|
32
|
+
@google_api_key ||= nil
|
33
33
|
end
|
34
34
|
|
35
35
|
# Google API key
|
@@ -165,7 +165,7 @@ module Timezone
|
|
165
165
|
# @return [String]
|
166
166
|
# the Geonames API username ('foo-bar')
|
167
167
|
def self.username
|
168
|
-
@@username
|
168
|
+
@@username ||= nil
|
169
169
|
end
|
170
170
|
|
171
171
|
# The Geonames API username
|
data/lib/timezone/error.rb
CHANGED
@@ -1,9 +1,19 @@
|
|
1
|
+
require 'timezone/error'
|
2
|
+
|
1
3
|
module Timezone
|
2
4
|
module Lookup
|
3
5
|
class Basic
|
4
6
|
attr_reader :config
|
5
7
|
|
6
8
|
def initialize(config)
|
9
|
+
if config.protocol.nil?
|
10
|
+
raise(::Timezone::Error::InvalidConfig, 'missing protocol')
|
11
|
+
end
|
12
|
+
|
13
|
+
if config.url.nil?
|
14
|
+
raise(::Timezone::Error::InvalidConfig, 'missing url')
|
15
|
+
end
|
16
|
+
|
7
17
|
@config = config
|
8
18
|
end
|
9
19
|
|
@@ -6,6 +6,14 @@ require 'uri'
|
|
6
6
|
module Timezone
|
7
7
|
module Lookup
|
8
8
|
class Geonames < ::Timezone::Lookup::Basic
|
9
|
+
def initialize(config)
|
10
|
+
if config.username.nil?
|
11
|
+
raise(::Timezone::Error::InvalidConfig, 'missing username')
|
12
|
+
end
|
13
|
+
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
9
17
|
def lookup(lat, lng)
|
10
18
|
response = client.get(url(lat, lng))
|
11
19
|
|
@@ -6,6 +6,13 @@ require 'uri'
|
|
6
6
|
module Timezone
|
7
7
|
module Lookup
|
8
8
|
class Google < ::Timezone::Lookup::Basic
|
9
|
+
def initialize(config)
|
10
|
+
if config.google_api_key.nil?
|
11
|
+
raise(::Timezone::Error::InvalidConfig, 'missing api key')
|
12
|
+
end
|
13
|
+
super
|
14
|
+
end
|
15
|
+
|
9
16
|
def lookup(lat,lng)
|
10
17
|
response = client.get(url(lat,lng))
|
11
18
|
|
data/lib/timezone/version.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'timezone/lookup/basic'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
|
4
|
+
class BasicLookupTest < ::Minitest::Unit::TestCase
|
5
|
+
def config
|
6
|
+
@config ||= Struct.new(:protocol, :url).new('http', 'example.com')
|
7
|
+
end
|
8
|
+
|
9
|
+
def lookup
|
10
|
+
::Timezone::Lookup::Basic.new(config)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_missing_protocol
|
14
|
+
config.protocol = nil
|
15
|
+
assert_raises(::Timezone::Error::InvalidConfig){ lookup }
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_missing_url
|
19
|
+
config.url = nil
|
20
|
+
assert_raises(::Timezone::Error::InvalidConfig){ lookup }
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_initialization
|
24
|
+
assert_equal lookup.config, config
|
25
|
+
end
|
26
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'timezone/configure'
|
2
2
|
require 'timezone/lookup/geonames'
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require_relative 'http_test_client'
|
5
5
|
|
6
|
-
class GeonamesLookupTest < ::
|
6
|
+
class GeonamesLookupTest < ::Minitest::Unit::TestCase
|
7
7
|
def setup
|
8
8
|
Timezone::Configure.begin do |c|
|
9
9
|
c.google_api_key = nil
|
@@ -20,6 +20,13 @@ class GeonamesLookupTest < ::Test::Unit::TestCase
|
|
20
20
|
::Timezone::Lookup::Geonames.new(Timezone::Configure)
|
21
21
|
end
|
22
22
|
|
23
|
+
def test_missing_username
|
24
|
+
Timezone::Configure.begin{ |c| c.username = nil }
|
25
|
+
assert_raises(::Timezone::Error::InvalidConfig){ lookup }
|
26
|
+
ensure
|
27
|
+
Timezone::Configure.begin{ |c| c.username = 'timezone' }
|
28
|
+
end
|
29
|
+
|
23
30
|
def test_lookup
|
24
31
|
HTTPTestClient.body = File.open(mock_path + '/lat_lon_coords.txt').read
|
25
32
|
|
@@ -29,7 +36,7 @@ class GeonamesLookupTest < ::Test::Unit::TestCase
|
|
29
36
|
def test_api_limit
|
30
37
|
HTTPTestClient.body = File.open(mock_path + '/api_limit_reached.txt').read
|
31
38
|
|
32
|
-
|
39
|
+
assert_raises Timezone::Error::GeoNames, 'api limit reached' do
|
33
40
|
lookup.lookup(*coordinates)
|
34
41
|
end
|
35
42
|
end
|
data/test/google_lookup_test.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
require 'timezone/configure'
|
2
2
|
require 'timezone/lookup/google'
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require_relative 'http_test_client'
|
5
5
|
|
6
|
-
class GoogleLookupTest < ::
|
6
|
+
class GoogleLookupTest < ::Minitest::Unit::TestCase
|
7
7
|
def setup
|
8
8
|
Timezone::Configure.begin do |c|
|
9
|
-
c.google_api_key = nil
|
10
9
|
c.http_client = HTTPTestClient
|
11
10
|
c.google_api_key = '123abc'
|
12
11
|
end
|
@@ -20,6 +19,13 @@ class GoogleLookupTest < ::Test::Unit::TestCase
|
|
20
19
|
::Timezone::Lookup::Google.new(Timezone::Configure)
|
21
20
|
end
|
22
21
|
|
22
|
+
def test_missing_api_key
|
23
|
+
Timezone::Configure.begin{ |c| c.google_api_key = nil }
|
24
|
+
assert_raises(::Timezone::Error::InvalidConfig){ lookup }
|
25
|
+
ensure
|
26
|
+
Timezone::Configure.begin{ |c| c.google_api_key = '123abc' }
|
27
|
+
end
|
28
|
+
|
23
29
|
def test_google_using_lat_lon_coordinates
|
24
30
|
HTTPTestClient.body = File.open(mock_path + '/google_lat_lon_coords.txt').read
|
25
31
|
|
@@ -27,7 +33,8 @@ class GoogleLookupTest < ::Test::Unit::TestCase
|
|
27
33
|
end
|
28
34
|
|
29
35
|
def test_google_request_denied_read_lat_lon_coordinates
|
30
|
-
|
36
|
+
HTTPTestClient.body = nil
|
37
|
+
assert_raises Timezone::Error::Google, 'The provided API key is invalid.' do
|
31
38
|
lookup.lookup(*coordinates)
|
32
39
|
end
|
33
40
|
end
|
data/test/timezone_test.rb
CHANGED
@@ -1,24 +1,22 @@
|
|
1
1
|
require 'timezone'
|
2
2
|
require 'timezone/zone'
|
3
|
-
require '
|
3
|
+
require 'minitest/autorun'
|
4
4
|
require "mocha/setup"
|
5
5
|
require 'timecop'
|
6
6
|
|
7
|
-
class TimezoneTest <
|
7
|
+
class TimezoneTest < ::Minitest::Unit::TestCase
|
8
8
|
def test_valid_timezone
|
9
|
-
|
10
|
-
Timezone::Zone.new :zone => 'Australia/Sydney'
|
11
|
-
end
|
9
|
+
refute_nil(Timezone::Zone.new(:zone => 'Australia/Sydney'))
|
12
10
|
end
|
13
11
|
|
14
12
|
def test_nil_timezone
|
15
|
-
|
13
|
+
assert_raises Timezone::Error::NilZone do
|
16
14
|
Timezone::Zone.new :zone => nil
|
17
15
|
end
|
18
16
|
end
|
19
17
|
|
20
18
|
def test_invalid_timezone
|
21
|
-
|
19
|
+
assert_raises Timezone::Error::InvalidZone do
|
22
20
|
Timezone::Zone.new :zone => 'Foo/Bar'
|
23
21
|
end
|
24
22
|
end
|
@@ -28,7 +26,7 @@ class TimezoneTest < Test::Unit::TestCase
|
|
28
26
|
assert list.is_a?(Array)
|
29
27
|
assert list.count == 2
|
30
28
|
assert list.first.is_a?(Hash)
|
31
|
-
assert
|
29
|
+
assert(list.any?{ |l| l[:zone] == 'Australia/Sydney' })
|
32
30
|
end
|
33
31
|
|
34
32
|
def test_timezone_list_current_time
|
@@ -53,7 +51,7 @@ class TimezoneTest < Test::Unit::TestCase
|
|
53
51
|
Timezone::Configure.default_for_list = "America/Chicago", "Australia/Sydney"
|
54
52
|
list = Timezone::Zone.list
|
55
53
|
assert list.count == 2
|
56
|
-
assert
|
54
|
+
assert(list.any?{ |l| l.has_value?("Australia/Sydney") })
|
57
55
|
end
|
58
56
|
|
59
57
|
def test_timezone_names
|
@@ -198,6 +196,7 @@ class TimezoneTest < Test::Unit::TestCase
|
|
198
196
|
end
|
199
197
|
|
200
198
|
def test_configure_url_default
|
199
|
+
Timezone::Configure.begin{ |c| c.google_api_key = nil }
|
201
200
|
assert_equal 'api.geonames.org', Timezone::Configure.url
|
202
201
|
end
|
203
202
|
|
metadata
CHANGED
@@ -1,69 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timezone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pan Thomakos
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '4.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '4.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: timecop
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: mocha
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
description: A simple way to get accurate current and historical timezone information
|
@@ -80,8 +80,8 @@ extra_rdoc_files:
|
|
80
80
|
- README.markdown
|
81
81
|
- License.txt
|
82
82
|
files:
|
83
|
-
- .gitignore
|
84
|
-
- .travis.yml
|
83
|
+
- ".gitignore"
|
84
|
+
- ".travis.yml"
|
85
85
|
- CHANGES.markdown
|
86
86
|
- CONTRIBUTING.markdown
|
87
87
|
- Gemfile
|
@@ -685,6 +685,7 @@ files:
|
|
685
685
|
- lib/timezone/parser.rb
|
686
686
|
- lib/timezone/version.rb
|
687
687
|
- lib/timezone/zone.rb
|
688
|
+
- test/basic_lookup_test.rb
|
688
689
|
- test/data/Helsinki_rules_without_timestamps.json
|
689
690
|
- test/data/asia
|
690
691
|
- test/geonames_lookup_test.rb
|
@@ -702,26 +703,27 @@ licenses:
|
|
702
703
|
metadata: {}
|
703
704
|
post_install_message:
|
704
705
|
rdoc_options:
|
705
|
-
- --charset=UTF-8
|
706
|
+
- "--charset=UTF-8"
|
706
707
|
require_paths:
|
707
708
|
- lib
|
708
709
|
required_ruby_version: !ruby/object:Gem::Requirement
|
709
710
|
requirements:
|
710
|
-
- -
|
711
|
+
- - ">="
|
711
712
|
- !ruby/object:Gem::Version
|
712
713
|
version: '0'
|
713
714
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
714
715
|
requirements:
|
715
|
-
- -
|
716
|
+
- - ">="
|
716
717
|
- !ruby/object:Gem::Version
|
717
718
|
version: '0'
|
718
719
|
requirements: []
|
719
720
|
rubyforge_project: timezone
|
720
|
-
rubygems_version: 2.
|
721
|
+
rubygems_version: 2.2.3
|
721
722
|
signing_key:
|
722
723
|
specification_version: 4
|
723
|
-
summary: timezone-0.3.
|
724
|
+
summary: timezone-0.3.10
|
724
725
|
test_files:
|
726
|
+
- test/basic_lookup_test.rb
|
725
727
|
- test/data/Helsinki_rules_without_timestamps.json
|
726
728
|
- test/data/asia
|
727
729
|
- test/geonames_lookup_test.rb
|