[tor-commits] [ooni-probe/master] Store a cache of input descriptor lookups
art at torproject.org
art at torproject.org
Tue Aug 27 09:21:51 UTC 2013
commit a00231ca5aad7992b85ff57d7ca4e1fd5607b65f
Author: Arturo Filastò <art at fuffa.org>
Date: Thu Aug 22 14:58:41 2013 +0200
Store a cache of input descriptor lookups
---
ooni/oonibclient.py | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/ooni/oonibclient.py b/ooni/oonibclient.py
index 1a581c0..d8a8bcd 100644
--- a/ooni/oonibclient.py
+++ b/ooni/oonibclient.py
@@ -8,14 +8,12 @@ from twisted.web.client import Agent
from ooni.utils.net import BodyReceiver, StringProducer, Downloader
class InputFile(object):
- def __init__(self, id, name=None, description=None,
- version=None, author=None, date=None):
- self.id = id
- self.name = name
- self.description = description
- self.version = version
- self.author = author
- self.date = date
+ def __init__(self, descriptor):
+ self.id = descriptor['id']
+ self.name = descriptor['name']
+ self.version = descriptor['version']
+ self.author = descriptor['author']
+ self.date = descriptor['date']
self.file_path = None
@@ -73,7 +71,19 @@ class OONIBClient(object):
pass
def getInput(self, input_hash):
- return self.queryBackend('GET', '/input/' + input_hash)
+ try:
+ return defer.succeed(self.input_files[input_hash])
+ except KeyError:
+ d = self.queryBackend('GET', '/input/' + input_hash)
+ @d.addCallback
+ def cb(descriptor):
+ self.input_files[input_hash] = InputFile(descriptor)
+ return self.input_files[input_hash]
+ @d.addErrback
+ def err(err):
+ log.err("Failed to get descriptor for input %s" % input_hash)
+ log.exception(err)
+ return d
def getInputList(self):
return self.queryBackend('GET', '/input')
More information about the tor-commits
mailing list