kopia lustrzana https://github.com/collective/icalendar
fixed the base64 incompat.
rodzic
f1b1f9a1b2
commit
11c8e9d72d
|
@ -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.')
|
||||
|
||||
|
|
|
@ -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'),
|
||||
|
|
Ładowanie…
Reference in New Issue