timezonedb-client 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: 3691fbe6ff2c623df360127f642aeed3e3000ae1
4
- data.tar.gz: 4e5bd1dd05afcb09730ec9565f32104b539619ed
3
+ metadata.gz: 9c1b6a31168ddf8082ab1fd0ef13189b9e726a74
4
+ data.tar.gz: 3ac5d75d09b02f19d3f4f90098b8831b49f6e8b9
5
5
  SHA512:
6
- metadata.gz: a8c45cc575c323ef5dc507f2102589f49e8912f108e8871c94030f798972571bb386ed61bd3d394d836446be46aae876a1415611a7e2a09dfeed3e4ed4859500
7
- data.tar.gz: 363b38412c21fc2470d25b03f7c163841756d5694a0cf09a861bff05bfad716321b724cd2b5b83df56364287d8c69e8b6ca10dfc3aa624bff774fc0638ef6f06
6
+ metadata.gz: 96111761f756888769b5747a6723e289182147137544b5009263a5e72cebd13dc2621208fff0a53173c2605d15ade4c84249b49f342ed19271380fbdd434b2dc
7
+ data.tar.gz: 7176e287393c1c5f2d5b6f3b4facfccc08808b22a8f84cedcec2df9fe2e56cfd750522b80220f899f331b4cd25c1e9e8a18c5223cb54b62782bd37cc902e6e97
data/README.md CHANGED
@@ -1,4 +1,7 @@
1
- # Timezonedb Client [![Build Status](https://travis-ci.org/Skyscanner/timezonedb-client-ruby.svg?branch=master)](https://travis-ci.org/Skyscanner/timezonedb-client-ruby)
1
+ # Timezonedb Client
2
+ [![Build Status](https://travis-ci.org/Skyscanner/timezonedb-client-ruby.svg?branch=master)](https://travis-ci.org/Skyscanner/timezonedb-client-ruby)
3
+ [![Gem Version](https://badge.fury.io/rb/timezonedb-client.svg)](https://badge.fury.io/rb/timezonedb-client)
4
+ [![Code Climate](https://codeclimate.com/github/Skyscanner/timezonedb-client-ruby/badges/gpa.svg)](https://codeclimate.com/github/Skyscanner/timezonedb-client-ruby)
2
5
 
3
6
  A Ruby client for the [timezonedb.com API](https://timezonedb.com/api)
4
7
 
@@ -51,6 +54,14 @@ tz.zone_name
51
54
  => "Europe/Madrid"
52
55
  ```
53
56
 
57
+ If you have premium API access, add `true` as a parameter when instantiating
58
+ the Timezonedb client, otherwise it will use the free plan endpoint.
59
+
60
+ ```
61
+ # will call vip.timezonedb.com instead of api.timezonedb.com
62
+ client = Timezonedb::Client.new(api_key, true)
63
+ ```
64
+
54
65
  ## Contributing
55
66
 
56
67
  We're glad you want to make a contribution!
@@ -14,24 +14,26 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
- require 'timezonedb/client/version'
18
- require 'timezonedb/client/response'
19
- require 'timezonedb/client/error'
17
+ require_relative 'client/version'
18
+ require_relative 'client/response'
19
+ require_relative 'client/error'
20
20
 
21
21
  require 'rest-client'
22
22
 
23
23
  module Timezonedb
24
24
  class Client
25
- URL = 'http://api.timezonedb.com'
25
+ FREE_URL = 'http://api.timezonedb.com'
26
+ PREMIUM_URL = 'http://vip.timezonedb.com'
26
27
 
27
- def initialize(api_key)
28
+ def initialize(api_key, premium = false)
28
29
  @api_key = api_key
30
+ @url = premium ? PREMIUM_URL : FREE_URL
29
31
  end
30
32
 
31
33
  def search_by_coords(latitude, longitude)
32
34
  params = { key: @api_key, lat: latitude, lng: longitude, format: 'json' }
33
35
 
34
- response = RestClient.get URL, params: params
36
+ response = RestClient.get @url, params: params
35
37
  response_hash = JSON.parse(response)
36
38
 
37
39
  if response_hash['status'] == 'OK'
@@ -16,6 +16,6 @@
16
16
 
17
17
  module Timezonedb
18
18
  class Client
19
- VERSION = '0.1.0'
19
+ VERSION = '0.1.1'
20
20
  end
21
21
  end
@@ -14,4 +14,4 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
- require 'timezonedb/client'
17
+ require_relative 'timezonedb/client'
@@ -18,7 +18,6 @@ require_relative '../spec_helper'
18
18
 
19
19
  describe Timezonedb::Client do
20
20
  describe '#execute' do
21
- let(:url) { 'http://api.timezonedb.com' }
22
21
  let(:api_key) { 'api_key_92834' }
23
22
  let(:latitude) { 40.91331 }
24
23
  let(:longitude) { 24.61922 }
@@ -52,93 +51,134 @@ describe Timezonedb::Client do
52
51
  }
53
52
  end
54
53
 
55
- subject { Timezonedb::Client.new(api_key).search_by_coords(latitude, longitude) }
56
-
57
- context 'when successful request' do
58
- let(:response_body) { correct_response_body.to_json }
54
+ before(:each) do
55
+ stub_request(:get, url)
56
+ .with(query: query)
57
+ .to_return(status: 200, body: response_body)
58
+ end
59
59
 
60
- before(:each) do
61
- stub_request(:get, url)
62
- .with(query: query)
63
- .to_return(status: 200,
64
- body: response_body)
65
- end
60
+ context 'when free plan' do
61
+ let(:url) { 'http://api.timezonedb.com' }
66
62
 
67
- it 'should return response with correct message' do
68
- expect(subject.message).to eq message
69
- end
63
+ subject { Timezonedb::Client.new(api_key).search_by_coords(latitude, longitude) }
70
64
 
71
- it 'should return response with correct country_code' do
72
- expect(subject.country_code).to eq country_code
73
- end
74
-
75
- it 'should return response with correct zone_name' do
76
- expect(subject.zone_name).to eq zone_name
77
- end
65
+ context 'and successful request' do
66
+ let(:response_body) { correct_response_body.to_json }
78
67
 
79
- it 'should return response with correct abbreviation' do
80
- expect(subject.abbreviation).to eq abbreviation
81
- end
82
-
83
- it 'should return response with correct gmt_offset' do
84
- expect(subject.gmt_offset).to eq gmt_offset
85
- end
68
+ it 'should return response with correct message' do
69
+ expect(subject.message).to eq message
70
+ end
86
71
 
87
- it 'should return response with correct dst' do
88
- expect(subject.dst).to eq dst
89
- end
72
+ it 'should return response with correct country_code' do
73
+ expect(subject.country_code).to eq country_code
74
+ end
90
75
 
91
- it 'should return response with correct timestamp' do
92
- expect(subject.timestamp).to eq timestamp
93
- end
94
- end
76
+ it 'should return response with correct zone_name' do
77
+ expect(subject.zone_name).to eq zone_name
78
+ end
95
79
 
96
- context 'when unsuccessful requests' do
97
- shared_examples 'an error raiser' do
98
- it 'raises an Error' do
99
- expect { subject }.to raise_error(Timezonedb::Client::Error)
80
+ it 'should return response with correct abbreviation' do
81
+ expect(subject.abbreviation).to eq abbreviation
100
82
  end
101
- end
102
83
 
103
- context 'when successful response code' do
104
- let(:response_body) do
105
- correct_response_body['status'] = 'NOT_OK'
106
- correct_response_body.to_json
84
+ it 'should return response with correct gmt_offset' do
85
+ expect(subject.gmt_offset).to eq gmt_offset
107
86
  end
108
87
 
109
- before(:each) do
110
- stub_request(:get, url)
111
- .with(query: query)
112
- .to_return(status: 200,
113
- body: response_body)
88
+ it 'should return response with correct dst' do
89
+ expect(subject.dst).to eq dst
114
90
  end
115
91
 
116
- it_behaves_like 'an error raiser'
92
+ it 'should return response with correct timestamp' do
93
+ expect(subject.timestamp).to eq timestamp
94
+ end
117
95
  end
118
96
 
119
- context 'when failure response code' do
120
- let(:response_body) { 'unsuccessful request body :(' }
97
+ context 'and unsuccessful requests' do
98
+ shared_examples 'an error raiser' do
99
+ it 'raises an Error' do
100
+ expect { subject }.to raise_error(Timezonedb::Client::Error)
101
+ end
102
+ end
103
+
104
+ context 'when successful response code' do
105
+ let(:response_body) do
106
+ correct_response_body['status'] = 'NOT_OK'
107
+ correct_response_body.to_json
108
+ end
121
109
 
122
- context 'when 400 responses' do
123
110
  before(:each) do
124
111
  stub_request(:get, url)
125
112
  .with(query: query)
126
- .to_return(status: 400,
113
+ .to_return(status: 200,
127
114
  body: response_body)
128
115
  end
129
116
 
130
117
  it_behaves_like 'an error raiser'
131
118
  end
132
119
 
133
- context 'when 500 responses' do
134
- before(:each) do
135
- stub_request(:get, url)
136
- .with(query: query)
137
- .to_return(status: 500,
138
- body: response_body)
120
+ context 'when failure response code' do
121
+ let(:response_body) { 'unsuccessful request body :(' }
122
+
123
+ context 'when 400 responses' do
124
+ before(:each) do
125
+ stub_request(:get, url)
126
+ .with(query: query)
127
+ .to_return(status: 400,
128
+ body: response_body)
129
+ end
130
+
131
+ it_behaves_like 'an error raiser'
139
132
  end
140
133
 
141
- it_behaves_like 'an error raiser'
134
+ context 'when 500 responses' do
135
+ before(:each) do
136
+ stub_request(:get, url)
137
+ .with(query: query)
138
+ .to_return(status: 500,
139
+ body: response_body)
140
+ end
141
+
142
+ it_behaves_like 'an error raiser'
143
+ end
144
+ end
145
+ end
146
+ end
147
+
148
+ context 'when premium plan' do
149
+ let(:url) { 'http://vip.timezonedb.com' }
150
+
151
+ subject { Timezonedb::Client.new(api_key, true).search_by_coords(latitude, longitude) }
152
+
153
+ context 'and successful request' do
154
+ let(:response_body) { correct_response_body.to_json }
155
+
156
+ it 'should return response with correct message' do
157
+ expect(subject.message).to eq message
158
+ end
159
+
160
+ it 'should return response with correct country_code' do
161
+ expect(subject.country_code).to eq country_code
162
+ end
163
+
164
+ it 'should return response with correct zone_name' do
165
+ expect(subject.zone_name).to eq zone_name
166
+ end
167
+
168
+ it 'should return response with correct abbreviation' do
169
+ expect(subject.abbreviation).to eq abbreviation
170
+ end
171
+
172
+ it 'should return response with correct gmt_offset' do
173
+ expect(subject.gmt_offset).to eq gmt_offset
174
+ end
175
+
176
+ it 'should return response with correct dst' do
177
+ expect(subject.dst).to eq dst
178
+ end
179
+
180
+ it 'should return response with correct timestamp' do
181
+ expect(subject.timestamp).to eq timestamp
142
182
  end
143
183
  end
144
184
  end
@@ -21,7 +21,7 @@ require 'timezonedb/client/version'
21
21
  Gem::Specification.new do |s|
22
22
  s.name = 'timezonedb-client'
23
23
  s.version = Timezonedb::Client::VERSION
24
- s.date = '2015-11-18'
24
+ s.date = '2016-01-29'
25
25
  s.summary = 'Timezonedb Client'
26
26
  s.description = 'A client for accessing the timezonedb.com API'
27
27
  s.authors = ['Kostis Dadamis', 'Emili Parreno']
@@ -37,10 +37,8 @@ Gem::Specification.new do |s|
37
37
  s.add_runtime_dependency 'rest-client', '~> 1.8.0'
38
38
  s.add_runtime_dependency 'json', '~> 1.8.0'
39
39
 
40
- s.add_development_dependency 'rake'
41
- s.add_development_dependency 'rspec'
42
- s.add_development_dependency 'pry-byebug'
43
- s.add_development_dependency 'rubocop'
44
- s.add_development_dependency 'rack-test'
45
- s.add_development_dependency 'webmock'
40
+ s.add_development_dependency 'rake', '~> 10.4.2'
41
+ s.add_development_dependency 'rspec', '~> 3.4.0'
42
+ s.add_development_dependency 'rack-test', '~> 0.6.3'
43
+ s.add_development_dependency 'webmock', '~> 1.22.3'
46
44
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timezonedb-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kostis Dadamis
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-11-18 00:00:00.000000000 Z
12
+ date: 2016-01-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -43,86 +43,58 @@ dependencies:
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '0'
48
+ version: 10.4.2
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: '0'
55
+ version: 10.4.2
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: '0'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- - !ruby/object:Gem::Dependency
71
- name: pry-byebug
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: '0'
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: '0'
84
- - !ruby/object:Gem::Dependency
85
- name: rubocop
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - ">="
60
+ - - "~>"
89
61
  - !ruby/object:Gem::Version
90
- version: '0'
62
+ version: 3.4.0
91
63
  type: :development
92
64
  prerelease: false
93
65
  version_requirements: !ruby/object:Gem::Requirement
94
66
  requirements:
95
- - - ">="
67
+ - - "~>"
96
68
  - !ruby/object:Gem::Version
97
- version: '0'
69
+ version: 3.4.0
98
70
  - !ruby/object:Gem::Dependency
99
71
  name: rack-test
100
72
  requirement: !ruby/object:Gem::Requirement
101
73
  requirements:
102
- - - ">="
74
+ - - "~>"
103
75
  - !ruby/object:Gem::Version
104
- version: '0'
76
+ version: 0.6.3
105
77
  type: :development
106
78
  prerelease: false
107
79
  version_requirements: !ruby/object:Gem::Requirement
108
80
  requirements:
109
- - - ">="
81
+ - - "~>"
110
82
  - !ruby/object:Gem::Version
111
- version: '0'
83
+ version: 0.6.3
112
84
  - !ruby/object:Gem::Dependency
113
85
  name: webmock
114
86
  requirement: !ruby/object:Gem::Requirement
115
87
  requirements:
116
- - - ">="
88
+ - - "~>"
117
89
  - !ruby/object:Gem::Version
118
- version: '0'
90
+ version: 1.22.3
119
91
  type: :development
120
92
  prerelease: false
121
93
  version_requirements: !ruby/object:Gem::Requirement
122
94
  requirements:
123
- - - ">="
95
+ - - "~>"
124
96
  - !ruby/object:Gem::Version
125
- version: '0'
97
+ version: 1.22.3
126
98
  description: A client for accessing the timezonedb.com API
127
99
  email:
128
100
  - kostis.dadamis@skyscanner.net