snowfall 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8576a0da9236cf47a7e180e44aab4a20f77f1278
4
+ data.tar.gz: 01ac7bdb35e36e6619bcedb0b5894ff5ce731e93
5
+ SHA512:
6
+ metadata.gz: 876840f49c6ef24820c984e71d3666505312304f13220b2ce4651e12db4ef460e5bfa893a22947a3f45abae6db5fdeeb3430565fb02d926cd5a84697e20d7d37
7
+ data.tar.gz: 02a97f591fd8939e65b9a3beed2880db7bb16bd597dbcacef667c27a87f720774d7ac9c79278932defbd5ef28d45247d01617804ac8c972bcd725a00f94ba009
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
5
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in snowfall.gemspec
4
+ gemspec
@@ -0,0 +1,6 @@
1
+ guard :rspec do
2
+ watch(%r{^spec/.+_spec\.rb$})
3
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
4
+ watch('spec/spec_helper.rb') { "spec" }
5
+ end
6
+
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Taylor Smith
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,29 @@
1
+ # Snowfall
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'snowfall'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install snowfall
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
7
+
@@ -0,0 +1,411 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.onthesnow.com/colorado/snow-rss.html
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - '*/*'
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Sun, 10 Nov 2013 23:22:20 GMT
23
+ Server:
24
+ - Apache/2.2.15 (Red Hat) mod_apreq2-20090110/2.8.0 mod_perl/2.0.4 Perl/v5.10.1
25
+ Content-Type:
26
+ - text/xml; charset=utf-8
27
+ Set-Cookie:
28
+ - actregion=251; path=/; expires=Tue, 10-Dec-2013 23:22:20 GMT
29
+ - actregion_c=251&1; path=/; expires=Tue, 10-Dec-2013 23:22:20 GMT
30
+ - actregion_p=0&1; path=/; expires=Tue, 10-Dec-2013 23:22:20 GMT
31
+ - actregion_t=1384125740; path=/; expires=Tue, 10-Dec-2013 23:22:20 GMT
32
+ Vary:
33
+ - Accept-Encoding
34
+ Connection:
35
+ - close
36
+ Transfer-Encoding:
37
+ - chunked
38
+ body:
39
+ encoding: UTF-8
40
+ string: |+
41
+ <?xml version="1.0" encoding="UTF-8"?>
42
+ <rss version="2.0"
43
+ xmlns:blogChannel="http://backend.userland.com/blogChannelModule"
44
+ xmlns:ots="http://www.onthesnow.com/ots_rss_namespace/"
45
+ >
46
+ <channel>
47
+ <title>RSS feed for snow reports of ski resorts in Colorado</title>
48
+ <link>/colorado/skireport.html?XE_AFF=rss</link>
49
+ <description>RSS feed for snow reports of ski resorts in Colorado.</description>
50
+ <language>en-us</language>
51
+ <copyright>Copyright 2012, OnTheSnow. Commercial use of this feed is prohibited without specific written approval from Mountain News. For commercial use feeds, please visit MountainNews.com</copyright>
52
+ <image>
53
+ <title>OnTheSnow</title>
54
+ <url>http://www.onthesnow.com/ots/images/logo_image/en/OTS_logo_244x58gif.gif</url>
55
+ <link>http://www.onthesnow.com</link>
56
+ </image>
57
+ <item>
58
+ <title>Arapahoe Basin Ski Area Colorado</title>
59
+ <description>Open / Past 48 Hours: / 0 / Slopes, top station: / Machine Groomed / Base Depth: / 18</description>
60
+ <guid isPermaLink="true">/colorado/arapahoe-basin-ski-area/skireport.html?XE_AFF=rss</guid>
61
+ <pubDate>Sat, 9 Nov 2013 05:31:19 +0000</pubDate>
62
+ <ots:open_staus>Open</ots:open_staus>
63
+ <ots:resort_id>20</ots:resort_id>
64
+ <ots:base_depth>18</ots:base_depth>
65
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
66
+ <ots:region_name>Colorado</ots:region_name>
67
+ <ots:surface_condition>Machine Groomed</ots:surface_condition>
68
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
69
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
70
+ <ots:resort_rss_link>/colorado/arapahoe-basin-ski-area/snow.rss</ots:resort_rss_link>
71
+ </item>
72
+ <item>
73
+ <title>Aspen / Snowmass Colorado</title>
74
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
75
+ <guid isPermaLink="true">/colorado/aspen-snowmass/skireport.html?XE_AFF=rss</guid>
76
+ <pubDate>N/A</pubDate>
77
+ <ots:open_staus>No Report Available</ots:open_staus>
78
+ <ots:resort_id>25</ots:resort_id>
79
+ <ots:base_depth>N/A</ots:base_depth>
80
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
81
+ <ots:region_name>Colorado</ots:region_name>
82
+ <ots:surface_condition>N/A</ots:surface_condition>
83
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
84
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
85
+ <ots:resort_rss_link>/colorado/aspen-mountain/snow.rss</ots:resort_rss_link>
86
+ </item>
87
+ <item>
88
+ <title>Beaver Creek Colorado</title>
89
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
90
+ <guid isPermaLink="true">/colorado/beaver-creek/skireport.html?XE_AFF=rss</guid>
91
+ <pubDate>N/A</pubDate>
92
+ <ots:open_staus>No Report Available</ots:open_staus>
93
+ <ots:resort_id>36</ots:resort_id>
94
+ <ots:base_depth>N/A</ots:base_depth>
95
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
96
+ <ots:region_name>Colorado</ots:region_name>
97
+ <ots:surface_condition>N/A</ots:surface_condition>
98
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
99
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
100
+ <ots:resort_rss_link>/colorado/beaver-creek/snow.rss</ots:resort_rss_link>
101
+ </item>
102
+ <item>
103
+ <title>Breckenridge Colorado</title>
104
+ <description>Open / Past 48 Hours: / 0 / Slopes, top station: / Machine Groomed / Base Depth: / 18</description>
105
+ <guid isPermaLink="true">/colorado/breckenridge/skireport.html?XE_AFF=rss</guid>
106
+ <pubDate>Sun, 10 Nov 2013 05:31:22 +0000</pubDate>
107
+ <ots:open_staus>Open</ots:open_staus>
108
+ <ots:resort_id>77</ots:resort_id>
109
+ <ots:base_depth>18</ots:base_depth>
110
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
111
+ <ots:region_name>Colorado</ots:region_name>
112
+ <ots:surface_condition>Machine Groomed</ots:surface_condition>
113
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
114
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
115
+ <ots:resort_rss_link>/colorado/breckenridge/snow.rss</ots:resort_rss_link>
116
+ </item>
117
+ <item>
118
+ <title>Copper Mountain Resort Colorado</title>
119
+ <description>Open / Past 48 Hours: / 0 / Slopes, top station: / Machine Groomed / Base Depth: / 19</description>
120
+ <guid isPermaLink="true">/colorado/copper-mountain-resort/skireport.html?XE_AFF=rss</guid>
121
+ <pubDate>Sun, 10 Nov 2013 05:01:23 +0000</pubDate>
122
+ <ots:open_staus>Open</ots:open_staus>
123
+ <ots:resort_id>113</ots:resort_id>
124
+ <ots:base_depth>19</ots:base_depth>
125
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
126
+ <ots:region_name>Colorado</ots:region_name>
127
+ <ots:surface_condition>Machine Groomed</ots:surface_condition>
128
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
129
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
130
+ <ots:resort_rss_link>/colorado/copper-mountain-resort/snow.rss</ots:resort_rss_link>
131
+ </item>
132
+ <item>
133
+ <title>Crested Butte Mountain Resort Colorado</title>
134
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
135
+ <guid isPermaLink="true">/colorado/crested-butte-mountain-resort/skireport.html?XE_AFF=rss</guid>
136
+ <pubDate>N/A</pubDate>
137
+ <ots:open_staus>No Report Available</ots:open_staus>
138
+ <ots:resort_id>120</ots:resort_id>
139
+ <ots:base_depth>N/A</ots:base_depth>
140
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
141
+ <ots:region_name>Colorado</ots:region_name>
142
+ <ots:surface_condition>N/A</ots:surface_condition>
143
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
144
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
145
+ <ots:resort_rss_link>/colorado/crested-butte-mountain/snow.rss</ots:resort_rss_link>
146
+ </item>
147
+ <item>
148
+ <title>Durango Mountain Resort Colorado</title>
149
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
150
+ <guid isPermaLink="true">/colorado/durango-mountain-resort/skireport.html?XE_AFF=rss</guid>
151
+ <pubDate>N/A</pubDate>
152
+ <ots:open_staus>No Report Available</ots:open_staus>
153
+ <ots:resort_id>330</ots:resort_id>
154
+ <ots:base_depth>N/A</ots:base_depth>
155
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
156
+ <ots:region_name>Colorado</ots:region_name>
157
+ <ots:surface_condition>N/A</ots:surface_condition>
158
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
159
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
160
+ <ots:resort_rss_link>/colorado/durango-mountain-resort/snow.rss</ots:resort_rss_link>
161
+ </item>
162
+ <item>
163
+ <title>Eldora Mountain Resort Colorado</title>
164
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
165
+ <guid isPermaLink="true">/colorado/eldora-mountain-resort/skireport.html?XE_AFF=rss</guid>
166
+ <pubDate>N/A</pubDate>
167
+ <ots:open_staus>No Report Available</ots:open_staus>
168
+ <ots:resort_id>143</ots:resort_id>
169
+ <ots:base_depth>N/A</ots:base_depth>
170
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
171
+ <ots:region_name>Colorado</ots:region_name>
172
+ <ots:surface_condition>N/A</ots:surface_condition>
173
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
174
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
175
+ <ots:resort_rss_link>/colorado/eldora-mountain-resort/snow.rss</ots:resort_rss_link>
176
+ </item>
177
+ <item>
178
+ <title>Howelsen Hill Colorado</title>
179
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
180
+ <guid isPermaLink="true">/colorado/howelsen-hill/skireport.html?XE_AFF=rss</guid>
181
+ <pubDate>N/A</pubDate>
182
+ <ots:open_staus>No Report Available</ots:open_staus>
183
+ <ots:resort_id>181</ots:resort_id>
184
+ <ots:base_depth>N/A</ots:base_depth>
185
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
186
+ <ots:region_name>Colorado</ots:region_name>
187
+ <ots:surface_condition>N/A</ots:surface_condition>
188
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
189
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
190
+ <ots:resort_rss_link>/colorado/howelsen-hill/snow.rss</ots:resort_rss_link>
191
+ </item>
192
+ <item>
193
+ <title>Keystone Colorado</title>
194
+ <description>Open / Past 48 Hours: / 0 / Slopes, top station: / Machine Made / Base Depth: / 18</description>
195
+ <guid isPermaLink="true">/colorado/keystone/skireport.html?XE_AFF=rss</guid>
196
+ <pubDate>Sun, 10 Nov 2013 05:31:22 +0000</pubDate>
197
+ <ots:open_staus>Open</ots:open_staus>
198
+ <ots:resort_id>197</ots:resort_id>
199
+ <ots:base_depth>18</ots:base_depth>
200
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
201
+ <ots:region_name>Colorado</ots:region_name>
202
+ <ots:surface_condition>Machine Made</ots:surface_condition>
203
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
204
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
205
+ <ots:resort_rss_link>/colorado/keystone/snow.rss</ots:resort_rss_link>
206
+ </item>
207
+ <item>
208
+ <title>Loveland Colorado</title>
209
+ <description>Open / Past 48 Hours: / 0 / Slopes, top station: / Machine Groomed / Base Depth: / 18</description>
210
+ <guid isPermaLink="true">/colorado/loveland/skireport.html?XE_AFF=rss</guid>
211
+ <pubDate>Sun, 10 Nov 2013 05:31:22 +0000</pubDate>
212
+ <ots:open_staus>Open</ots:open_staus>
213
+ <ots:resort_id>220</ots:resort_id>
214
+ <ots:base_depth>18</ots:base_depth>
215
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
216
+ <ots:region_name>Colorado</ots:region_name>
217
+ <ots:surface_condition>Machine Groomed</ots:surface_condition>
218
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
219
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
220
+ <ots:resort_rss_link>/colorado/loveland/snow.rss</ots:resort_rss_link>
221
+ </item>
222
+ <item>
223
+ <title>Monarch Mountain Colorado</title>
224
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
225
+ <guid isPermaLink="true">/colorado/monarch-mountain/skireport.html?XE_AFF=rss</guid>
226
+ <pubDate>N/A</pubDate>
227
+ <ots:open_staus>No Report Available</ots:open_staus>
228
+ <ots:resort_id>240</ots:resort_id>
229
+ <ots:base_depth>N/A</ots:base_depth>
230
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
231
+ <ots:region_name>Colorado</ots:region_name>
232
+ <ots:surface_condition>N/A</ots:surface_condition>
233
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
234
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
235
+ <ots:resort_rss_link>/colorado/monarch-mountain/snow.rss</ots:resort_rss_link>
236
+ </item>
237
+ <item>
238
+ <title>Powderhorn Colorado</title>
239
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
240
+ <guid isPermaLink="true">/colorado/powderhorn/skireport.html?XE_AFF=rss</guid>
241
+ <pubDate>N/A</pubDate>
242
+ <ots:open_staus>No Report Available</ots:open_staus>
243
+ <ots:resort_id>329</ots:resort_id>
244
+ <ots:base_depth>N/A</ots:base_depth>
245
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
246
+ <ots:region_name>Colorado</ots:region_name>
247
+ <ots:surface_condition>N/A</ots:surface_condition>
248
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
249
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
250
+ <ots:resort_rss_link>/colorado/powderhorn/snow.rss</ots:resort_rss_link>
251
+ </item>
252
+ <item>
253
+ <title>Silverton Mountain Colorado</title>
254
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
255
+ <guid isPermaLink="true">/colorado/silverton-mountain/skireport.html?XE_AFF=rss</guid>
256
+ <pubDate>N/A</pubDate>
257
+ <ots:open_staus>No Report Available</ots:open_staus>
258
+ <ots:resort_id>1435</ots:resort_id>
259
+ <ots:base_depth>N/A</ots:base_depth>
260
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
261
+ <ots:region_name>Colorado</ots:region_name>
262
+ <ots:surface_condition>N/A</ots:surface_condition>
263
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
264
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
265
+ <ots:resort_rss_link>/colorado/silverton-mountain/snow.rss</ots:resort_rss_link>
266
+ </item>
267
+ <item>
268
+ <title>Ski Cooper Colorado</title>
269
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
270
+ <guid isPermaLink="true">/colorado/ski-cooper/skireport.html?XE_AFF=rss</guid>
271
+ <pubDate>N/A</pubDate>
272
+ <ots:open_staus>No Report Available</ots:open_staus>
273
+ <ots:resort_id>372</ots:resort_id>
274
+ <ots:base_depth>N/A</ots:base_depth>
275
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
276
+ <ots:region_name>Colorado</ots:region_name>
277
+ <ots:surface_condition>N/A</ots:surface_condition>
278
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
279
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
280
+ <ots:resort_rss_link>/colorado/ski-cooper/snow.rss</ots:resort_rss_link>
281
+ </item>
282
+ <item>
283
+ <title>Ski Granby Ranch Colorado</title>
284
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
285
+ <guid isPermaLink="true">/colorado/ski-granby-ranch/skireport.html?XE_AFF=rss</guid>
286
+ <pubDate>N/A</pubDate>
287
+ <ots:open_staus>No Report Available</ots:open_staus>
288
+ <ots:resort_id>365</ots:resort_id>
289
+ <ots:base_depth>N/A</ots:base_depth>
290
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
291
+ <ots:region_name>Colorado</ots:region_name>
292
+ <ots:surface_condition>N/A</ots:surface_condition>
293
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
294
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
295
+ <ots:resort_rss_link>/colorado/solvista-golf-ski-ranch-silver-creek/snow.rss</ots:resort_rss_link>
296
+ </item>
297
+ <item>
298
+ <title>Snowmass Colorado</title>
299
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
300
+ <guid isPermaLink="true">/colorado/snowmass/skireport.html?XE_AFF=rss</guid>
301
+ <pubDate>N/A</pubDate>
302
+ <ots:open_staus>No Report Available</ots:open_staus>
303
+ <ots:resort_id>406</ots:resort_id>
304
+ <ots:base_depth>N/A</ots:base_depth>
305
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
306
+ <ots:region_name>Colorado</ots:region_name>
307
+ <ots:surface_condition>N/A</ots:surface_condition>
308
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
309
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
310
+ <ots:resort_rss_link>/colorado/snowmass/snow.rss</ots:resort_rss_link>
311
+ </item>
312
+ <item>
313
+ <title>Steamboat Colorado</title>
314
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
315
+ <guid isPermaLink="true">/colorado/steamboat/skireport.html?XE_AFF=rss</guid>
316
+ <pubDate>N/A</pubDate>
317
+ <ots:open_staus>No Report Available</ots:open_staus>
318
+ <ots:resort_id>425</ots:resort_id>
319
+ <ots:base_depth>N/A</ots:base_depth>
320
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
321
+ <ots:region_name>Colorado</ots:region_name>
322
+ <ots:surface_condition>N/A</ots:surface_condition>
323
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
324
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
325
+ <ots:resort_rss_link>/colorado/steamboat/snow.rss</ots:resort_rss_link>
326
+ </item>
327
+ <item>
328
+ <title>Sunlight Mountain Resort Colorado</title>
329
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
330
+ <guid isPermaLink="true">/colorado/sunlight-mountain-resort/skireport.html?XE_AFF=rss</guid>
331
+ <pubDate>N/A</pubDate>
332
+ <ots:open_staus>No Report Available</ots:open_staus>
333
+ <ots:resort_id>445</ots:resort_id>
334
+ <ots:base_depth>N/A</ots:base_depth>
335
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
336
+ <ots:region_name>Colorado</ots:region_name>
337
+ <ots:surface_condition>N/A</ots:surface_condition>
338
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
339
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
340
+ <ots:resort_rss_link>/colorado/sunlight-mountain-resort/snow.rss</ots:resort_rss_link>
341
+ </item>
342
+ <item>
343
+ <title>Telluride Colorado</title>
344
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
345
+ <guid isPermaLink="true">/colorado/telluride/skireport.html?XE_AFF=rss</guid>
346
+ <pubDate>N/A</pubDate>
347
+ <ots:open_staus>No Report Available</ots:open_staus>
348
+ <ots:resort_id>456</ots:resort_id>
349
+ <ots:base_depth>N/A</ots:base_depth>
350
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
351
+ <ots:region_name>Colorado</ots:region_name>
352
+ <ots:surface_condition>N/A</ots:surface_condition>
353
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
354
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
355
+ <ots:resort_rss_link>/colorado/telluride/snow.rss</ots:resort_rss_link>
356
+ </item>
357
+ <item>
358
+ <title>Vail Colorado</title>
359
+ <description>No Report Available / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / </description>
360
+ <guid isPermaLink="true">/colorado/vail/skireport.html?XE_AFF=rss</guid>
361
+ <pubDate>N/A</pubDate>
362
+ <ots:open_staus>No Report Available</ots:open_staus>
363
+ <ots:resort_id>482</ots:resort_id>
364
+ <ots:base_depth>N/A</ots:base_depth>
365
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
366
+ <ots:region_name>Colorado</ots:region_name>
367
+ <ots:surface_condition>N/A</ots:surface_condition>
368
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
369
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
370
+ <ots:resort_rss_link>/colorado/vail/snow.rss</ots:resort_rss_link>
371
+ </item>
372
+ <item>
373
+ <title>Winter Park Resort Colorado</title>
374
+ <description>Closed (end of season) / Past 48 Hours: / 0 / Slopes, top station: / N/A / Base Depth: / 0</description>
375
+ <guid isPermaLink="true">/colorado/winter-park-resort/skireport.html?XE_AFF=rss</guid>
376
+ <pubDate>Thu, 7 Nov 2013 11:01:19 +0000</pubDate>
377
+ <ots:open_staus>Closed (end of season)</ots:open_staus>
378
+ <ots:resort_id>507</ots:resort_id>
379
+ <ots:base_depth>N/A</ots:base_depth>
380
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
381
+ <ots:region_name>Colorado</ots:region_name>
382
+ <ots:surface_condition>N/A</ots:surface_condition>
383
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
384
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
385
+ <ots:resort_rss_link>/colorado/winter-park-resort/snow.rss</ots:resort_rss_link>
386
+ </item>
387
+ <item>
388
+ <title>Wolf Creek Ski Area Colorado</title>
389
+ <description>Open / Past 48 Hours: / 0 / Slopes, top station: / Packed Powder / Base Depth: / 24</description>
390
+ <guid isPermaLink="true">/colorado/wolf-creek-ski-area/skireport.html?XE_AFF=rss</guid>
391
+ <pubDate>Sun, 10 Nov 2013 07:01:21 +0000</pubDate>
392
+ <ots:open_staus>Open</ots:open_staus>
393
+ <ots:resort_id>511</ots:resort_id>
394
+ <ots:base_depth>24</ots:base_depth>
395
+ <ots:snowfall_48hr>0</ots:snowfall_48hr>
396
+ <ots:region_name>Colorado</ots:region_name>
397
+ <ots:surface_condition>Packed Powder</ots:surface_condition>
398
+ <ots:base_depth_metric>inches</ots:base_depth_metric>
399
+ <ots:snowfall_48hr_metric>inches</ots:snowfall_48hr_metric>
400
+ <ots:resort_rss_link>/colorado/wolf-creek-ski-area/snow.rss</ots:resort_rss_link>
401
+ </item>
402
+ </channel>
403
+ </rss>
404
+
405
+
406
+
407
+
408
+
409
+ http_version:
410
+ recorded_at: Sun, 10 Nov 2013 23:22:21 GMT
411
+ recorded_with: VCR 2.7.0
@@ -0,0 +1,3 @@
1
+ require 'snowfall/version'
2
+ require 'snowfall/report'
3
+
@@ -0,0 +1,42 @@
1
+ require 'nokogiri'
2
+ require 'open-uri'
3
+ require 'ostruct'
4
+
5
+ module Snowfall
6
+ class Report
7
+ attr_accessor :state, :url
8
+
9
+ def initialize state
10
+ self.state = state
11
+ self.url = format_url state
12
+ end
13
+
14
+ def resorts
15
+ Nokogiri::HTML(open(url)).xpath('//rss/channel/item').map do |i|
16
+ OpenStruct.new({
17
+ name: i.xpath('title').text,
18
+ updated: i.xpath('pubdate').text,
19
+ status: i.xpath('open_staus').text,
20
+ conditions: i.xpath('surface_condition').text,
21
+
22
+ base: {
23
+ depth: i.xpath('base_depth').text,
24
+ metric: i.xpath('base_depth_metric').text
25
+ },
26
+
27
+ snowfall: {
28
+ amount: i.xpath('snowfall_48hr').text,
29
+ metric: i.xpath('snowfall_48hr_metric').text
30
+ }
31
+ })
32
+ end
33
+ end
34
+
35
+ private
36
+
37
+ def format_url state
38
+ "http://www.onthesnow.com/#{state.downcase.strip.gsub(' ', '-')}/snow-rss.html"
39
+ end
40
+ end
41
+ end
42
+
@@ -0,0 +1,4 @@
1
+ module Snowfall
2
+ VERSION = "0.0.1"
3
+ end
4
+
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'snowfall/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "snowfall"
8
+ spec.version = Snowfall::VERSION
9
+ spec.authors = ["Taylor Smith"]
10
+ spec.email = ["mail@taylorsmith.net"]
11
+ spec.description = %q{A Ruby wrapper for OnTheSnow RSS feeds}
12
+ spec.summary = %q{A Ruby wrapper for OnTheSnow RSS feeds}
13
+ spec.homepage = "https://github.com/taylorsmith/snowfall"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "nokogiri", "~> 1.6.0"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "rake", "~> 10.1.0"
25
+ spec.add_development_dependency "rspec", "~> 2.14.1"
26
+ spec.add_development_dependency "guard-rspec", "~> 4.0.4"
27
+ spec.add_development_dependency "simplecov", "~> 0.8.1"
28
+ spec.add_development_dependency "vcr", "~> 2.7.0"
29
+ spec.add_development_dependency "webmock", "~> 1.15.2"
30
+ end
31
+
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Snowfall::Report, '.new' do
4
+ it 'configures the report settings' do
5
+ colorado = Snowfall::Report.new 'Colorado'
6
+ colorado.state.should eq 'Colorado'
7
+ colorado.url.should eq 'http://www.onthesnow.com/colorado/snow-rss.html'
8
+ end
9
+ end
10
+
11
+ describe Snowfall::Report, '#resorts' do
12
+ it 'returns an array of resorts' do
13
+ VCR.use_cassette('colorado') do
14
+ colorado = Snowfall::Report.new 'Colorado'
15
+ colorado.resorts.count.should eq 23
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ module Snowfall
4
+ describe VERSION do
5
+ it { should_not be_nil }
6
+ end
7
+ end
8
+
@@ -0,0 +1,16 @@
1
+ require 'vcr_helper'
2
+ require 'simplecov'
3
+
4
+ SimpleCov.start do
5
+ add_filter 'spec/'
6
+ end
7
+
8
+ require 'snowfall'
9
+
10
+ RSpec.configure do |config|
11
+ config.treat_symbols_as_metadata_keys_with_true_values = true
12
+ config.run_all_when_everything_filtered = true
13
+ config.filter_run :focus
14
+ config.order = 'random'
15
+ end
16
+
@@ -0,0 +1,7 @@
1
+ require 'vcr'
2
+
3
+ VCR.configure do |config|
4
+ config.cassette_library_dir = 'fixtures/cassettes'
5
+ config.hook_into :webmock
6
+ end
7
+
metadata ADDED
@@ -0,0 +1,177 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: snowfall
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Taylor Smith
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 1.6.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 1.6.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 10.1.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 10.1.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.14.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 2.14.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard-rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 4.0.4
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 4.0.4
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 0.8.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 0.8.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: vcr
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 2.7.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 2.7.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: webmock
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 1.15.2
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: 1.15.2
125
+ description: A Ruby wrapper for OnTheSnow RSS feeds
126
+ email:
127
+ - mail@taylorsmith.net
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - .gitignore
133
+ - .rspec
134
+ - .travis.yml
135
+ - Gemfile
136
+ - Guardfile
137
+ - LICENSE.txt
138
+ - README.md
139
+ - Rakefile
140
+ - fixtures/cassettes/colorado.yml
141
+ - lib/snowfall.rb
142
+ - lib/snowfall/report.rb
143
+ - lib/snowfall/version.rb
144
+ - snowfall.gemspec
145
+ - spec/lib/snowfall/report_spec.rb
146
+ - spec/lib/snowfall/version_spec.rb
147
+ - spec/spec_helper.rb
148
+ - spec/vcr_helper.rb
149
+ homepage: https://github.com/taylorsmith/snowfall
150
+ licenses:
151
+ - MIT
152
+ metadata: {}
153
+ post_install_message:
154
+ rdoc_options: []
155
+ require_paths:
156
+ - lib
157
+ required_ruby_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - '>='
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ required_rubygems_version: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ requirements: []
168
+ rubyforge_project:
169
+ rubygems_version: 2.2.2
170
+ signing_key:
171
+ specification_version: 4
172
+ summary: A Ruby wrapper for OnTheSnow RSS feeds
173
+ test_files:
174
+ - spec/lib/snowfall/report_spec.rb
175
+ - spec/lib/snowfall/version_spec.rb
176
+ - spec/spec_helper.rb
177
+ - spec/vcr_helper.rb