
commit e03798beb5678386749022e88c4593a7546951e4 Author: aagbsn <aagbsn@extc.org> Date: Mon Aug 19 01:09:32 2013 +0200 Add Bouncer API --- oonib/bouncer/handlers.py | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/oonib/bouncer/handlers.py b/oonib/bouncer/handlers.py index 90651b0..162f61d 100644 --- a/oonib/bouncer/handlers.py +++ b/oonib/bouncer/handlers.py @@ -1,4 +1,25 @@ +import json +import random +import yaml from oonib.handlers import OONIBHandler +from oonib import config + +#knownHelpers = {'helper-name': ['collector-address1', 'collector-address2', ... 'collector-addressn']} +knownHelpers = {} + +def updateKnownHelpers(): + with open(config.main.bouncer_file) as f: + bouncerFile = yaml.safe_load(f) + for collectorName, helpers in bouncerFile['collector'].items(): + for helperName, helperAddress in helpers['test-helper'].items(): + if helperName not in knownHelpers.keys(): + knownHelpers[helperName] = [] + + knownHelpers[helperName].append( + {'collector-name': collectorName, + 'helper-address': helperAddress + }) +updateKnownHelpers() class BouncerQueryHandler(OONIBHandler): def get(self): @@ -6,6 +27,14 @@ class BouncerQueryHandler(OONIBHandler): pass def post(self): - pass - # request.get? - #'collector': {'foo.onion': {'helper-name': 'helper-address'}, 'bar.onion': {'helper-name': 'helper-address'}} + helpers = json.loads(self.request.body)['test-helpers'] + a = {} + a['collector'] = {} + for helperName in helpers: + if helperName in knownHelpers.keys(): + chosen = random.choice(knownHelpers[helperName]) + collectorName, helperAddress = chosen['collector-name'], chosen['helper-address'] + if not collectorName in a['collector'].keys(): + a['collector'][collectorName] = {'test-helper': {}} + a['collector'][collectorName]['test-helper'][helperName] = helperAddress + self.write(json.dumps(a))