[tor-commits] [bridgedb/develop] Add challenge Attribute to ICaptcha interface and implementation.
isis at torproject.org
isis at torproject.org
Sun Mar 16 16:38:45 UTC 2014
commit acc5f2ab0656db5f0bff1e3f0a8061f54aa8b5bd
Author: Isis Lovecruft <isis at torproject.org>
Date: Tue Mar 4 19:04:18 2014 +0000
Add challenge Attribute to ICaptcha interface and implementation.
---
lib/bridgedb/captcha.py | 24 +++++++++++++-----------
1 file changed, 13 insertions(+), 11 deletions(-)
diff --git a/lib/bridgedb/captcha.py b/lib/bridgedb/captcha.py
index 672d75c..5d36432 100644
--- a/lib/bridgedb/captcha.py
+++ b/lib/bridgedb/captcha.py
@@ -53,20 +53,26 @@ class ReCaptchaKeyError(Exception):
class GimpCaptchaError(Exception):
"""General exception raised when a Gimp CAPTCHA cannot be retrieved."""
+
class ICaptcha(Interface):
"""Interface specification for CAPTCHAs."""
- image = Attribute("A CAPTCHA image.")
- def get(self):
- """Retrieve a new CAPTCHA."""
- return None
+ image = Attribute(
+ "A string containing the contents of a CAPTCHA image file.")
+ challenge = Attribute(
+ "A unique string associated with the dispursal of this CAPTCHA.")
+
+ def get():
+ """Retrieve a new CAPTCHA image."""
+
class Captcha(object):
- """A generic CAPTCHA object."""
+ """A generic CAPTCHA base class."""
implements(ICaptcha)
def __init__(self):
self.image = None
+ self.challenge = None
def get(self):
return self.image
@@ -76,10 +82,9 @@ class ReCaptcha(Captcha):
"""A reCaptcha CAPTCHA."""
def __init__(self, pubkey=None, privkey=None):
+ super(ReCaptcha, self).__init__()
self.pubkey = pubkey
self.privkey = privkey
- self.image = None
- super(ReCaptcha, self).__init__()
def get(self):
"""Retrieve a CAPTCHA from the reCaptcha API server.
@@ -111,15 +116,12 @@ class GimpCaptcha(Captcha):
:raises GimpCaptchaError: if **cacheDir** is not a directory.
"""
+ super(GimpCaptcha, self).__init__()
if not os.path.isdir(cacheDir):
raise GimpCaptchaError("Gimp captcha cache isn't a directory: %r"
% cacheDir)
-
- self.image = None
- self.challenge = None
self.cacheDir = cacheDir
self.clientIP = clientIP
- super(GimpCaptcha, self).__init__()
@classmethod
def check(cls, challenge, answer, clientIP=None):
More information about the tor-commits
mailing list