poundie-weather 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/poundie-weather.rb +45 -0
  2. metadata +94 -0
@@ -0,0 +1,45 @@
1
+ require "nokogiri"
2
+
3
+ class PoundieWeather < Poundie::Plugin
4
+ register :poundie_weather
5
+
6
+ match do |message|
7
+ puts "checking #{message.body.inspect}"
8
+ message.body =~ /^poundie weather /
9
+ end
10
+
11
+ action do |message|
12
+ begin
13
+ place = message.body.gsub(/^poundie weather /, "").strip
14
+ woeid = get_woeid(place)
15
+ doc = Nokogiri(get("http://weather.yahooapis.com/forecastrss?w=#{woeid}"))
16
+ current = get_current(doc)
17
+ forecast = get_forecast(doc)
18
+ paste "#{current["text"]}, #{current["temp"]} F\n#{forecast}"
19
+ rescue => e
20
+ puts e.message
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def get_current(doc)
27
+ Hash[*doc.at('yweather|condition').to_a.flatten]
28
+ end
29
+
30
+ def get_forecast(doc)
31
+ doc.search('yweather|forecast').map { |node|
32
+ day = Hash[*node.to_a.flatten]
33
+ "#{day["day"]}, #{day["date"]}: #{day["text"]}, High: #{day["high"]} Low: #{day["low"]}"
34
+ }.join("\n")
35
+ end
36
+
37
+ def get_woeid(name)
38
+ speak "Finding place #{name}..."
39
+ name = CGI.escape(name)
40
+ res = get("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22#{name}%20CA%22&format=xml")
41
+ res.scan(/<woeid>(\d+)<\/woeid>/).to_s
42
+ end
43
+ end
44
+
45
+ Poundie.use :poundie_weather
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: poundie-weather
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Pat Nakajima
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-05-13 00:00:00 -04:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: poundie
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: nokogiri
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ description: A Poundie plugin to post weather information to campfire
50
+ email:
51
+ executables: []
52
+
53
+ extensions: []
54
+
55
+ extra_rdoc_files: []
56
+
57
+ files:
58
+ - lib/poundie-weather.rb
59
+ has_rdoc: true
60
+ homepage:
61
+ licenses: []
62
+
63
+ post_install_message:
64
+ rdoc_options: []
65
+
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ hash: 3
83
+ segments:
84
+ - 0
85
+ version: "0"
86
+ requirements: []
87
+
88
+ rubyforge_project:
89
+ rubygems_version: 1.6.2
90
+ signing_key:
91
+ specification_version: 3
92
+ summary: A Poundie plugin to post weather information to campfire
93
+ test_files: []
94
+