barometer 0.7.3 → 0.8.0
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/.gitignore +1 -0
- data/.travis.yml +7 -0
- data/LICENSE +1 -1
- data/{README.rdoc → README.md} +124 -110
- data/Rakefile +1 -21
- data/TODO +8 -9
- data/barometer.gemspec +20 -19
- data/bin/barometer +36 -83
- data/lib/barometer.rb +13 -11
- data/lib/barometer/base.rb +10 -10
- data/lib/barometer/data.rb +1 -1
- data/lib/barometer/data/distance.rb +25 -25
- data/lib/barometer/data/geo.rb +9 -9
- data/lib/barometer/data/local_datetime.rb +24 -20
- data/lib/barometer/data/local_time.rb +13 -13
- data/lib/barometer/data/location.rb +6 -6
- data/lib/barometer/data/pressure.rb +24 -24
- data/lib/barometer/data/speed.rb +28 -28
- data/lib/barometer/data/sun.rb +7 -7
- data/lib/barometer/data/temperature.rb +29 -29
- data/lib/barometer/data/units.rb +9 -9
- data/lib/barometer/data/zone.rb +19 -19
- data/lib/barometer/formats.rb +1 -1
- data/lib/barometer/formats/coordinates.rb +7 -7
- data/lib/barometer/formats/format.rb +6 -6
- data/lib/barometer/formats/geocode.rb +5 -5
- data/lib/barometer/formats/icao.rb +6 -6
- data/lib/barometer/formats/postalcode.rb +3 -3
- data/lib/barometer/formats/short_zipcode.rb +2 -2
- data/lib/barometer/formats/weather_id.rb +10 -10
- data/lib/barometer/formats/woe_id.rb +20 -20
- data/lib/barometer/formats/zipcode.rb +3 -3
- data/lib/barometer/key_file_parser.rb +20 -0
- data/lib/barometer/measurements/measurement.rb +32 -32
- data/lib/barometer/measurements/result.rb +39 -39
- data/lib/barometer/measurements/result_array.rb +12 -12
- data/lib/barometer/query.rb +15 -15
- data/lib/barometer/services.rb +3 -3
- data/lib/barometer/translations/icao_country_codes.yml +20 -20
- data/lib/barometer/translations/weather_country_codes.yml +1 -1
- data/lib/barometer/translations/zone_codes.yml +2 -2
- data/lib/barometer/version.rb +3 -0
- data/lib/barometer/weather.rb +27 -27
- data/lib/barometer/weather_services/noaa.rb +314 -3
- data/lib/barometer/weather_services/service.rb +32 -30
- data/lib/barometer/weather_services/weather_bug.rb +35 -33
- data/lib/barometer/weather_services/wunderground.rb +31 -29
- data/lib/barometer/weather_services/yahoo.rb +36 -35
- data/lib/barometer/web_services/geocode.rb +5 -7
- data/lib/barometer/web_services/noaa_station_id.rb +53 -0
- data/lib/barometer/web_services/placemaker.rb +11 -13
- data/lib/barometer/web_services/timezone.rb +5 -7
- data/lib/barometer/web_services/weather_id.rb +4 -6
- data/lib/barometer/web_services/web_service.rb +4 -4
- data/spec/barometer_spec.rb +25 -27
- data/spec/cassettes/Barometer.json +1 -0
- data/spec/cassettes/Query.json +1 -0
- data/spec/cassettes/Query_Format_Coordinates.json +1 -0
- data/spec/cassettes/Query_Format_Geocode.json +1 -0
- data/spec/cassettes/Query_Format_WeatherID.json +1 -0
- data/spec/cassettes/Query_Format_WoeID.json +1 -0
- data/spec/cassettes/WeatherService.json +1 -0
- data/spec/cassettes/WeatherService_Noaa.json +1 -0
- data/spec/cassettes/WeatherService_WeatherBug.json +1 -0
- data/spec/cassettes/WeatherService_Wunderground.json +1 -0
- data/spec/cassettes/WeatherService_Yahoo.json +1 -0
- data/spec/cassettes/WebService_Geocode.json +1 -0
- data/spec/cassettes/WebService_NoaaStation.json +1 -0
- data/spec/data/distance_spec.rb +60 -60
- data/spec/data/geo_spec.rb +23 -23
- data/spec/data/local_datetime_spec.rb +44 -44
- data/spec/data/local_time_spec.rb +47 -47
- data/spec/data/location_spec.rb +16 -16
- data/spec/data/pressure_spec.rb +61 -61
- data/spec/data/speed_spec.rb +69 -69
- data/spec/data/sun_spec.rb +25 -25
- data/spec/data/temperature_spec.rb +68 -68
- data/spec/data/units_spec.rb +21 -21
- data/spec/data/zone_spec.rb +35 -35
- data/spec/formats/coordinates_spec.rb +27 -27
- data/spec/formats/format_spec.rb +17 -25
- data/spec/formats/geocode_spec.rb +23 -31
- data/spec/formats/icao_spec.rb +26 -32
- data/spec/formats/postalcode_spec.rb +22 -28
- data/spec/formats/short_zipcode_spec.rb +20 -26
- data/spec/formats/weather_id_spec.rb +57 -67
- data/spec/formats/woe_id_spec.rb +59 -59
- data/spec/formats/zipcode_spec.rb +39 -47
- data/spec/key_file_parser_spec.rb +28 -0
- data/spec/measurements/measurement_spec.rb +79 -133
- data/spec/measurements/result_array_spec.rb +23 -38
- data/spec/measurements/result_spec.rb +100 -128
- data/spec/query_spec.rb +83 -100
- data/spec/spec_helper.rb +24 -6
- data/spec/weather_services/noaa_spec.rb +179 -0
- data/spec/weather_services/services_spec.rb +28 -36
- data/spec/weather_services/weather_bug_spec.rb +57 -77
- data/spec/weather_services/wunderground_spec.rb +36 -65
- data/spec/weather_services/yahoo_spec.rb +38 -60
- data/spec/weather_spec.rb +79 -79
- data/spec/web_services/geocode_spec.rb +7 -11
- data/spec/web_services/noaa_station_id_spec.rb +33 -0
- data/spec/web_services/placemaker_spec.rb +7 -12
- data/spec/web_services/web_services_spec.rb +3 -9
- metadata +214 -163
- data/VERSION.yml +0 -5
- data/lib/barometer/weather_services/google.rb +0 -142
- data/lib/barometer/weather_services/weather_dot_com.rb +0 -279
- data/spec/fakeweb_helper.rb +0 -179
- data/spec/fixtures/formats/weather_id/90210.xml +0 -7
- data/spec/fixtures/formats/weather_id/from_USGA0028.xml +0 -3
- data/spec/fixtures/formats/weather_id/ksfo.xml +0 -1
- data/spec/fixtures/formats/weather_id/manhattan.xml +0 -7
- data/spec/fixtures/formats/weather_id/new_york.xml +0 -1
- data/spec/fixtures/formats/weather_id/the_hills.xml +0 -1
- data/spec/fixtures/geocode/40_73_v3.json +0 -497
- data/spec/fixtures/geocode/90210_v3.json +0 -63
- data/spec/fixtures/geocode/T5B4M9_v3.json +0 -68
- data/spec/fixtures/geocode/atlanta_v3.json +0 -58
- data/spec/fixtures/geocode/calgary_ab_v3.json +0 -58
- data/spec/fixtures/geocode/ksfo_v3.json +0 -73
- data/spec/fixtures/geocode/newyork_ny_v3.json +0 -58
- data/spec/fixtures/services/google/calgary_ab.xml +0 -1
- data/spec/fixtures/services/placemaker/T5B4M9.xml +0 -65
- data/spec/fixtures/services/placemaker/atlanta.xml +0 -65
- data/spec/fixtures/services/placemaker/coords.xml +0 -65
- data/spec/fixtures/services/placemaker/ksfo.xml +0 -65
- data/spec/fixtures/services/placemaker/new_york.xml +0 -65
- data/spec/fixtures/services/placemaker/the_hills.xml +0 -65
- data/spec/fixtures/services/placemaker/w615702.xml +0 -47
- data/spec/fixtures/services/weather_bug/90210_current.xml +0 -93
- data/spec/fixtures/services/weather_bug/90210_forecast.xml +0 -76
- data/spec/fixtures/services/weather_dot_com/90210.xml +0 -1
- data/spec/fixtures/services/wunderground/current_calgary_ab.xml +0 -9
- data/spec/fixtures/services/wunderground/forecast_calgary_ab.xml +0 -13
- data/spec/fixtures/services/yahoo/90210.xml +0 -3
- data/spec/weather_services/google_spec.rb +0 -181
- data/spec/weather_services/weather_dot_com_spec.rb +0 -224
@@ -1,76 +0,0 @@
|
|
1
|
-
<?xml version="1.0"?>
|
2
|
-
<aws:weather xmlns:aws="http://www.aws.com/aws">
|
3
|
-
<aws:api version="2.0"/>
|
4
|
-
<aws:WebURL>http://weather.weatherbug.com/CA/Beverly Hills-weather/local-forecast/7-day-forecast.html?ZCode=Z5546&Units=1</aws:WebURL>
|
5
|
-
<aws:forecasts type="Detailed" date="6/2/2011 3:22:00 AM">
|
6
|
-
<aws:location>
|
7
|
-
<aws:city>Beverly Hills</aws:city>
|
8
|
-
<aws:state>CA</aws:state>
|
9
|
-
<aws:zip>90210</aws:zip>
|
10
|
-
<aws:zone>CA041</aws:zone>
|
11
|
-
</aws:location>
|
12
|
-
<aws:forecast>
|
13
|
-
<aws:title alttitle="THU">Thursday</aws:title>
|
14
|
-
<aws:short-prediction>Sunny</aws:short-prediction>
|
15
|
-
<aws:image isNight="0" icon="cond007.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond007.gif</aws:image>
|
16
|
-
<aws:description>Thursday</aws:description>
|
17
|
-
<aws:prediction>Sunny. Highs in the upper 60s to mid 70s. West winds 15 to 25 mph in the afternoon.</aws:prediction>
|
18
|
-
<aws:high units="&deg;C">24</aws:high>
|
19
|
-
<aws:low units="&deg;C">11</aws:low>
|
20
|
-
</aws:forecast>
|
21
|
-
<aws:forecast>
|
22
|
-
<aws:title alttitle="FRI">Friday</aws:title>
|
23
|
-
<aws:short-prediction>Sunny</aws:short-prediction>
|
24
|
-
<aws:image isNight="0" icon="cond007.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond007.gif</aws:image>
|
25
|
-
<aws:description>Friday</aws:description>
|
26
|
-
<aws:prediction>Sunny. Highs from around 70 at the beaches to around 80 inland. Southwest winds around 15 mph in the afternoon.</aws:prediction>
|
27
|
-
<aws:high units="&deg;C">26</aws:high>
|
28
|
-
<aws:low units="&deg;C">12</aws:low>
|
29
|
-
</aws:forecast>
|
30
|
-
<aws:forecast>
|
31
|
-
<aws:title alttitle="SAT">Saturday</aws:title>
|
32
|
-
<aws:short-prediction>Partly Cloudy</aws:short-prediction>
|
33
|
-
<aws:image isNight="0" icon="cond003.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond003.gif</aws:image>
|
34
|
-
<aws:description>Saturday</aws:description>
|
35
|
-
<aws:prediction>Partly cloudy in the morning then becoming mostly cloudy. Highs in the upper 60s to mid 70s.</aws:prediction>
|
36
|
-
<aws:high units="&deg;C">24</aws:high>
|
37
|
-
<aws:low units="&deg;C">12</aws:low>
|
38
|
-
</aws:forecast>
|
39
|
-
<aws:forecast>
|
40
|
-
<aws:title alttitle="SUN">Sunday</aws:title>
|
41
|
-
<aws:short-prediction>Mostly Cloudy</aws:short-prediction>
|
42
|
-
<aws:image isNight="0" icon="cond024.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond024.gif</aws:image>
|
43
|
-
<aws:description>Sunday</aws:description>
|
44
|
-
<aws:prediction>Mostly cloudy with a 20 percent chance of showers. Highs in the mid 60s to around 70.</aws:prediction>
|
45
|
-
<aws:high units="&deg;C">23</aws:high>
|
46
|
-
<aws:low units="&deg;C">12</aws:low>
|
47
|
-
</aws:forecast>
|
48
|
-
<aws:forecast>
|
49
|
-
<aws:title alttitle="MON">Monday</aws:title>
|
50
|
-
<aws:short-prediction>Partly Cloudy</aws:short-prediction>
|
51
|
-
<aws:image isNight="0" icon="cond003.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond003.gif</aws:image>
|
52
|
-
<aws:description>Monday</aws:description>
|
53
|
-
<aws:prediction>Partly cloudy in the morning then becoming mostly sunny. Highs in the mid 60s to lower 70s.</aws:prediction>
|
54
|
-
<aws:high units="&deg;C">23</aws:high>
|
55
|
-
<aws:low units="&deg;C">13</aws:low>
|
56
|
-
</aws:forecast>
|
57
|
-
<aws:forecast>
|
58
|
-
<aws:title alttitle="TUE">Tuesday</aws:title>
|
59
|
-
<aws:short-prediction>Mostly Sunny</aws:short-prediction>
|
60
|
-
<aws:image isNight="0" icon="cond026.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond026.gif</aws:image>
|
61
|
-
<aws:description>Tuesday</aws:description>
|
62
|
-
<aws:prediction>Mostly clear. Lows in the mid to upper 50s. Highs in the upper 60s to mid 70s.</aws:prediction>
|
63
|
-
<aws:high units="&deg;C">24</aws:high>
|
64
|
-
<aws:low units="&deg;C">13</aws:low>
|
65
|
-
</aws:forecast>
|
66
|
-
<aws:forecast>
|
67
|
-
<aws:title alttitle="WED">Wednesday</aws:title>
|
68
|
-
<aws:short-prediction>Mostly Sunny</aws:short-prediction>
|
69
|
-
<aws:image isNight="0" icon="cond026.gif">http://deskwx.weatherbug.com/images/Forecast/icons/cond026.gif</aws:image>
|
70
|
-
<aws:description>Wednesday</aws:description>
|
71
|
-
<aws:prediction>Night through morning low clouds and fog...otherwise mostly clear. Lows in the mid to upper 50s. Highs in the upper 60s to mid 70s.</aws:prediction>
|
72
|
-
<aws:high units="&deg;C">24</aws:high>
|
73
|
-
<aws:low units="&deg;C">--</aws:low>
|
74
|
-
</aws:forecast>
|
75
|
-
</aws:forecasts>
|
76
|
-
</aws:weather>
|
@@ -1 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?> <!-- This document is intended only for use by authorized licensees of The --> <!-- Weather Channel. Unauthorized use is prohibited. Copyright 1995-2011, --> <!-- The Weather Channel Interactive, Inc. All Rights Reserved. --> <weather ver="2.0"> <head> <locale>en_US</locale> <form>MEDIUM</form> <ut>C</ut> <ud>km</ud> <us>km/h</us> <up>mb</up> <ur>mm</ur> </head> <loc id="90210"> <dnam>Beverly Hills, CA (90210)</dnam> <tm>3:32 PM</tm> <lat>34.10</lat> <lon>-118.41</lon> <sunr>5:43 AM</sunr> <suns>8:00 PM</suns> <zone>-7</zone> </loc> <lnks type="prmo"> <link pos="1"> <l>http://www.weather.com/allergies?par=xoap&site=textlink&cm_ven=XOAP&cm_cat=TextLink&cm_pla=Link1&cm_ite=Allergies</l> <t>Local Pollen Reports</t> </link> <link pos="2"> <l>http://www.weather.com/flights?par=xoap&site=textlink&cm_ven=XOAP&cm_cat=TextLink&cm_pla=Link2&cm_ite=BusinessTraveler</l> <t>Airport Conditions</t> </link> <link pos="3"> <l>http://www.weather.com/garden?par=xoap&site=textlink&cm_ven=XOAP&cm_cat=TextLink&cm_pla=Link3&cm_ite=Garden</l> <t>Lawn and Garden Weather</t> </link> <link pos="4"> <l>http://www.weather.com/traffic?par=xoap&site=textlink&cm_ven=XOAP&cm_cat=TextLink&cm_pla=Link4&cm_ite=Traffic</l> <t>Rush Hour Traffic</t> </link> </lnks> <cc> <lsup>6/1/11 2:51 PM PDT</lsup> <obst>Santa Monica, CA</obst> <tmp>17</tmp> <flik>17</flik> <t>Fair</t> <icon>34</icon> <bar> <r>1017.9</r> <d>falling</d> </bar> <wind> <s>14</s> <gust>N/A</gust> <d>230</d> <t>SW</t> </wind> <hmid>65</hmid> <vis>16.1</vis> <uv> <i>8</i> <t>Very High</t> </uv> <dewp>10</dewp> <moon> <icon>0</icon> <t>New</t> </moon> </cc> <dayf> <lsup>6/1/11 2:09 PM PDT</lsup> <day d="0" t="Wednesday" dt="Jun 1"> <hi>N/A</hi> <low>12</low> <sunr>5:43 AM</sunr> <suns>8:00 PM</suns> <part p="d"> <icon>44</icon> <t>N/A</t> <wind> <s>N/A</s> <gust>N/A</gust> <d>N/A</d> <t>N/A</t> </wind> <bt>N/A</bt> <ppcp>0</ppcp> <hmid>N/A</hmid> </part> <part p="n"> <icon>31</icon> <t>Clear</t> <wind> <s>16</s> <gust>N/A</gust> <d>343</d> <t>NNW</t> </wind> <bt>Clear</bt> <ppcp>0</ppcp> <hmid>62</hmid> </part> </day> <day d="1" t="Thursday" dt="Jun 2"> <hi>23</hi> <low>12</low> <sunr>5:43 AM</sunr> <suns>8:01 PM</suns> <part p="d"> <icon>34</icon> <t>Mostly Sunny</t> <wind> <s>21</s> <gust>N/A</gust> <d>215</d> <t>SW</t> </wind> <bt>M Sunny</bt> <ppcp>0</ppcp> <hmid>42</hmid> </part> <part p="n"> <icon>31</icon> <t>Clear</t> <wind> <s>16</s> <gust>N/A</gust> <d>357</d> <t>N</t> </wind> <bt>Clear</bt> <ppcp>0</ppcp> <hmid>53</hmid> </part> </day> <day d="2" t="Friday" dt="Jun 3"> <hi>24</hi> <low>13</low> <sunr>5:43 AM</sunr> <suns>8:01 PM</suns> <part p="d"> <icon>32</icon> <t>Sunny</t> <wind> <s>16</s> <gust>N/A</gust> <d>181</d> <t>S</t> </wind> <bt>Sunny</bt> <ppcp>0</ppcp> <hmid>36</hmid> </part> <part p="n"> <icon>29</icon> <t>Partly Cloudy</t> <wind> <s>8</s> <gust>N/A</gust> <d>184</d> <t>S</t> </wind> <bt>P Cloudy</bt> <ppcp>20</ppcp> <hmid>55</hmid> </part> </day> <day d="3" t="Saturday" dt="Jun 4"> <hi>20</hi> <low>13</low> <sunr>5:43 AM</sunr> <suns>8:02 PM</suns> <part p="d"> <icon>30</icon> <t>Partly Cloudy</t> <wind> <s>14</s> <gust>N/A</gust> <d>180</d> <t>S</t> </wind> <bt>P Cloudy</bt> <ppcp>20</ppcp> <hmid>59</hmid> </part> <part p="n"> <icon>33</icon> <t>Mostly Clear</t> <wind> <s>6</s> <gust>N/A</gust> <d>217</d> <t>SW</t> </wind> <bt>M Clear</bt> <ppcp>0</ppcp> <hmid>67</hmid> </part> </day> <day d="4" t="Sunday" dt="Jun 5"> <hi>21</hi> <low>12</low> <sunr>5:42 AM</sunr> <suns>8:02 PM</suns> <part p="d"> <icon>39</icon> <t>Scattered Showers</t> <wind> <s>16</s> <gust>N/A</gust> <d>214</d> <t>SW</t> </wind> <bt>Sct Showers</bt> <ppcp>30</ppcp> <hmid>63</hmid> </part> <part p="n"> <icon>31</icon> <t>Clear</t> <wind> <s>6</s> <gust>N/A</gust> <d>264</d> <t>W</t> </wind> <bt>Clear</bt> <ppcp>0</ppcp> <hmid>65</hmid> </part> </day> </dayf> </weather>
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<current_observation> <credit>Weather Underground NOAA Weather Station</credit> <credit_URL>http://wunderground.com/</credit_URL> <termsofservice link="http://www.wunderground.com/members/tos.asp#api" /> <image> <url>http://icons-pe.wxug.com/graphics/wu2/logo_130x80.png</url> <title>Weather Underground</title> <link>http://wunderground.com/</link> </image> <display_location> <full>Calgary, Alberta</full> <city>Calgary</city> <state>AB</state> <state_name>Alberta</state_name> <country>CA</country> <country_iso3166>CA</country_iso3166> <zip>00000</zip> <latitude>51.11999893</latitude> <longitude>-114.01999664</longitude> <elevation>1084.00000000 ft</elevation> </display_location> <observation_location> <full>Calgary, </full> <city>Calgary</city> <state></state> <country>CA</country> <country_iso3166>CA</country_iso3166> <latitude>51.11999893</latitude> <longitude>-114.01999664</longitude> <elevation>3556 ft</elevation> </observation_location> <station_id>CYYC</station_id> <observation_time>Last Updated on June 1, 4:00 PM MDT</observation_time> <observation_time_rfc822>Wed, 01 Jun 2011 22:00:00 GMT</observation_time_rfc822> <observation_epoch>1306965600</observation_epoch> <local_time>June 1, 4:46 PM MDT</local_time> <local_time_rfc822>Wed, 01 Jun 2011 22:46:38 GMT</local_time_rfc822> <local_epoch>1306968398</local_epoch> <weather>Mostly Cloudy</weather> <temperature_string>63 F (17 C)</temperature_string> <temp_f>63</temp_f> <temp_c>17</temp_c> <relative_humidity>48%</relative_humidity> <wind_string>From the SE at 16 MPH </wind_string> <wind_dir>SE</wind_dir> <wind_degrees>140</wind_degrees> <wind_mph>16</wind_mph> <wind_gust_mph></wind_gust_mph> <pressure_string>29.85 in (1011 mb)</pressure_string> <pressure_mb>1011</pressure_mb> <pressure_in>29.85</pressure_in> <dewpoint_string>43 F (6 C)</dewpoint_string> <dewpoint_f>43</dewpoint_f> <dewpoint_c>6</dewpoint_c>
|
2
|
-
|
3
|
-
<heat_index_string>NA</heat_index_string> <heat_index_f>NA</heat_index_f> <heat_index_c>NA</heat_index_c>
|
4
|
-
|
5
|
-
<windchill_string>NA</windchill_string> <windchill_f>NA</windchill_f> <windchill_c>NA</windchill_c>
|
6
|
-
|
7
|
-
<visibility_mi>30.0</visibility_mi> <visibility_km>48.3</visibility_km> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/mostlycloudy.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/mostlycloudy.gif</icon_url> </icon_set> </icons> <icon_url_base>http://icons-pe.wxug.com/graphics/conds/</icon_url_base> <icon_url_name>.GIF</icon_url_name> <icon>mostlycloudy</icon> <forecast_url>http://www.wunderground.com/global/stations/71877.html</forecast_url> <history_url>http://www.wunderground.com/history/airport/CYYC/2011/6/1/DailyHistory.html</history_url> <ob_url>http://www.wunderground.com/cgi-bin/findweather/getForecast?query=51.11999893,-114.01999664</ob_url> </current_observation>
|
8
|
-
|
9
|
-
<!-- 0.075:0 -->
|
@@ -1,13 +0,0 @@
|
|
1
|
-
<?xml version="1.0" ?> <forecast> <termsofservice link="http://www.wunderground.com/members/tos.asp#api" /> <txt_forecast> <date>6:00 AM MDT</date> <number></number> <forecastday> <period>0</period> <icon>chancetstorms</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancetstorms.gif</icon_url> </icon_set> </icons> <title>June 1, 2011</title> <fcttext>Chance of a Thunderstorm. High 15&deg;C (59&deg;F). Winds 21 kph SE</fcttext> <pop>30</pop> </forecastday> <forecastday> <period>1</period> <icon>chancerain</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancerain.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancerain.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancerain.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancerain.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancerain.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancerain.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancerain.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancerain.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancerain.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancerain.gif</icon_url> </icon_set> </icons> <title>June 2, 2011</title> <fcttext>Chance of Rain. High 16&deg;C (60&deg;F). Winds 18 kph North</fcttext> <pop>30</pop> </forecastday> <forecastday> <period>2</period> <icon>chancetstorms</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancetstorms.gif</icon_url> </icon_set> </icons> <title>June 3, 2011</title> <fcttext>Chance of a Thunderstorm. High 16&deg;C (60&deg;F). Winds 21 kph North</fcttext> <pop>30</pop> </forecastday> <forecastday> <period>3</period> <icon>chancerain</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancerain.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancerain.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancerain.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancerain.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancerain.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancerain.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancerain.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancerain.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancerain.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancerain.gif</icon_url> </icon_set> </icons> <title>June 4, 2011</title> <fcttext>Chance of Rain. High 15&deg;C (59&deg;F). Winds 18 kph SSE</fcttext> <pop>30</pop> </forecastday> <forecastday> <period>4</period> <icon>chancerain</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancerain.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancerain.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancerain.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancerain.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancerain.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancerain.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancerain.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancerain.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancerain.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancerain.gif</icon_url> </icon_set> </icons> <title>June 5, 2011</title> <fcttext>Chance of Rain. High 24&deg;C (75&deg;F). Winds 7 kph WNW</fcttext> <pop>20</pop> </forecastday> <forecastday> <period>5</period> <icon>chancerain</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancerain.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancerain.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancerain.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancerain.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancerain.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancerain.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancerain.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancerain.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancerain.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancerain.gif</icon_url> </icon_set> </icons> <title>June 6, 2011</title> <fcttext>Chance of Rain. High 18&deg;C (64&deg;F). Winds 10 kph East</fcttext> <pop>20</pop> </forecastday> </txt_forecast> <simpleforecast> <forecastday> <period>1</period> <date> <epoch>1306983600</epoch> <pretty_short>9:00 PM MDT</pretty_short> <pretty>9:00 PM MDT on June 01, 2011</pretty> <day>1</day> <month>6</month> <year>2011</year> <yday>151</yday> <hour>21</hour> <min>00</min> <sec>0</sec> <isdst>1</isdst> <monthname>June</monthname> <weekday_short></weekday_short> <weekday>Wednesday</weekday> <ampm>PM</ampm> <tz_short>MDT</tz_short> <tz_long>America/Edmonton</tz_long> </date> <high> <fahrenheit>61</fahrenheit> <celsius>16</celsius> </high> <low> <fahrenheit>45</fahrenheit> <celsius>7</celsius> </low> <conditions>Chance of a Thunderstorm</conditions> <icon>chancetstorms</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancetstorms.gif</icon_url> </icon_set> </icons> <skyicon>mostlycloudy</skyicon> <pop>30</pop> </forecastday>
|
2
|
-
|
3
|
-
<forecastday> <period>2</period> <date> <epoch>1307070000</epoch> <pretty_short>9:00 PM MDT</pretty_short> <pretty>9:00 PM MDT on June 02, 2011</pretty> <day>2</day> <month>6</month> <year>2011</year> <yday>152</yday> <hour>21</hour> <min>00</min> <sec>0</sec> <isdst>1</isdst> <monthname>June</monthname> <weekday_short></weekday_short> <weekday>Thursday</weekday> <ampm>PM</ampm> <tz_short>MDT</tz_short> <tz_long>America/Edmonton</tz_long> </date> <high> <fahrenheit>64</fahrenheit> <celsius>18</celsius> </high> <low> <fahrenheit>45</fahrenheit> <celsius>7</celsius> </low> <conditions>Chance of Rain</conditions> <icon>chancerain</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancerain.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancerain.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancerain.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancerain.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancerain.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancerain.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancerain.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancerain.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancerain.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancerain.gif</icon_url> </icon_set> </icons> <skyicon>cloudy</skyicon> <pop>30</pop> </forecastday>
|
4
|
-
|
5
|
-
<forecastday> <period>3</period> <date> <epoch>1307156400</epoch> <pretty_short>9:00 PM MDT</pretty_short> <pretty>9:00 PM MDT on June 03, 2011</pretty> <day>3</day> <month>6</month> <year>2011</year> <yday>153</yday> <hour>21</hour> <min>00</min> <sec>0</sec> <isdst>1</isdst> <monthname>June</monthname> <weekday_short></weekday_short> <weekday>Friday</weekday> <ampm>PM</ampm> <tz_short>MDT</tz_short> <tz_long>America/Edmonton</tz_long> </date> <high> <fahrenheit>61</fahrenheit> <celsius>16</celsius> </high> <low> <fahrenheit>36</fahrenheit> <celsius>2</celsius> </low> <conditions>Chance of a Thunderstorm</conditions> <icon>chancetstorms</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancetstorms.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancetstorms.gif</icon_url> </icon_set> </icons> <skyicon>partlycloudy</skyicon> <pop>40</pop> </forecastday>
|
6
|
-
|
7
|
-
<forecastday> <period>4</period> <date> <epoch>1307242800</epoch> <pretty_short>9:00 PM MDT</pretty_short> <pretty>9:00 PM MDT on June 04, 2011</pretty> <day>4</day> <month>6</month> <year>2011</year> <yday>154</yday> <hour>21</hour> <min>00</min> <sec>0</sec> <isdst>1</isdst> <monthname>June</monthname> <weekday_short></weekday_short> <weekday>Saturday</weekday> <ampm>PM</ampm> <tz_short>MDT</tz_short> <tz_long>America/Edmonton</tz_long> </date> <high> <fahrenheit>54</fahrenheit> <celsius>12</celsius> </high> <low> <fahrenheit>43</fahrenheit> <celsius>6</celsius> </low> <conditions>Chance of Rain</conditions> <icon>chancerain</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/chancerain.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/chancerain.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/chancerain.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/chancerain.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/chancerain.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/chancerain.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/chancerain.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/chancerain.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/chancerain.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/chancerain.gif</icon_url> </icon_set> </icons> <skyicon>cloudy</skyicon> <pop>20</pop> </forecastday>
|
8
|
-
|
9
|
-
<forecastday> <period>5</period> <date> <epoch>1307329200</epoch> <pretty_short>9:00 PM MDT</pretty_short> <pretty>9:00 PM MDT on June 05, 2011</pretty> <day>5</day> <month>6</month> <year>2011</year> <yday>155</yday> <hour>21</hour> <min>00</min> <sec>0</sec> <isdst>1</isdst> <monthname>June</monthname> <weekday_short></weekday_short> <weekday>Sunday</weekday> <ampm>PM</ampm> <tz_short>MDT</tz_short> <tz_long>America/Edmonton</tz_long> </date> <high> <fahrenheit>70</fahrenheit> <celsius>21</celsius> </high> <low> <fahrenheit>46</fahrenheit> <celsius>8</celsius> </low> <conditions>Partly Cloudy</conditions> <icon>partlycloudy</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/partlycloudy.gif</icon_url> </icon_set> </icons> <skyicon>partlycloudy</skyicon> <pop>0</pop> </forecastday>
|
10
|
-
|
11
|
-
<forecastday> <period>6</period> <date> <epoch>1307415600</epoch> <pretty_short>9:00 PM MDT</pretty_short> <pretty>9:00 PM MDT on June 06, 2011</pretty> <day>6</day> <month>6</month> <year>2011</year> <yday>156</yday> <hour>21</hour> <min>00</min> <sec>0</sec> <isdst>1</isdst> <monthname>June</monthname> <weekday_short></weekday_short> <weekday>Monday</weekday> <ampm>PM</ampm> <tz_short>MDT</tz_short> <tz_long>America/Edmonton</tz_long> </date> <high> <fahrenheit>64</fahrenheit> <celsius>18</celsius> </high> <low> <fahrenheit>52</fahrenheit> <celsius>11</celsius> </low> <conditions>Fog</conditions> <icon>partlycloudy</icon> <icons> <icon_set name="Default"> <icon_url>http://icons-pe.wxug.com/i/c/a/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Smiley"> <icon_url>http://icons-pe.wxug.com/i/c/b/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Generic"> <icon_url>http://icons-pe.wxug.com/i/c/c/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Old School"> <icon_url>http://icons-pe.wxug.com/i/c/d/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Cartoon"> <icon_url>http://icons-pe.wxug.com/i/c/e/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Mobile"> <icon_url>http://icons-pe.wxug.com/i/c/f/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Simple"> <icon_url>http://icons-pe.wxug.com/i/c/g/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Contemporary"> <icon_url>http://icons-pe.wxug.com/i/c/h/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Helen"> <icon_url>http://icons-pe.wxug.com/i/c/i/partlycloudy.gif</icon_url> </icon_set> <icon_set name="Incredible"> <icon_url>http://icons-pe.wxug.com/i/c/k/partlycloudy.gif</icon_url> </icon_set> </icons> <skyicon>partlycloudy</skyicon> <pop>0</pop> </forecastday>
|
12
|
-
|
13
|
-
</simpleforecast> <moon_phase> <percentIlluminated>0</percentIlluminated> <ageOfMoon>0</ageOfMoon> <current_time> <hour>16</hour> <minute>48</minute> </current_time> <sunset> <hour>21</hour> <minute>41</minute> </sunset> <sunrise> <hour>5</hour> <minute>26</minute> </sunrise> </moon_phase> </forecast>
|
@@ -1,3 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <rss version="2.0" xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"> <channel>
|
2
|
-
|
3
|
-
<title>Yahoo! Weather - Beverly Hills, CA</title> <link>http://us.rd.yahoo.com/dailynews/rss/weather/Beverly_Hills__CA/*http://weather.yahoo.com/forecast/USCA0090_c.html</link> <description>Yahoo! Weather for Beverly Hills, CA</description> <language>en-us</language> <lastBuildDate>Wed, 01 Jun 2011 2:50 pm PDT</lastBuildDate> <ttl>60</ttl> <yweather:location city="Beverly Hills" region="CA" country="US"/> <yweather:units temperature="C" distance="km" pressure="mb" speed="km/h"/> <yweather:wind chill="17" direction="230" speed="14.48" /> <yweather:atmosphere humidity="65" visibility="16.09" pressure="1017.8" rising="2" /> <yweather:astronomy sunrise="5:42 am" sunset="7:57 pm"/> <image> <title>Yahoo! Weather</title> <width>142</width> <height>18</height> <link>http://weather.yahoo.com</link> <url>http://l.yimg.com/a/i/brand/purplelogo//uh/us/news-wea.gif</url> </image> <item> <title>Conditions for Beverly Hills, CA at 2:50 pm PDT</title> <geo:lat>34.08</geo:lat> <geo:long>-118.4</geo:long> <link>http://us.rd.yahoo.com/dailynews/rss/weather/Beverly_Hills__CA/*http://weather.yahoo.com/forecast/USCA0090_c.html</link> <pubDate>Wed, 01 Jun 2011 2:50 pm PDT</pubDate> <yweather:condition text="Fair" code="34" temp="17" date="Wed, 01 Jun 2011 2:50 pm PDT" /> <description><![CDATA[ <img src="http://l.yimg.com/a/i/us/we/52/34.gif"/><br /> <b>Current Conditions:</b><br /> Fair, 17 C<BR /> <BR /><b>Forecast:</b><BR /> Wed - Clear. High: 21 Low: 12<br /> Thu - Mostly Sunny. High: 23 Low: 12<br /> <br /> <a href="http://us.rd.yahoo.com/dailynews/rss/weather/Beverly_Hills__CA/*http://weather.yahoo.com/forecast/USCA0090_c.html">Full Forecast at Yahoo! Weather</a><BR/><BR/> (provided by <a href="http://www.weather.com" >The Weather Channel</a>)<br/> ]]></description> <yweather:forecast day="Wed" date="1 Jun 2011" low="12" high="21" text="Clear" code="31" /> <yweather:forecast day="Thu" date="2 Jun 2011" low="12" high="23" text="Mostly Sunny" code="34" /> <guid isPermaLink="false">USCA0090_2011_06_01_14_50_PDT</guid> </item> </channel> </rss> <!-- api8.weather.ac4.yahoo.com uncompressed/chunked Wed Jun 1 15:44:05 PDT 2011 -->
|
@@ -1,181 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
include Barometer
|
3
|
-
|
4
|
-
describe "Google" do
|
5
|
-
|
6
|
-
before(:each) do
|
7
|
-
@accepted_formats = [:zipcode, :postalcode, :geocode]
|
8
|
-
@base_uri = "http://google.com"
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "the class methods" do
|
12
|
-
|
13
|
-
it "defines accepted_formats" do
|
14
|
-
WeatherService::Google._accepted_formats.should == @accepted_formats
|
15
|
-
end
|
16
|
-
|
17
|
-
it "defines source_name" do
|
18
|
-
WeatherService::Google._source_name.should == :google
|
19
|
-
end
|
20
|
-
|
21
|
-
# it "defines base_uri" do
|
22
|
-
# Barometer::Google.base_uri.should == @base_uri
|
23
|
-
# end
|
24
|
-
|
25
|
-
it "defines get_all" do
|
26
|
-
WeatherService::Google.respond_to?("_fetch").should be_true
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "building the current data" do
|
32
|
-
|
33
|
-
it "defines the build method" do
|
34
|
-
WeatherService::Google.respond_to?("_build_current").should be_true
|
35
|
-
end
|
36
|
-
|
37
|
-
it "requires Hash input" do
|
38
|
-
lambda { WeatherService::Google._build_current }.should raise_error(ArgumentError)
|
39
|
-
lambda { WeatherService::Google._build_current({}) }.should_not raise_error(ArgumentError)
|
40
|
-
end
|
41
|
-
|
42
|
-
it "returns Measurement::Current object" do
|
43
|
-
current = WeatherService::Google._build_current({})
|
44
|
-
current.is_a?(Measurement::Result).should be_true
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
describe "building the forecast data" do
|
50
|
-
|
51
|
-
it "defines the build method" do
|
52
|
-
WeatherService::Google.respond_to?("_build_forecast").should be_true
|
53
|
-
end
|
54
|
-
|
55
|
-
it "requires Hash input" do
|
56
|
-
lambda { WeatherService::Google._build_forecast }.should raise_error(ArgumentError)
|
57
|
-
lambda { WeatherService::Google._build_forecast({}) }.should_not raise_error(ArgumentError)
|
58
|
-
end
|
59
|
-
|
60
|
-
it "returns Array object" do
|
61
|
-
current = WeatherService::Google._build_forecast({})
|
62
|
-
current.is_a?(Measurement::ResultArray).should be_true
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
66
|
-
|
67
|
-
describe "building the location data" do
|
68
|
-
|
69
|
-
it "defines the build method" do
|
70
|
-
WeatherService::Google.respond_to?("_build_location").should be_true
|
71
|
-
end
|
72
|
-
|
73
|
-
it "requires Barometer::Geo input" do
|
74
|
-
geo = Data::Geo.new({})
|
75
|
-
lambda { WeatherService::Google._build_location(nil,{}) }.should raise_error(ArgumentError)
|
76
|
-
lambda { WeatherService::Google._build_location(nil,geo) }.should_not raise_error(ArgumentError)
|
77
|
-
end
|
78
|
-
|
79
|
-
it "returns Barometer::Location object" do
|
80
|
-
geo = Data::Geo.new({})
|
81
|
-
location = WeatherService::Google._build_location(nil,geo)
|
82
|
-
location.is_a?(Data::Location).should be_true
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
# describe "building the timezone" do
|
88
|
-
#
|
89
|
-
# it "defines the build method" do
|
90
|
-
# Barometer::Google.respond_to?("build_timezone").should be_true
|
91
|
-
# end
|
92
|
-
#
|
93
|
-
# it "requires Hash input" do
|
94
|
-
# lambda { Barometer::Google.build_timezone }.should raise_error(ArgumentError)
|
95
|
-
# lambda { Barometer::Google.build_timezone({}) }.should_not raise_error(ArgumentError)
|
96
|
-
# end
|
97
|
-
#
|
98
|
-
# end
|
99
|
-
|
100
|
-
describe "when measuring" do
|
101
|
-
|
102
|
-
before(:each) do
|
103
|
-
@query = Barometer::Query.new("Calgary,AB")
|
104
|
-
@measurement = Barometer::Measurement.new
|
105
|
-
end
|
106
|
-
|
107
|
-
describe "all" do
|
108
|
-
|
109
|
-
it "responds to _measure" do
|
110
|
-
Barometer::WeatherService::Google.respond_to?("_measure").should be_true
|
111
|
-
end
|
112
|
-
|
113
|
-
it "requires a Barometer::Measurement object" do
|
114
|
-
lambda { Barometer::WeatherService::Google._measure(nil, @query) }.should raise_error(ArgumentError)
|
115
|
-
lambda { Barometer::WeatherService::Google._measure("invalid", @query) }.should raise_error(ArgumentError)
|
116
|
-
|
117
|
-
lambda { Barometer::WeatherService::Google._measure(@measurement, @query) }.should_not raise_error(ArgumentError)
|
118
|
-
end
|
119
|
-
|
120
|
-
it "requires a Barometer::Query query" do
|
121
|
-
lambda { Barometer::WeatherService::Google._measure }.should raise_error(ArgumentError)
|
122
|
-
lambda { Barometer::WeatherService::Google._measure(@measurement, 1) }.should raise_error(ArgumentError)
|
123
|
-
|
124
|
-
lambda { Barometer::WeatherService::Google._measure(@measurement, @query) }.should_not raise_error(ArgumentError)
|
125
|
-
end
|
126
|
-
|
127
|
-
it "returns a Barometer::Measurement object" do
|
128
|
-
result = Barometer::WeatherService::Google._measure(@measurement, @query)
|
129
|
-
result.is_a?(Barometer::Measurement).should be_true
|
130
|
-
result.current.is_a?(Measurement::Result).should be_true
|
131
|
-
result.forecast.is_a?(Measurement::ResultArray).should be_true
|
132
|
-
end
|
133
|
-
|
134
|
-
end
|
135
|
-
|
136
|
-
end
|
137
|
-
|
138
|
-
# describe "overall data correctness" do
|
139
|
-
#
|
140
|
-
# before(:each) do
|
141
|
-
# @query = Barometer::Query.new("Calgary,AB")
|
142
|
-
# @query.preferred = "Calgary,AB"
|
143
|
-
# @measurement = Barometer::Measurement.new
|
144
|
-
#
|
145
|
-
# FakeWeb.register_uri(:get,
|
146
|
-
# "http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query=#{CGI.escape(@query.preferred)}",
|
147
|
-
# :body => File.read(File.join(File.dirname(__FILE__),
|
148
|
-
# 'fixtures',
|
149
|
-
# 'current_calgary_ab.xml')
|
150
|
-
# )
|
151
|
-
# )
|
152
|
-
# FakeWeb.register_uri(:get,
|
153
|
-
# "http://api.wunderground.com/auto/wui/geo/ForecastXML/index.xml?query=#{CGI.escape(@query.preferred)}",
|
154
|
-
# :body => File.read(File.join(File.dirname(__FILE__),
|
155
|
-
# 'fixtures',
|
156
|
-
# 'forecast_calgary_ab.xml')
|
157
|
-
# )
|
158
|
-
# )
|
159
|
-
# end
|
160
|
-
#
|
161
|
-
# # TODO: complete this
|
162
|
-
# it "should correctly build the data" do
|
163
|
-
# result = Barometer::Wunderground._measure(@measurement, @query)
|
164
|
-
#
|
165
|
-
# # build timezone
|
166
|
-
# @measurement.timezone.timezone.should == "America/Edmonton"
|
167
|
-
#
|
168
|
-
# time = Time.local(2009, 4, 23, 18, 00, 0)
|
169
|
-
# rise = Time.local(time.year, time.month, time.day, 6, 23)
|
170
|
-
# set = Time.local(time.year, time.month, time.day, 20, 45)
|
171
|
-
# sun_rise = @measurement.timezone.tz.local_to_utc(rise)
|
172
|
-
# sun_set = @measurement.timezone.tz.local_to_utc(set)
|
173
|
-
#
|
174
|
-
# # build current
|
175
|
-
# @measurement.current.sun.rise.should == sun_rise
|
176
|
-
# @measurement.current.sun.set.should == sun_set
|
177
|
-
# end
|
178
|
-
#
|
179
|
-
# end
|
180
|
-
|
181
|
-
end
|
@@ -1,224 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
include Barometer
|
3
|
-
|
4
|
-
describe "WeatherDotCom" do
|
5
|
-
|
6
|
-
before(:each) do
|
7
|
-
@accepted_formats = [:short_zipcode, :weather_id]
|
8
|
-
end
|
9
|
-
|
10
|
-
describe "the class methods" do
|
11
|
-
|
12
|
-
it "defines accepted_formats" do
|
13
|
-
WeatherService::WeatherDotCom._accepted_formats.should == @accepted_formats
|
14
|
-
end
|
15
|
-
|
16
|
-
it "defines source_name" do
|
17
|
-
WeatherService::WeatherDotCom._source_name.should == :weather_dot_com
|
18
|
-
end
|
19
|
-
|
20
|
-
it "defines get_all" do
|
21
|
-
WeatherService::WeatherDotCom.respond_to?("_fetch").should be_true
|
22
|
-
end
|
23
|
-
|
24
|
-
it "defines _requires_keys?" do
|
25
|
-
WeatherService::WeatherDotCom.respond_to?("_requires_keys?").should be_true
|
26
|
-
WeatherService::WeatherDotCom._requires_keys?.should be_true
|
27
|
-
end
|
28
|
-
|
29
|
-
it "defines _has_keys?" do
|
30
|
-
WeatherService::WeatherDotCom.respond_to?("_has_keys?").should be_true
|
31
|
-
WeatherService::WeatherDotCom._has_keys?.should be_false
|
32
|
-
WeatherService::WeatherDotCom.keys = { :partner => WEATHER_PARTNER_KEY, :license => WEATHER_LICENSE_KEY }
|
33
|
-
WeatherService::WeatherDotCom._has_keys?.should be_true
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "building the current data" do
|
39
|
-
|
40
|
-
it "defines the build method" do
|
41
|
-
WeatherService::WeatherDotCom.respond_to?("_build_current").should be_true
|
42
|
-
end
|
43
|
-
|
44
|
-
it "requires Hash input" do
|
45
|
-
lambda { WeatherService::WeatherDotCom._build_current }.should raise_error(ArgumentError)
|
46
|
-
lambda { WeatherService::WeatherDotCom._build_current({}) }.should_not raise_error(ArgumentError)
|
47
|
-
end
|
48
|
-
|
49
|
-
it "returns Measurement::Current object" do
|
50
|
-
current = WeatherService::WeatherDotCom._build_current({})
|
51
|
-
current.is_a?(Measurement::Result).should be_true
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
describe "building the forecast data" do
|
57
|
-
|
58
|
-
it "defines the build method" do
|
59
|
-
WeatherService::WeatherDotCom.respond_to?("_build_forecast").should be_true
|
60
|
-
end
|
61
|
-
|
62
|
-
it "requires Hash input" do
|
63
|
-
lambda { WeatherService::WeatherDotCom._build_forecast }.should raise_error(ArgumentError)
|
64
|
-
lambda { WeatherService::WeatherDotCom._build_forecast({}) }.should_not raise_error(ArgumentError)
|
65
|
-
end
|
66
|
-
|
67
|
-
it "returns Array object" do
|
68
|
-
current = WeatherService::WeatherDotCom._build_forecast({})
|
69
|
-
current.is_a?(Array).should be_true
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
73
|
-
|
74
|
-
describe "building the location data" do
|
75
|
-
|
76
|
-
it "defines the build method" do
|
77
|
-
WeatherService::WeatherDotCom.respond_to?("_build_location").should be_true
|
78
|
-
end
|
79
|
-
|
80
|
-
it "requires Hash input" do
|
81
|
-
lambda { WeatherService::WeatherDotCom._build_location }.should raise_error(ArgumentError)
|
82
|
-
lambda { WeatherService::WeatherDotCom._build_location({}) }.should_not raise_error(ArgumentError)
|
83
|
-
end
|
84
|
-
|
85
|
-
it "requires Barometer::Geo input" do
|
86
|
-
geo = Data::Geo.new({})
|
87
|
-
lambda { WeatherService::WeatherDotCom._build_location({}, {}) }.should raise_error(ArgumentError)
|
88
|
-
lambda { WeatherService::WeatherDotCom._build_location({}, geo) }.should_not raise_error(ArgumentError)
|
89
|
-
end
|
90
|
-
|
91
|
-
it "returns Barometer::Location object" do
|
92
|
-
location = WeatherService::WeatherDotCom._build_location({})
|
93
|
-
location.is_a?(Data::Location).should be_true
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|
97
|
-
|
98
|
-
describe "building the sun data" do
|
99
|
-
|
100
|
-
it "defines the build method" do
|
101
|
-
WeatherService::WeatherDotCom.respond_to?("_build_sun").should be_true
|
102
|
-
end
|
103
|
-
|
104
|
-
it "requires Hash input" do
|
105
|
-
lambda { WeatherService::WeatherDotCom._build_sun }.should raise_error(ArgumentError)
|
106
|
-
lambda { WeatherService::WeatherDotCom._build_sun({}) }.should_not raise_error(ArgumentError)
|
107
|
-
end
|
108
|
-
|
109
|
-
it "returns Barometer::Sun object" do
|
110
|
-
sun = WeatherService::WeatherDotCom._build_sun({})
|
111
|
-
sun.is_a?(Data::Sun).should be_true
|
112
|
-
end
|
113
|
-
|
114
|
-
end
|
115
|
-
|
116
|
-
describe "when measuring" do
|
117
|
-
|
118
|
-
before(:each) do
|
119
|
-
@query = Barometer::Query.new("90210")
|
120
|
-
@measurement = Barometer::Measurement.new
|
121
|
-
end
|
122
|
-
|
123
|
-
describe "all" do
|
124
|
-
|
125
|
-
it "responds to _measure" do
|
126
|
-
WeatherService::WeatherDotCom.respond_to?("_measure").should be_true
|
127
|
-
end
|
128
|
-
|
129
|
-
it "requires a Barometer::Measurement object" do
|
130
|
-
lambda { WeatherService::WeatherDotCom._measure(nil, @query) }.should raise_error(ArgumentError)
|
131
|
-
lambda { WeatherService::WeatherDotCom._measure("invalid", @query) }.should raise_error(ArgumentError)
|
132
|
-
|
133
|
-
lambda { WeatherService::WeatherDotCom._measure(@measurement, @query) }.should_not raise_error(ArgumentError)
|
134
|
-
end
|
135
|
-
|
136
|
-
it "requires a Barometer::Query query" do
|
137
|
-
lambda { WeatherService::WeatherDotCom._measure }.should raise_error(ArgumentError)
|
138
|
-
lambda { WeatherService::WeatherDotCom._measure(@measurement, 1) }.should raise_error(ArgumentError)
|
139
|
-
|
140
|
-
lambda { WeatherService::WeatherDotCom._measure(@measurement, @query) }.should_not raise_error(ArgumentError)
|
141
|
-
end
|
142
|
-
|
143
|
-
it "returns a Barometer::Measurement object" do
|
144
|
-
result = WeatherService::WeatherDotCom._measure(@measurement, @query)
|
145
|
-
result.is_a?(Barometer::Measurement).should be_true
|
146
|
-
result.current.is_a?(Measurement::Result).should be_true
|
147
|
-
result.forecast.is_a?(Measurement::ResultArray).should be_true
|
148
|
-
end
|
149
|
-
|
150
|
-
end
|
151
|
-
|
152
|
-
end
|
153
|
-
|
154
|
-
describe "overall data correctness" do
|
155
|
-
|
156
|
-
before(:each) do
|
157
|
-
@query = Barometer::Query.new("90210")
|
158
|
-
@measurement = Barometer::Measurement.new
|
159
|
-
end
|
160
|
-
|
161
|
-
it "should correctly build the data" do
|
162
|
-
result = WeatherService::WeatherDotCom._measure(@measurement, @query)
|
163
|
-
|
164
|
-
# build current
|
165
|
-
@measurement.current.humidity.to_i.should == 65
|
166
|
-
@measurement.current.icon.should == "34"
|
167
|
-
@measurement.current.condition.should == "Fair"
|
168
|
-
@measurement.current.temperature.to_i.should == 17
|
169
|
-
@measurement.current.dew_point.to_i.should == 10
|
170
|
-
@measurement.current.wind_chill.to_i.should == 17
|
171
|
-
@measurement.current.wind.to_i.should == 14
|
172
|
-
@measurement.current.wind.degrees.to_i.should == 230
|
173
|
-
@measurement.current.wind.direction.should == "SW"
|
174
|
-
@measurement.current.pressure.to_f.should == 1017.9
|
175
|
-
@measurement.current.visibility.to_f.should == 16.1
|
176
|
-
|
177
|
-
# build sun
|
178
|
-
@measurement.current.sun.rise.to_s.should == "05:43 am"
|
179
|
-
@measurement.current.sun.set.to_s.should == "08:00 pm"
|
180
|
-
|
181
|
-
# builds location
|
182
|
-
@measurement.location.name.should == "Beverly Hills, CA (90210)"
|
183
|
-
@measurement.location.latitude.to_f.should == 34.10
|
184
|
-
@measurement.location.longitude.to_f.should == -118.41
|
185
|
-
|
186
|
-
# builds forecasts
|
187
|
-
@measurement.forecast.size.should == 10
|
188
|
-
|
189
|
-
# day
|
190
|
-
@measurement.forecast[0].valid_start_date.should == Date.parse("Jun 1 7:00 am")
|
191
|
-
@measurement.forecast[0].valid_end_date.should == Date.parse("Jun 1 6:59:59 pm")
|
192
|
-
@measurement.forecast[0].condition.should == "N/A"
|
193
|
-
@measurement.forecast[0].icon.should == "44"
|
194
|
-
@measurement.forecast[0].high.should be_nil
|
195
|
-
@measurement.forecast[0].low.to_i.should == 12
|
196
|
-
@measurement.forecast[0].pop.to_i.should == 0
|
197
|
-
@measurement.forecast[0].humidity.to_i.should == 0
|
198
|
-
|
199
|
-
@measurement.forecast[0].wind.should be_nil
|
200
|
-
@measurement.forecast[0].wind.to_i.should be_nil
|
201
|
-
@measurement.forecast[0].wind.degrees.to_i.should == 0
|
202
|
-
@measurement.forecast[0].wind.direction.should == "N/A"
|
203
|
-
|
204
|
-
@measurement.forecast[0].sun.rise.to_s.should == "05:43 am"
|
205
|
-
@measurement.forecast[0].sun.set.to_s.should == "08:00 pm"
|
206
|
-
|
207
|
-
# night
|
208
|
-
@measurement.forecast[1].should_not be_nil
|
209
|
-
@measurement.forecast[1].valid_start_date.should == Date.parse("Jun 1 7:00 pm")
|
210
|
-
@measurement.forecast[1].valid_end_date.should == Date.parse("Jun 2 6:59:59 am")
|
211
|
-
@measurement.forecast[1].condition.should == "Clear"
|
212
|
-
@measurement.forecast[1].icon.should == "31"
|
213
|
-
@measurement.forecast[1].pop.to_i.should == 0
|
214
|
-
@measurement.forecast[1].humidity.to_i.should == 62
|
215
|
-
|
216
|
-
@measurement.forecast[1].wind.should_not be_nil
|
217
|
-
@measurement.forecast[1].wind.to_i.should == 16
|
218
|
-
@measurement.forecast[1].wind.degrees.to_i.should == 343
|
219
|
-
@measurement.forecast[1].wind.direction.should == "NNW"
|
220
|
-
end
|
221
|
-
|
222
|
-
end
|
223
|
-
|
224
|
-
end
|