lita-onewheel-election-cnn 0.0.0 → 0.1.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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 728698bfdb8985eef9a8628f23cafbf9b4481902
|
4
|
+
data.tar.gz: 65244dac6cd59d35755598d1c68af9844ec13f36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb831ed4c7cd9302e38ecf39459a32960517a16abb14c153c7ed399270a508fc9fa1974cda06a090bab9a68c2699b77ec606cfbf9892a24755333386f1ac4c9b
|
7
|
+
data.tar.gz: 3e28d34cecd2ae4ce84ab00e95e67a8c690ceda21244d775ec516b1b52911242081bc416d82079c336cdf6ed5c0a71aa255235b675511c6cf1f999e7b8b23810
|
@@ -3,11 +3,16 @@ require 'rest-client'
|
|
3
3
|
module Lita
|
4
4
|
module Handlers
|
5
5
|
class OnewheelElectionCnn < Handler
|
6
|
-
route /^e[rl]ection
|
6
|
+
route /^e[rl]ection$/i,
|
7
7
|
:election,
|
8
8
|
command: true,
|
9
9
|
help: {'election' => 'Display the current election results.'}
|
10
10
|
|
11
|
+
route /^e[rl]ection\s+(.*)$/i,
|
12
|
+
:election_by_state,
|
13
|
+
command: true,
|
14
|
+
help: {'election AB' => 'Display the current election results in Alabama.'}
|
15
|
+
|
11
16
|
def election(response)
|
12
17
|
Lita.logger.debug 'get_source started'
|
13
18
|
results = JSON.parse(RestClient.get('http://data.cnn.com/ELECTION/2016/full/P.full.json'))
|
@@ -19,6 +24,90 @@ module Lita
|
|
19
24
|
response.reply candidate_str
|
20
25
|
end
|
21
26
|
end
|
27
|
+
|
28
|
+
def election_by_state(response)
|
29
|
+
Lita.logger.debug 'get_source started'
|
30
|
+
results = JSON.parse(RestClient.get('http://data.cnn.com/ELECTION/2016/full/P.full.json'))
|
31
|
+
|
32
|
+
state = stateness(response.matches[0][0])
|
33
|
+
|
34
|
+
results['races'].each do |race|
|
35
|
+
if race['state'].downcase == state.downcase
|
36
|
+
race['candidates'].each do |candidate|
|
37
|
+
candidate_str = "#{state} - #{candidate['fname']} #{candidate['lname']}: "
|
38
|
+
candidate_str += "WINNER! " if candidate['winner']
|
39
|
+
candidate_str += "#{candidate['pctDecimal']}%, #{candidate['vpct']}% of precincts reporting."
|
40
|
+
response.reply candidate_str
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def stateness(gimme)
|
47
|
+
states = {"AK" => "Alaska",
|
48
|
+
"AL" => "Alabama",
|
49
|
+
"AR" => "Arkansas",
|
50
|
+
"AS" => "American Samoa",
|
51
|
+
"AZ" => "Arizona",
|
52
|
+
"CA" => "California",
|
53
|
+
"CO" => "Colorado",
|
54
|
+
"CT" => "Connecticut",
|
55
|
+
"DC" => "District of Columbia",
|
56
|
+
"DE" => "Delaware",
|
57
|
+
"FL" => "Florida",
|
58
|
+
"GA" => "Georgia",
|
59
|
+
"GU" => "Guam",
|
60
|
+
"HI" => "Hawaii",
|
61
|
+
"IA" => "Iowa",
|
62
|
+
"ID" => "Idaho",
|
63
|
+
"IL" => "Illinois",
|
64
|
+
"IN" => "Indiana",
|
65
|
+
"KS" => "Kansas",
|
66
|
+
"KY" => "Kentucky",
|
67
|
+
"LA" => "Louisiana",
|
68
|
+
"MA" => "Massachusetts",
|
69
|
+
"MD" => "Maryland",
|
70
|
+
"ME" => "Maine",
|
71
|
+
"MI" => "Michigan",
|
72
|
+
"MN" => "Minnesota",
|
73
|
+
"MO" => "Missouri",
|
74
|
+
"MS" => "Mississippi",
|
75
|
+
"MT" => "Montana",
|
76
|
+
"NC" => "North Carolina",
|
77
|
+
"ND" => "North Dakota",
|
78
|
+
"NE" => "Nebraska",
|
79
|
+
"NH" => "New Hampshire",
|
80
|
+
"NJ" => "New Jersey",
|
81
|
+
"NM" => "New Mexico",
|
82
|
+
"NV" => "Nevada",
|
83
|
+
"NY" => "New York",
|
84
|
+
"OH" => "Ohio",
|
85
|
+
"OK" => "Oklahoma",
|
86
|
+
"OR" => "Oregon",
|
87
|
+
"PA" => "Pennsylvania",
|
88
|
+
"PR" => "Puerto Rico",
|
89
|
+
"RI" => "Rhode Island",
|
90
|
+
"SC" => "South Carolina",
|
91
|
+
"SD" => "South Dakota",
|
92
|
+
"TN" => "Tennessee",
|
93
|
+
"TX" => "Texas",
|
94
|
+
"UT" => "Utah",
|
95
|
+
"VA" => "Virginia",
|
96
|
+
"VI" => "Virgin Islands",
|
97
|
+
"VT" => "Vermont",
|
98
|
+
"WA" => "Washington",
|
99
|
+
"WI" => "Wisconsin",
|
100
|
+
"WV" => "West Virginia",
|
101
|
+
"WY" => "Wyoming"}
|
102
|
+
|
103
|
+
search_state = gimme.upcase
|
104
|
+
if search_state.length == 2
|
105
|
+
states[search_state.upcase]
|
106
|
+
else
|
107
|
+
search_state
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
22
111
|
Lita.register_handler(self)
|
23
112
|
end
|
24
113
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = 'lita-onewheel-election-cnn'
|
3
|
-
spec.version = '0.
|
3
|
+
spec.version = '0.1.0'
|
4
4
|
spec.authors = ['Andrew Kreps']
|
5
5
|
spec.email = ['andrew.kreps@gmail.com']
|
6
6
|
spec.description = %q{Lita interface to CNN's 2016 Presidential Election JSON.}
|
@@ -18,4 +18,28 @@ describe Lita::Handlers::OnewheelElectionCnn, lita_handler: true do
|
|
18
18
|
expect(replies[0]).to eq("Hillary Clinton: WINNER! 0.0%, 0% of precincts reporting.")
|
19
19
|
expect(replies[1]).to eq("Donald Trump: 0.0%, 0% of precincts reporting.")
|
20
20
|
end
|
21
|
+
|
22
|
+
it 'shows by state' do
|
23
|
+
mock = File.open('spec/fixtures/election.json').read
|
24
|
+
allow(RestClient).to receive(:get) { mock }
|
25
|
+
send_command 'election va'
|
26
|
+
expect(replies[0]).to eq("Virginia - Hillary Clinton: 0.0%, 0% of precincts reporting.")
|
27
|
+
expect(replies[1]).to eq("Virginia - Donald Trump: 0.0%, 0% of precincts reporting.")
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'shows by STATE' do
|
31
|
+
mock = File.open('spec/fixtures/election.json').read
|
32
|
+
allow(RestClient).to receive(:get) { mock }
|
33
|
+
send_command 'election VA'
|
34
|
+
expect(replies[0]).to eq("Virginia - Hillary Clinton: 0.0%, 0% of precincts reporting.")
|
35
|
+
expect(replies[1]).to eq("Virginia - Donald Trump: 0.0%, 0% of precincts reporting.")
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'shows by full state name downcase' do
|
39
|
+
mock = File.open('spec/fixtures/election.json').read
|
40
|
+
allow(RestClient).to receive(:get) { mock }
|
41
|
+
send_command 'election new york'
|
42
|
+
expect(replies[0]).to eq("NEW YORK - Hillary Clinton: 0.0%, 0% of precincts reporting.")
|
43
|
+
expect(replies[1]).to eq("NEW YORK - Donald Trump: 0.0%, 0% of precincts reporting.")
|
44
|
+
end
|
21
45
|
end
|