fixed the base64 incompat.

pull/113/head
Christian Geier 2013-10-24 02:39:05 +02:00
rodzic f1b1f9a1b2
commit 11c8e9d72d
2 zmienionych plików z 11 dodań i 10 usunięć

Wyświetl plik

@ -39,6 +39,7 @@ them directly.
from __future__ import absolute_import
import re
import pytz
import base64
import binascii
import time as _time
from datetime import (
@ -133,19 +134,19 @@ class vBinary(object):
"""
def __init__(self, obj):
self.obj = obj
self.obj = to_unicode(obj)
self.params = Parameters(encoding='BASE64', value="BINARY")
def __repr__(self):
return "vBinary('%s')" % self.to_ical()
def to_ical(self):
return binascii.b2a_base64(self.obj)[:-1]
return binascii.b2a_base64(self.obj.encode('utf-8'))[:-1]
@staticmethod
def from_ical(ical):
try:
return ical.decode('base-64')
return base64.b64decode(ical)
except UnicodeError:
raise ValueError('Not valid base 64 encoding.')

Wyświetl plik

@ -15,19 +15,19 @@ class TestProp(unittest.TestCase):
self.assertEqual(vBinary.from_ical(txt_ical), txt)
# The roundtrip test
txt = 'Binary data \x13 \x56'
txt_ical = 'QmluYXJ5IGRhdGEgEyBW'
txt = b'Binary data \x13 \x56'
txt_ical = b'QmluYXJ5IGRhdGEgEyBW'
self.assertEqual(vBinary(txt).to_ical(), txt_ical)
self.assertEqual(vBinary.from_ical(txt_ical), txt)
self.assertIsInstance(vBinary('txt').params, Parameters)
self.assertEqual(
str(vBinary('txt').params),
"Parameters({'VALUE': 'BINARY', 'ENCODING': 'BASE64'})"
vBinary('txt').params, {'VALUE': 'BINARY', 'ENCODING': 'BASE64'}
)
# Long data should not have line breaks, as that would interfere
txt = 'a' * 99
txt_ical = 'YWFh' * 33
txt = b'a' * 99
txt_ical = b'YWFh' * 33
self.assertEqual(vBinary(txt).to_ical(), txt_ical)
self.assertEqual(vBinary.from_ical(txt_ical), txt)
@ -456,7 +456,7 @@ class TestProp(unittest.TestCase):
)
self.assertEqual(factory.to_ical('priority', 1), b'1')
self.assertEqual(factory.to_ical('cn', u'Rasmussen, Max M\xfcller'),
b'Rasmussen\\, Max M\xc3\xbcller')
'Rasmussen\\, Max M\xc3\xbcller')
self.assertEqual(
factory.from_ical('cn', 'Rasmussen\\, Max M\xc3\xb8ller'),