regentanz 0.2.0 → 0.3.3
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.
- data/.rvmrc +4 -0
- data/CHANGELOG.rdoc +4 -0
- data/README.rdoc +17 -9
- data/Rakefile +1 -1
- data/lib/regentanz/google_weather.rb +7 -7
- data/lib/regentanz/version.rb +1 -1
- data/lib/regentanz.rb +0 -1
- data/regentanz.gemspec +3 -4
- data/test/factories.rb +4 -6
- data/test/test_helper.rb +2 -6
- data/test/unit/google_weather_test.rb +5 -11
- metadata +102 -123
- data/test/support/support_mailer.rb +0 -7
data/.rvmrc
ADDED
data/CHANGELOG.rdoc
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
== CHANGELOG
|
2
2
|
|
3
|
+
=== v0.3.3 // 2013-06-09
|
4
|
+
* Remove ActionMailer dependency
|
5
|
+
* Gem functionality is defunct as Google shut down their API
|
6
|
+
|
3
7
|
=== v0.1.4 // 2011-10-14
|
4
8
|
* Fixed bug that caused forecast to have the current day only
|
5
9
|
* present? now properly returns its true state (as opposed to always false)
|
data/README.rdoc
CHANGED
@@ -2,16 +2,15 @@
|
|
2
2
|
*Regentanz* (German: <i>rain dance</i>) is a Ruby library to connect to Google's
|
3
3
|
innofficial (ie. undocumented and unsupported) weather API.
|
4
4
|
|
5
|
-
=== Installation
|
6
|
-
The gem is not published yet and can be installed from github:
|
7
|
-
git clone git://github.com/kaupertmedia/regentanz.git
|
8
|
-
cd regentanz
|
9
|
-
gem build regentanz.gemspec
|
10
|
-
gem install regentanz-<gemversion>.gem
|
11
5
|
|
12
|
-
|
6
|
+
=== Discontinued Weather API
|
7
|
+
*Notice*: Google has discontinued their weather service.
|
8
|
+
The Gem is currently *not* able to return weather data.
|
9
|
+
|
10
|
+
=== Installation
|
11
|
+
The gem is available from rubygems, so using bundler "installation" would be:
|
13
12
|
# Gemfile
|
14
|
-
gem 'regentanz'
|
13
|
+
gem 'regentanz'
|
15
14
|
|
16
15
|
=== Usage
|
17
16
|
Supply a location and a language to retrieve weather:
|
@@ -23,6 +22,10 @@ It uses <b>file-based caching</b> by default, other cache backends will follow.
|
|
23
22
|
See {Regentanz::Cache::Base}[https://github.com/carpodaster/regentanz/blob/master/lib/regentanz/cache/base.rb]
|
24
23
|
for details (and if you want to create your own backend).
|
25
24
|
|
25
|
+
=== Handling API-Errors
|
26
|
+
|
27
|
+
*TODO* wainting for callbacks
|
28
|
+
|
26
29
|
=== Configuration
|
27
30
|
*Regentanz* can either be configured through a configure block or directly via
|
28
31
|
its configuration object. It uses sane defaults so there should be no need for
|
@@ -41,6 +44,11 @@ Direct configuration:
|
|
41
44
|
See {Regentanz::Configuration}[https://github.com/carpodaster/regentanz/blob/master/lib/regentanz/configuration.rb]
|
42
45
|
for a full list of configurable options.
|
43
46
|
|
47
|
+
=== TODO
|
48
|
+
* Implement OpenWeatherMap as new backend
|
49
|
+
* Finalise callback hooks
|
50
|
+
* Make tests pass on Ruby 1.9
|
51
|
+
|
44
52
|
=== Credits
|
45
53
|
*Regentanz* is based upon and extracted from a standalone Ruby class made for
|
46
|
-
{berlin.kauperts.de}[http://berlin.kauperts.de] by {kaupert media gmbh}[http://kaupertmedia.de].
|
54
|
+
{berlin.kauperts.de}[http://berlin.kauperts.de] by {kaupert media gmbh}[http://kaupertmedia.de].
|
data/Rakefile
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
require 'net/http'
|
3
|
+
require 'rexml/document'
|
4
|
+
require 'ostruct'
|
5
|
+
|
1
6
|
module Regentanz
|
2
7
|
class GoogleWeather
|
3
|
-
require 'net/http'
|
4
|
-
require 'rexml/document'
|
5
|
-
require 'ostruct'
|
6
|
-
|
7
8
|
include Astronomy
|
8
9
|
include Callbacks
|
9
10
|
|
@@ -135,15 +136,14 @@ module Regentanz
|
|
135
136
|
def retry_after_incorrect_api_reply
|
136
137
|
if !waiting_for_retry? and @cache
|
137
138
|
# We are run for the first time, create the marker file
|
138
|
-
# TODO remove dependency to SupportMailer class
|
139
139
|
api_failure_detected # callback
|
140
|
-
|
140
|
+
# TODO execute custom callback
|
141
141
|
@cache.set_retry_state!
|
142
142
|
elsif @cache and @cache.unset_retry_state!
|
143
143
|
# Marker file is old enough, delete the (invalid) cache file and remove the marker_file
|
144
144
|
@cache.expire!(@cache_id)
|
145
145
|
api_failure_resumed # callback
|
146
|
-
|
146
|
+
# TODO execute custom callback
|
147
147
|
end
|
148
148
|
end
|
149
149
|
|
data/lib/regentanz/version.rb
CHANGED
data/lib/regentanz.rb
CHANGED
data/regentanz.gemspec
CHANGED
@@ -19,13 +19,12 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.add_dependency '
|
23
|
-
s.add_dependency 'activesupport', '~> 3.0.10'
|
22
|
+
s.add_dependency 'activesupport', '~> 3.0'
|
24
23
|
|
25
24
|
s.add_development_dependency 'rake'
|
26
25
|
s.add_development_dependency 'mocha'
|
27
26
|
s.add_development_dependency 'bundler'
|
28
|
-
s.add_development_dependency '
|
29
|
-
s.add_development_dependency '
|
27
|
+
s.add_development_dependency 'factory_girl', '~> 2.0'
|
28
|
+
s.add_development_dependency 'rdoc', '~> 2.4'
|
30
29
|
|
31
30
|
end
|
data/test/factories.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
f.cache_id "test"
|
6
|
-
end
|
1
|
+
FactoryGirl.define do
|
2
|
+
factory :google_weather, :class => Regentanz::GoogleWeather, :default_strategy => :build do |f|
|
3
|
+
f.location "Testhausen"
|
4
|
+
f.cache_id "test"
|
7
5
|
end
|
8
6
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,18 +1,14 @@
|
|
1
|
-
require
|
1
|
+
require 'rubygems'
|
2
2
|
require "bundler/setup"
|
3
3
|
|
4
4
|
require "test/unit"
|
5
5
|
require "active_support/test_case"
|
6
|
-
require 'action_mailer/test_helper'
|
7
6
|
Bundler.require(:default, :development)
|
8
7
|
require 'test/factories'
|
9
8
|
|
10
|
-
# FIXME move SupportMailer into callbacks
|
11
|
-
require File.join(File.dirname(__FILE__), 'support', 'support_mailer')
|
12
|
-
|
13
9
|
# Configure for test mode
|
14
10
|
require 'regentanz/test_helper'
|
15
11
|
setup_regentanz_test_configuration! do |config|
|
16
12
|
config.cache_dir = File.expand_path(File.join(File.dirname(__FILE__), '', 'support', 'tmp'))
|
17
13
|
config.retry_marker = File.expand_path(File.join(File.dirname(__FILE__), 'support', 'tmp', 'test_api_retry.txt'))
|
18
|
-
end
|
14
|
+
end
|
@@ -5,8 +5,6 @@ class GoogleWeatherTest < ActiveSupport::TestCase
|
|
5
5
|
TEST_CACHE_FILE_NAME = File.join(Regentanz.configuration.cache_dir, "regentanz_test.xml")
|
6
6
|
|
7
7
|
def setup
|
8
|
-
# FIXME Remove ActionMailer
|
9
|
-
ActionMailer::Base.deliveries.clear
|
10
8
|
setup_regentanz_test_configuration!
|
11
9
|
end
|
12
10
|
|
@@ -35,7 +33,7 @@ class GoogleWeatherTest < ActiveSupport::TestCase
|
|
35
33
|
assert_kind_of Regentanz.configuration.cache_backend, obj.cache
|
36
34
|
end
|
37
35
|
|
38
|
-
test "should enter retry state
|
36
|
+
test "should enter retry state if invalid xml file has been found" do
|
39
37
|
stub_valid_xml_api_response!
|
40
38
|
Regentanz::GoogleWeather.any_instance.expects(:api_failure_detected) # callback
|
41
39
|
|
@@ -43,10 +41,8 @@ class GoogleWeatherTest < ActiveSupport::TestCase
|
|
43
41
|
assert !weather.waiting_for_retry?
|
44
42
|
create_invalid_xml_response(TEST_CACHE_FILE_NAME)
|
45
43
|
|
46
|
-
|
47
|
-
|
48
|
-
assert weather.waiting_for_retry?
|
49
|
-
end
|
44
|
+
weather.get_weather!
|
45
|
+
assert weather.waiting_for_retry?
|
50
46
|
end
|
51
47
|
|
52
48
|
test "should leave retry state remove invalid cache file when retry_ttl waittime is over" do
|
@@ -58,10 +54,8 @@ class GoogleWeatherTest < ActiveSupport::TestCase
|
|
58
54
|
create_invalid_xml_response(TEST_CACHE_FILE_NAME)
|
59
55
|
weather = Factory(:google_weather)
|
60
56
|
|
61
|
-
|
62
|
-
|
63
|
-
assert !weather.waiting_for_retry?
|
64
|
-
end
|
57
|
+
weather.get_weather!
|
58
|
+
assert !weather.waiting_for_retry?
|
65
59
|
end
|
66
60
|
|
67
61
|
test "should have lang option" do
|
metadata
CHANGED
@@ -1,136 +1,121 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: regentanz
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.3
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 0
|
10
|
-
version: 0.2.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Carsten Zimmermann
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
name: actionmailer
|
23
|
-
prerelease: false
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
12
|
+
date: 2013-06-09 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
18
|
+
requirements:
|
27
19
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 3
|
32
|
-
- 0
|
33
|
-
- 10
|
34
|
-
version: 3.0.10
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.0'
|
35
22
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: activesupport
|
39
23
|
prerelease: false
|
40
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
25
|
none: false
|
42
|
-
requirements:
|
26
|
+
requirements:
|
43
27
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
|
47
|
-
- 3
|
48
|
-
- 0
|
49
|
-
- 10
|
50
|
-
version: 3.0.10
|
51
|
-
type: :runtime
|
52
|
-
version_requirements: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
54
31
|
name: rake
|
55
|
-
|
56
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
57
33
|
none: false
|
58
|
-
requirements:
|
59
|
-
- -
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
|
62
|
-
segments:
|
63
|
-
- 0
|
64
|
-
version: "0"
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
65
38
|
type: :development
|
66
|
-
version_requirements: *id003
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
|
-
name: mocha
|
69
39
|
prerelease: false
|
70
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
41
|
none: false
|
72
|
-
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: mocha
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
79
54
|
type: :development
|
80
|
-
version_requirements: *id004
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: bundler
|
83
55
|
prerelease: false
|
84
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
85
65
|
none: false
|
86
|
-
requirements:
|
87
|
-
- -
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
|
90
|
-
segments:
|
91
|
-
- 0
|
92
|
-
version: "0"
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
93
70
|
type: :development
|
94
|
-
version_requirements: *id005
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
|
-
name: redgreen
|
97
71
|
prerelease: false
|
98
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
73
|
none: false
|
100
|
-
requirements:
|
101
|
-
- -
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
|
104
|
-
|
105
|
-
- 0
|
106
|
-
version: "0"
|
107
|
-
type: :development
|
108
|
-
version_requirements: *id006
|
109
|
-
- !ruby/object:Gem::Dependency
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
110
79
|
name: factory_girl
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '2.0'
|
86
|
+
type: :development
|
111
87
|
prerelease: false
|
112
|
-
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '2.0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rdoc
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
113
97
|
none: false
|
114
|
-
requirements:
|
115
|
-
- -
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
|
118
|
-
segments:
|
119
|
-
- 0
|
120
|
-
version: "0"
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '2.4'
|
121
102
|
type: :development
|
122
|
-
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '2.4'
|
123
110
|
description: Library to access the Google Weather API
|
124
|
-
email:
|
111
|
+
email:
|
125
112
|
- cz@aegisnet.de
|
126
113
|
executables: []
|
127
|
-
|
128
114
|
extensions: []
|
129
|
-
|
130
115
|
extra_rdoc_files: []
|
131
|
-
|
132
|
-
files:
|
116
|
+
files:
|
133
117
|
- .gitignore
|
118
|
+
- .rvmrc
|
134
119
|
- CHANGELOG.rdoc
|
135
120
|
- Gemfile
|
136
121
|
- LICENSE
|
@@ -155,7 +140,6 @@ files:
|
|
155
140
|
- lib/regentanz/version.rb
|
156
141
|
- regentanz.gemspec
|
157
142
|
- test/factories.rb
|
158
|
-
- test/support/support_mailer.rb
|
159
143
|
- test/support/tmp/.gitignore
|
160
144
|
- test/support/valid_response.xml.erb
|
161
145
|
- test/test_helper.rb
|
@@ -168,43 +152,38 @@ files:
|
|
168
152
|
- test/unit/forecast_condition_test.rb
|
169
153
|
- test/unit/google_weather_test.rb
|
170
154
|
- test/unit/parser/google_weather_parser_test.rb
|
171
|
-
|
172
|
-
homepage: ""
|
155
|
+
homepage: ''
|
173
156
|
licenses: []
|
174
|
-
|
175
157
|
post_install_message:
|
176
158
|
rdoc_options: []
|
177
|
-
|
178
|
-
require_paths:
|
159
|
+
require_paths:
|
179
160
|
- lib
|
180
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
161
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
181
162
|
none: false
|
182
|
-
requirements:
|
183
|
-
- -
|
184
|
-
- !ruby/object:Gem::Version
|
185
|
-
|
186
|
-
segments:
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
segments:
|
187
168
|
- 0
|
188
|
-
|
189
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
169
|
+
hash: -3677000706019098419
|
170
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
190
171
|
none: false
|
191
|
-
requirements:
|
192
|
-
- -
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
|
195
|
-
segments:
|
172
|
+
requirements:
|
173
|
+
- - ! '>='
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
segments:
|
196
177
|
- 0
|
197
|
-
|
178
|
+
hash: -3677000706019098419
|
198
179
|
requirements: []
|
199
|
-
|
200
180
|
rubyforge_project: regentanz
|
201
|
-
rubygems_version: 1.
|
181
|
+
rubygems_version: 1.8.25
|
202
182
|
signing_key:
|
203
183
|
specification_version: 3
|
204
184
|
summary: Library to access the Google Weather API
|
205
|
-
test_files:
|
185
|
+
test_files:
|
206
186
|
- test/factories.rb
|
207
|
-
- test/support/support_mailer.rb
|
208
187
|
- test/support/tmp/.gitignore
|
209
188
|
- test/support/valid_response.xml.erb
|
210
189
|
- test/test_helper.rb
|