Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117882878
imap_utf7.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None
imap_utf7.py
View Options
# The contents of this file has been derived code from the Twisted project
# (http://twistedmatrix.com/). The original author is Jp Calderone.
# Twisted project license follows:
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
class
FolderNameError
(
ValueError
):
pass
def
encode
(
s
):
if
isinstance
(
s
,
str
)
and
sum
(
n
for
n
in
(
ord
(
c
)
for
c
in
s
)
if
n
>
127
):
try
:
s
=
unicode
(
s
,
"UTF-8"
)
except
Exception
,
errmsg
:
raise
FolderNameError
(
"
%r
contains characters not valid in a str folder name. "
"Convert to unicode first?"
%
s
)
r
=
[]
_in
=
[]
for
c
in
s
:
if
ord
(
c
)
in
(
range
(
0x20
,
0x26
)
+
range
(
0x27
,
0x7f
)):
if
_in
:
r
.
extend
([
'&'
,
modified_base64
(
''
.
join
(
_in
)),
'-'
])
del
_in
[:]
r
.
append
(
str
(
c
))
elif
c
==
'&'
:
if
_in
:
r
.
extend
([
'&'
,
modified_base64
(
''
.
join
(
_in
)),
'-'
])
del
_in
[:]
r
.
append
(
'&-'
)
else
:
_in
.
append
(
c
)
if
_in
:
r
.
extend
([
'&'
,
modified_base64
(
''
.
join
(
_in
)),
'-'
])
return
''
.
join
(
r
)
def
decode
(
s
):
r
=
[]
decode
=
[]
for
c
in
s
:
if
c
==
'&'
and
not
decode
:
decode
.
append
(
'&'
)
elif
c
==
'-'
and
decode
:
if
len
(
decode
)
==
1
:
r
.
append
(
'&'
)
else
:
r
.
append
(
modified_unbase64
(
''
.
join
(
decode
[
1
:])))
decode
=
[]
elif
decode
:
decode
.
append
(
c
)
else
:
r
.
append
(
c
)
if
decode
:
r
.
append
(
modified_unbase64
(
''
.
join
(
decode
[
1
:])))
out
=
''
.
join
(
r
)
if
not
isinstance
(
out
,
unicode
):
out
=
unicode
(
out
,
'latin-1'
)
return
out
def
modified_base64
(
s
):
s_utf7
=
s
.
encode
(
'utf-7'
)
return
s_utf7
[
1
:
-
1
]
.
replace
(
'/'
,
','
)
def
modified_unbase64
(
s
):
s_utf7
=
'+'
+
s
.
replace
(
','
,
'/'
)
+
'-'
return
s_utf7
.
decode
(
'utf-7'
)
File Metadata
Details
Attached
Mime Type
text/x-script.python
Expires
Mon, Apr 6, 12:47 AM (5 d, 13 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
98/27/8090c382d5f75e2b90d9ef1e9b96
Default Alt Text
imap_utf7.py (2 KB)
Attached To
Mode
rP pykolab
Attached
Detach File
Event Timeline