X-Git-Url: http://dolda2000.com/gitweb/?p=wrw.git;a=blobdiff_plain;f=wrw%2Fproto.py;h=7cb6d311e8f612207141c1a3e3b3f7f1f59ad9a4;hp=628bfc9fb5d22adaaa7914ffe254247ae47d32c2;hb=bdc80241ffb5b50b1c9fb6500778e97b3f7170e6;hpb=15dfd641773374daefdcffe73bc1b56b6bab0b7b diff --git a/wrw/proto.py b/wrw/proto.py index 628bfc9..7cb6d31 100644 --- a/wrw/proto.py +++ b/wrw/proto.py @@ -98,20 +98,19 @@ def simpleerror(env, startreq, code, title, msg): """ % (title, title, htmlq(msg)) - buf = buf.encode("us-ascii") startreq("%i %s" % (code, title), [("Content-Type", "text/html"), ("Content-Length", str(len(buf)))]) return [buf] def urlq(url): - if isinstance(url, str): + if isinstance(url, unicode): url = url.encode("utf-8") ret = "" - invalid = b"%;&=#?/\"'" + invalid = "%;&=#?/\"'" for c in url: - if c in invalid or (c <= 32) or (c >= 128): - ret += "%%%02X" % c + if c in invalid or (ord(c) <= 32) or (ord(c) >= 128): + ret += "%%%02X" % ord(c) else: - ret += chr(c) + ret += c return ret class urlerror(ValueError): @@ -198,34 +197,19 @@ def parurl(url, pars={}, **augment): # Wrap these, since binascii is a bit funky. :P def enhex(bs): - return base64.b16encode(bs).decode("us-ascii") + return base64.b16encode(bs) def unhex(es): - if not isinstance(es, collections.ByteString): - try: - es = es.encode("us-ascii") - except UnicodeError: - raise binascii.Error("non-ascii character in hex-string") return base64.b16decode(es) def enb32(bs): - return base64.b32encode(bs).decode("us-ascii") + return base64.b32encode(bs) def unb32(es): - if not isinstance(es, collections.ByteString): - try: - es = es.encode("us-ascii") - except UnicodeError: - raise binascii.Error("non-ascii character in base32-string") if (len(es) % 8) != 0: es += b"=" * (8 - (len(es) % 8)) es = es.upper() # The whole point of Base32 is that it's case-insensitive :P return base64.b32decode(es) def enb64(bs): - return base64.b64encode(bs).decode("us-ascii") + return base64.b64encode(bs) def unb64(es): - if not isinstance(es, collections.ByteString): - try: - es = es.encode("us-ascii") - except UnicodeError: - raise binascii.Error("non-ascii character in base64-string") if (len(es) % 4) != 0: es += b"=" * (4 - (len(es) % 4)) return base64.b64decode(es)