wunderground_ruby 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -40,7 +40,7 @@ Standard request breakdown:
40
40
 
41
41
  ##Optional Hash
42
42
 
43
- This ugly little guy handles the nonconformists in Wunderground's API request structure. Luckily there are only two of these baddies. (details below)
43
+ This ugly little guy handles the nonconformists in Wunderground's API request structure. Luckily there are only two of these baddies, and only if you need them. (details below)
44
44
 
45
45
  optional_hash = {lang: "FR", geo_ip:"127.0.0.1"}
46
46
 
@@ -70,7 +70,7 @@ Any location string that Wunderground accepts will pass straight through this wr
70
70
 
71
71
  w_api.get_conditions_for("autoip") #passes straight through, but only gets the weather for your server's IP, so not very useful probably
72
72
 
73
- For geocoding a specific ip address, just provide in a an IP like this:
73
+ For geocoding a specific ip address as the location, just provide an IP like this:
74
74
 
75
75
  w_api.get_alerts_for({geo_ip: "127.0.0.1"})
76
76
 
@@ -90,20 +90,24 @@ Also, you can set the default language in the constructor or with a setter.
90
90
  w_api.get_forecast_for("France","Paris") #automatically includes /lang:FR/ in the request url, so results will be in French
91
91
  w_api.get_forecast_for({lang:"DE"},"France","Paris") #this will override the French(FR) default with German(DE)
92
92
 
93
- ##History Support
93
+ ##History and Planner Helpers
94
94
 
95
95
  While it is possible to call
96
96
 
97
97
  w_api.get_history20101231_for("77789")
98
+ w_api.get_planner03150323_for("FL","Destin")
98
99
 
99
- to get the history data for this date/location. You may enjoy more flexibility when using get_history_for:
100
+ to get the history/planner data for this date/location. You may enjoy more flexibility when using get_history_for and get_planner_for:
100
101
 
101
102
  w_api.get_history_for("20101010","AL","Birmingham")
102
103
  w_api.get_history_for(1.year.ago,"33909")
103
104
  w_api.get_history_for(Date.now, {lang: "FR"}, "France/Paris")
104
105
  w_api.get_history_for(Date.now, {lang: "DE", geo_ip:"123.4.5.6"})
106
+ w_api.get_planner_for("03150323","AL","Gulf Shores")
107
+ w_api.get_planner_for(Time.now,Time.now+7.days,{geo_ip: "10.0.0.1"})
108
+ w_api.get_planner_for(Time.now,Time.now+7.days,"33030")
105
109
 
106
- .get_history_for accepts a string or any Date/Time/DateTime object that responds to .strftime("%Y%m%d") to auto-format the date.
110
+ .get_history_for and .get_planner_for accepts a string or any Date/Time/DateTime-like object that responds to .strftime("%Y%m%d") to auto-format the date.
107
111
 
108
112
 
109
113
  ### Other Stuff
@@ -127,7 +131,7 @@ Do eet.
127
131
 
128
132
  ##Thanks
129
133
 
130
- * [Amro Mousa](https://github.com/amro) - design inspiration (*cough* stolen)
134
+ * [Amro Mousa](https://github.com/amro) - design inspiration
131
135
 
132
136
 
133
137
  ##Copyrights
data/Rakefile CHANGED
@@ -19,14 +19,6 @@ Jeweler::Tasks.new do |gem|
19
19
  gem.description = %Q{A simple ruby API wrapper for interacting with the Wunderground API}
20
20
  gem.email = "winfred.nadeau@gmail.com"
21
21
  gem.authors = ["Winfred Nadeau"]
22
- # Include your dependencies below. Runtime dependencies are required when using your gem,
23
- # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
- gem.add_runtime_dependency 'httparty', '> 0.6.0'
25
- gem.add_runtime_dependency 'json', '> 1.4.0'
26
- gem.add_development_dependency 'shoulda', '> 0.0.0'
27
- gem.add_development_dependency 'mocha', '> 0.9.11'
28
- gem.add_development_dependency 'simplecov', '> 0'
29
- #gem.add_development_dependency 'rspec', '> 1.2.3'
30
22
  end
31
23
  Jeweler::RubygemsDotOrgTasks.new
32
24
 
@@ -50,5 +42,5 @@ Rake::RDocTask.new do |rdoc|
50
42
  end
51
43
  desc "Open an irb session preloaded with this library"
52
44
  task :console do
53
- sh "irb -rubygems -I lib -r wunderground_pound"
45
+ exec "irb -rubygems -I lib -r wunderground"
54
46
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
data/lib/wunderground.rb CHANGED
@@ -25,7 +25,13 @@ class Wunderground
25
25
  end
26
26
  def get_history_for(date,*args)
27
27
  history = (date.class == String ? "history_#{date}" : "history_#{date.strftime("%Y%m%d")}")
28
- send("get_#{history}_for",args)
28
+ send("get_#{history}_for",*args)
29
+ end
30
+ def get_planner_for(date,*args)
31
+ send("get_planner_#{date}_for",args) and return if date.class == String
32
+ range = date.strftime("%m%d") << args[0].strftime("%m%d")
33
+ args.delete_at(0)
34
+ send("get_planner_#{range}_for",*args)
29
35
  end
30
36
 
31
37
  protected
@@ -49,8 +55,8 @@ protected
49
55
  def method_missing(method, *args)
50
56
  raise NoMethodError, "undefined method: #{method} for Wunderground" unless method.to_s.start_with?("get_") and method.to_s.end_with?("_for")
51
57
  url = method.to_s.gsub("get_","").gsub("_for","").gsub("_and_","/")
52
- url << "/lang:#{@language}" if @language
53
- if Hash.try_convert(args[0])
58
+ url << "/lang:#{@language}" if @language
59
+ if args[0].class == Hash
54
60
  url = url.sub(/\/lang:.*/,'') and url << "/lang:#{args[0][:lang]}" if args[0][:lang]
55
61
  ip_address = args[0][:geo_ip] and args.push("autoip") if args[0][:geo_ip]
56
62
  args.delete_at(0)
@@ -99,7 +99,7 @@ class TestWunderground < Test::Unit::TestCase
99
99
  @wunderground.get_forecast_for({geo_ip: "127.0.0.1"})
100
100
  end
101
101
  end
102
- context 'default language' do
102
+ context 'language support' do
103
103
  setup {@wunderground.language = "FR"}
104
104
  should 'automatically set language for all location types' do
105
105
  expect_get(@url+"123/forecast/lang:FR/q/pws:KCATAHOE2.json",{timeout: 30})
@@ -109,8 +109,21 @@ class TestWunderground < Test::Unit::TestCase
109
109
  expect_get(@url+"123/forecast/lang:DE/q/ME/Portland.json",{timeout: 30})
110
110
  @wunderground.get_forecast_for({lang: "DE"},"ME","Portland")
111
111
  end
112
+ should 'pass language through history helper' do
113
+ expect_get(@url+"123/history_#{Time.now.strftime("%Y%m%d")}/lang:DE/q/ME/Portland.json",{timeout: 30})
114
+ @wunderground.get_history_for(Time.now,{lang: "DE"},"ME","Portland")
115
+ end
116
+ should 'pass language through planner helper' do
117
+ expect_get(@url+"123/planner_#{Time.now.strftime("%m%d")}#{(Time.now + 700000).strftime('%m%d')}/lang:DE/q/ME/Portland.json",{timeout: 30})
118
+ @wunderground.get_planner_for(Time.now,(Time.now+700000),{lang: "DE"},"ME","Portland")
119
+ end
120
+ should 'pass language through planner helper with IP' do
121
+ expect_get(@url+"123/planner_#{Time.now.strftime('%m%d')}#{(Time.now +
122
+ 700000).strftime('%m%d')}/lang:DE/q/autoip.json?geo_ip=127.0.0.1",{timeout: 30})
123
+ @wunderground.get_planner_for(Time.now,(Time.now+700000),{lang: "DE",geo_ip: "127.0.0.1"})
124
+ end
112
125
  end
113
- context 'for optional get_history_for(date,location)' do
126
+ context 'for get_history_for(date,location) helper' do
114
127
  should 'pass string dates straight to URL' do
115
128
  expect_get(@url+"123/history_20110121/q/ME/Portland.json",{timeout: 30})
116
129
  @wunderground.get_history_for("20110121","ME","Portland")
@@ -123,9 +136,19 @@ class TestWunderground < Test::Unit::TestCase
123
136
  expect_get(@url+"123/history_#{Time.now.strftime("%Y%m%d")}/q/ME/Portland.json",{timeout: 30})
124
137
  @wunderground.get_history_for(Time.now.to_date,"ME","Portland")
125
138
  end
126
- should 'accept DateTime objects' do
127
- expect_get(@url+"123/history_#{Time.now.strftime("%Y%m%d")}/q/ME/Portland.json",{timeout: 30})
128
- @wunderground.get_history_for(Time.now.to_datetime,"ME","Portland")
139
+ should 'accept Date object and pass optional hash object' do
140
+ expect_get(@url+"123/history_#{Time.now.strftime("%Y%m%d")}/q/autoip.json?geo_ip=127.0.0.1",{timeout: 30})
141
+ @wunderground.get_history_for(Time.now.to_datetime,{geo_ip: '127.0.0.1'})
142
+ end
143
+ end
144
+ context 'for get_planner_for helper' do
145
+ should 'pass string date ranges through' do
146
+ expect_get(@url+"123/planner_03130323/q/ME/Portland.json",{timeout: 30})
147
+ @wunderground.get_planner_for("03130323","ME","Portland")
148
+ end
149
+ should 'turn two date objects into a properly formatted string' do
150
+ expect_get(@url+"123/planner_#{Time.now.strftime('%m%d')}#{(Time.now + 700000).strftime('%m%d')}/q/autoip.json?geo_ip=127.0.0.1",{timeout: 30})
151
+ @wunderground.get_planner_for(Time.now,(Time.now + 700000),{geo_ip: '127.0.0.1'})
129
152
  end
130
153
  end
131
154
  end
@@ -0,0 +1,79 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "wunderground_ruby"
8
+ s.version = "0.2.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Winfred Nadeau"]
12
+ s.date = "2012-01-22"
13
+ s.description = "A simple ruby API wrapper for interacting with the Wunderground API"
14
+ s.email = "winfred.nadeau@gmail.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ "Gemfile",
21
+ "LICENSE.txt",
22
+ "README.markdown",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "lib/wunderground.rb",
26
+ "test/helper.rb",
27
+ "test/test_wunderground.rb",
28
+ "wunderground_ruby.gemspec"
29
+ ]
30
+ s.homepage = "http://github.com/wnadeau/wunderground_ruby"
31
+ s.licenses = ["MIT"]
32
+ s.require_paths = ["lib"]
33
+ s.rubygems_version = "1.8.10"
34
+ s.summary = "A simple ruby API wrapper for interacting with the Wunderground API"
35
+ s.test_files = [
36
+ "test/helper.rb",
37
+ "test/test_wunderground.rb"
38
+ ]
39
+
40
+ if s.respond_to? :specification_version then
41
+ s.specification_version = 3
42
+
43
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
44
+ s.add_runtime_dependency(%q<json>, ["> 1.4.0"])
45
+ s.add_runtime_dependency(%q<httparty>, ["> 0.6.0"])
46
+ s.add_runtime_dependency(%q<addressable>, [">= 0"])
47
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
48
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
49
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
50
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
51
+ s.add_development_dependency(%q<mocha>, ["> 0.9.11"])
52
+ s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
53
+ s.add_development_dependency(%q<ruby-debug>, [">= 0"])
54
+ else
55
+ s.add_dependency(%q<json>, ["> 1.4.0"])
56
+ s.add_dependency(%q<httparty>, ["> 0.6.0"])
57
+ s.add_dependency(%q<addressable>, [">= 0"])
58
+ s.add_dependency(%q<shoulda>, [">= 0"])
59
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
60
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
61
+ s.add_dependency(%q<simplecov>, [">= 0"])
62
+ s.add_dependency(%q<mocha>, ["> 0.9.11"])
63
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
64
+ s.add_dependency(%q<ruby-debug>, [">= 0"])
65
+ end
66
+ else
67
+ s.add_dependency(%q<json>, ["> 1.4.0"])
68
+ s.add_dependency(%q<httparty>, ["> 0.6.0"])
69
+ s.add_dependency(%q<addressable>, [">= 0"])
70
+ s.add_dependency(%q<shoulda>, [">= 0"])
71
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
72
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
73
+ s.add_dependency(%q<simplecov>, [">= 0"])
74
+ s.add_dependency(%q<mocha>, ["> 0.9.11"])
75
+ s.add_dependency(%q<ruby-debug19>, [">= 0"])
76
+ s.add_dependency(%q<ruby-debug>, [">= 0"])
77
+ end
78
+ end
79
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wunderground_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-21 00:00:00.000000000Z
12
+ date: 2012-01-22 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &70152356297300 !ruby/object:Gem::Requirement
16
+ requirement: &70237028968260 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>'
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.4.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70152356297300
24
+ version_requirements: *70237028968260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: httparty
27
- requirement: &70152356296360 !ruby/object:Gem::Requirement
27
+ requirement: &70237028967400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>'
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.6.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70152356296360
35
+ version_requirements: *70237028967400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: addressable
38
- requirement: &70152356295400 !ruby/object:Gem::Requirement
38
+ requirement: &70237028966500 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70152356295400
46
+ version_requirements: *70237028966500
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: shoulda
49
- requirement: &70152356294520 !ruby/object:Gem::Requirement
49
+ requirement: &70237028965620 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70152356294520
57
+ version_requirements: *70237028965620
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: bundler
60
- requirement: &70152356272440 !ruby/object:Gem::Requirement
60
+ requirement: &70237028964540 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.0.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70152356272440
68
+ version_requirements: *70237028964540
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: jeweler
71
- requirement: &70152356271540 !ruby/object:Gem::Requirement
71
+ requirement: &70237028963480 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.5.1
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70152356271540
79
+ version_requirements: *70237028963480
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: simplecov
82
- requirement: &70152356270760 !ruby/object:Gem::Requirement
82
+ requirement: &70237028960840 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70152356270760
90
+ version_requirements: *70237028960840
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: mocha
93
- requirement: &70152356269880 !ruby/object:Gem::Requirement
93
+ requirement: &70237028960200 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>'
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 0.9.11
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70152356269880
101
+ version_requirements: *70237028960200
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: ruby-debug19
104
- requirement: &70152356268860 !ruby/object:Gem::Requirement
104
+ requirement: &70237028959400 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70152356268860
112
+ version_requirements: *70237028959400
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: ruby-debug
115
- requirement: &70152356267820 !ruby/object:Gem::Requirement
115
+ requirement: &70237028958340 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,62 +120,7 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70152356267820
124
- - !ruby/object:Gem::Dependency
125
- name: httparty
126
- requirement: &70152356267000 !ruby/object:Gem::Requirement
127
- none: false
128
- requirements:
129
- - - ! '>'
130
- - !ruby/object:Gem::Version
131
- version: 0.6.0
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: *70152356267000
135
- - !ruby/object:Gem::Dependency
136
- name: json
137
- requirement: &70152356265660 !ruby/object:Gem::Requirement
138
- none: false
139
- requirements:
140
- - - ! '>'
141
- - !ruby/object:Gem::Version
142
- version: 1.4.0
143
- type: :runtime
144
- prerelease: false
145
- version_requirements: *70152356265660
146
- - !ruby/object:Gem::Dependency
147
- name: shoulda
148
- requirement: &70152356249020 !ruby/object:Gem::Requirement
149
- none: false
150
- requirements:
151
- - - ! '>'
152
- - !ruby/object:Gem::Version
153
- version: 0.0.0
154
- type: :development
155
- prerelease: false
156
- version_requirements: *70152356249020
157
- - !ruby/object:Gem::Dependency
158
- name: mocha
159
- requirement: &70152356247860 !ruby/object:Gem::Requirement
160
- none: false
161
- requirements:
162
- - - ! '>'
163
- - !ruby/object:Gem::Version
164
- version: 0.9.11
165
- type: :development
166
- prerelease: false
167
- version_requirements: *70152356247860
168
- - !ruby/object:Gem::Dependency
169
- name: simplecov
170
- requirement: &70152356246360 !ruby/object:Gem::Requirement
171
- none: false
172
- requirements:
173
- - - ! '>'
174
- - !ruby/object:Gem::Version
175
- version: '0'
176
- type: :development
177
- prerelease: false
178
- version_requirements: *70152356246360
123
+ version_requirements: *70237028958340
179
124
  description: A simple ruby API wrapper for interacting with the Wunderground API
180
125
  email: winfred.nadeau@gmail.com
181
126
  executables: []
@@ -192,6 +137,7 @@ files:
192
137
  - lib/wunderground.rb
193
138
  - test/helper.rb
194
139
  - test/test_wunderground.rb
140
+ - wunderground_ruby.gemspec
195
141
  homepage: http://github.com/wnadeau/wunderground_ruby
196
142
  licenses:
197
143
  - MIT
@@ -207,7 +153,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
207
153
  version: '0'
208
154
  segments:
209
155
  - 0
210
- hash: 431265459336154521
156
+ hash: -306578686232459491
211
157
  required_rubygems_version: !ruby/object:Gem::Requirement
212
158
  none: false
213
159
  requirements: