* Changed XMLRPC API to use arrays of ID's to report results
authorJohn Dong <jdong@mit.edu>
Tue, 14 Aug 2007 20:51:15 +0000 (16:51 -0400)
committerJohn Dong <jdong@mit.edu>
Tue, 14 Aug 2007 20:51:15 +0000 (16:51 -0400)
* Add a list of names and ID's to the results struct, for future translation purposes to canonical names

app/apis/selectricity_api.rb
app/models/selectricity_service.rb

index e94eaaa87bda85e78589d83d21a97bdb8341399e..8c0f04f64c11b6e61c060926ae977f0424f3d1cc 100644 (file)
@@ -1,10 +1,12 @@
 class VoteResultStruct < ActionWebService::Struct
-  member :plurality_winners, :string
-  member :approval_winners, :string
-  member :condorcet_winners, :string
-  member :ssd_winners, :string
-  member :borda_winners, :string
-  member :errors, :string
+  member :plurality_winners, [:int]
+  member :approval_winners, [:int]
+  member :condorcet_winners, [:int]
+  member :ssd_winners, [:int]
+  member :borda_winners, [:int]
+  member :candidate_ids, [:int]
+  member :candidate_names, [:string]
+  member :errors, [:string]
 end
 class SelectricityAPI < ActionWebService::API::Base
   api_method :cast_quickvote, :expects => [:int, :int, [[:int]]], :returns => [:string]
index d383dcd09e01a40d0cdeea9ef9c0e9c1b65f94f0..c0adc8a7b438242dda11225d6099a20d176497f7 100644 (file)
@@ -7,15 +7,23 @@ class SelectricityService < ActionWebService::Base
   end
   def get_quickvote_results(shortname)
     #TODO: Validate shortname
-    session=ActionController::Integration::Session.new
-    debugger
-    controller=session.get "quickvote/#{shortname}/results"
+    qv=QuickVote.ident_to_quickvote(shortname)
     result=VoteResultStruct.new
-    result.plurality_winners=session.controller.plurality_result.winners.inspect
-    result.approval_winners=session.controller.approval_result.winners.inspect
-    result.condorcet_winners=session.controller.condorcet_result.winners.inspect
-    result.ssd_winners=session.controller.ssd_result.winners.inspect
-    result.borda_winners=session.controller.borda_result.winners.inspect
+    result.errors=[]
+    unless qv
+      result.errors << "No quickvote with name #{shortname} found!"
+      return result
+    end
+    qv.results
+    result.plurality_winners=qv.plurality_result.winners
+    result.approval_winners=qv.approval_result.winners
+    result.condorcet_winners=qv.condorcet_result.winners
+    result.ssd_winners=qv.ssd_result.winners
+    result.borda_winners=qv.borda_result.winners
+    candidates={}
+    qv.candidates.each {|c| candidates[c.id] = c.name}
+    result.candidate_ids=candidates.keys
+    result.candidate_names=candidates.values
     result
   end
 end

Benjamin Mako Hill || Want to submit a patch?