Skip to content

Commit

Permalink
refactored client-side stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
benadida committed Aug 31, 2008
1 parent 38d7d55 commit e47661b
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 58 deletions.
58 changes: 2 additions & 56 deletions client/admin.py
Expand Up @@ -5,63 +5,9 @@
2008-08-30
"""

from base import oauth, utils
from crypto import algs
import heliosclient

import oauthclient

class HeliosClient(object):
def __init__(self, auth_info, host, port):
"""
auth_info is consumer_key, ....
"""
self.consumer = oauth.OAuthConsumer(auth_info['consumer_key'],auth_info['consumer_secret'])
self.token = oauth.OAuthToken(auth_info['access_token'],auth_info['access_token_secret'])
self.client = oauthclient.MachineOAuthClient(self.consumer, self.token, host, port)

def get(self, url, parameters = None):
return self.client.access_resource("GET", url, parameters= parameters)

def post(self, url, parameters = None):
return self.client.access_resource("POST", url, parameters= parameters)

def params(self):
params_json = self.get("/elections/params")
return algs.ElGamal.fromJSONDict(utils.from_json(params_json))

def election_new(self, name, public_key):
election_id = self.post("/elections/new_2", {"name" : name, "public_key" : utils.to_json(public_key.toJSONDict())})
return election_id

def election_set_reg(self, election_id, open_reg=False):
result = self.post("/elections/%s/set_reg" % election_id, {'open_p' : str(int(open_reg))})
return result == "SUCCESS"

def election_questions_save(self, election_id, questions):
result = self.post("/elections/%s/save" % election_id, {'election_json' : utils.to_json(questions)})
return result == "SUCCESS"

def election_freeze(self, election_id):
result = self.post("/elections/%s/freeze_2" % election_id, {})
return result == "SUCCESS"

def open_submit(self, election_id, encrypted_vote, email=None, openid_url=None, name=None, category=None):
"""
encrypted_vote is a JSON string
"""
result = self.post("/elections/%s/open_submit" % election_id, {'encrypted_vote' : encrypted_vote, 'email': email,
'openid_url' : openid_url, 'name' : name, 'category' :category})

return result

def set_tally(self, election_id, result, result_proof):
tally_obj = {'result' : result, 'result_proof' : result_proof}
tally_obj_json = utils.to_json(tally_obj)

result = self.post("/elections/%s/set_tally" % election_id, {'tally' : tally_obj_json})
return result == "SUCCESS"

helios = HeliosClient({'consumer_key': 'votehere', 'consumer_secret': 'votehere',
helios = heliosclient.HeliosClient({'consumer_key': 'votehere', 'consumer_secret': 'votehere',
'access_token': '123', 'access_token_secret' : '123'},
host = 'localhost',
port = 8082)
Expand Down
61 changes: 61 additions & 0 deletions client/heliosclient.py
@@ -0,0 +1,61 @@
"""
The Helios Client
Ben Adida
2008-08-30
"""

import oauthclient
from base import utils, oauth
from crypto import algs

class HeliosClient(object):
def __init__(self, auth_info, host, port):
"""
auth_info is consumer_key, ....
"""
self.consumer = oauth.OAuthConsumer(auth_info['consumer_key'],auth_info['consumer_secret'])
self.token = oauth.OAuthToken(auth_info['access_token'],auth_info['access_token_secret'])
self.client = oauthclient.MachineOAuthClient(self.consumer, self.token, host, port)

def get(self, url, parameters = None):
return self.client.access_resource("GET", url, parameters= parameters)

def post(self, url, parameters = None):
return self.client.access_resource("POST", url, parameters= parameters)

def params(self):
params_json = self.get("/elections/params")
return algs.ElGamal.fromJSONDict(utils.from_json(params_json))

def election_new(self, name, public_key):
election_id = self.post("/elections/new_2", {"name" : name, "public_key" : utils.to_json(public_key.toJSONDict())})
return election_id

def election_set_reg(self, election_id, open_reg=False):
result = self.post("/elections/%s/set_reg" % election_id, {'open_p' : str(int(open_reg))})
return result == "SUCCESS"

def election_questions_save(self, election_id, questions):
result = self.post("/elections/%s/save" % election_id, {'election_json' : utils.to_json(questions)})
return result == "SUCCESS"

def election_freeze(self, election_id):
result = self.post("/elections/%s/freeze_2" % election_id, {})
return result == "SUCCESS"

def open_submit(self, election_id, encrypted_vote, email=None, openid_url=None, name=None, category=None):
"""
encrypted_vote is a JSON string
"""
result = self.post("/elections/%s/open_submit" % election_id, {'encrypted_vote' : encrypted_vote, 'email': email,
'openid_url' : openid_url, 'name' : name, 'category' :category})

return result

def set_tally(self, election_id, result, result_proof):
tally_obj = {'result' : result, 'result_proof' : result_proof}
tally_obj_json = utils.to_json(tally_obj)

result = self.post("/elections/%s/set_tally" % election_id, {'tally' : tally_obj_json})
return result == "SUCCESS"
4 changes: 2 additions & 2 deletions index.yaml
Expand Up @@ -10,7 +10,7 @@ indexes:
# automatically uploaded to the admin console when you next deploy
# your application using appcfg.py.

# Used 12 times in query history.
# Used 14 times in query history.
- kind: ElectionExponent
properties:
- name: election
Expand All @@ -37,7 +37,7 @@ indexes:
- name: tallied_at
- name: cast_id

# Used 57 times in query history.
# Used 60 times in query history.
- kind: Voter
properties:
- name: election
Expand Down

0 comments on commit e47661b

Please sign in to comment.