00001
00002 import sys
00003 import six
00004 from six import PY3
00005 from six import text_type
00006 from six.moves import http_cookies
00007
00008 SimpleCookie = http_cookies.SimpleCookie
00009 CookieError = http_cookies.CookieError
00010
00011
00012 def to_bytes(value, charset='latin1'):
00013 if isinstance(value, text_type):
00014 return value.encode(charset)
00015 return value
00016
00017
00018 if PY3:
00019 from html.entities import name2codepoint
00020 from urllib.parse import urlencode
00021 from urllib.parse import splittype
00022 from urllib.parse import splithost
00023 import urllib.parse as urlparse
00024 else:
00025 from htmlentitydefs import name2codepoint
00026 from urllib import splittype
00027 from urllib import splithost
00028 from urllib import urlencode
00029 import urlparse
00030
00031
00032 def print_stderr(value):
00033 if not PY3:
00034 if isinstance(value, text_type):
00035 value = value.encode('utf8')
00036 six.print_(value, file=sys.stderr)
00037
00038 try:
00039 from collections import OrderedDict
00040 except ImportError:
00041 from ordereddict import OrderedDict
00042
00043
00044 def escape_cookie_value(value):
00045 """
00046 Escapes a value so that it can be safely stored in a cookie.
00047
00048 """
00049 return '"' + ''.join(
00050 COOKIE_ESCAPE_CHAR_MAP.get(x, x) for x in value
00051 ) + '"'
00052
00053
00054
00055
00056 COOKIE_ESCAPE_CHAR_MAP = {
00057 '\000' : '\\000', '\001' : '\\001', '\002' : '\\002',
00058 '\003' : '\\003', '\004' : '\\004', '\005' : '\\005',
00059 '\006' : '\\006', '\007' : '\\007', '\010' : '\\010',
00060 '\011' : '\\011', '\012' : '\\012', '\013' : '\\013',
00061 '\014' : '\\014', '\015' : '\\015', '\016' : '\\016',
00062 '\017' : '\\017', '\020' : '\\020', '\021' : '\\021',
00063 '\022' : '\\022', '\023' : '\\023', '\024' : '\\024',
00064 '\025' : '\\025', '\026' : '\\026', '\027' : '\\027',
00065 '\030' : '\\030', '\031' : '\\031', '\032' : '\\032',
00066 '\033' : '\\033', '\034' : '\\034', '\035' : '\\035',
00067 '\036' : '\\036', '\037' : '\\037',
00068
00069
00070
00071
00072 ',' : '\\054', ';' : '\\073',
00073
00074 '"' : '\\"', '\\' : '\\\\',
00075
00076 '\177' : '\\177', '\200' : '\\200', '\201' : '\\201',
00077 '\202' : '\\202', '\203' : '\\203', '\204' : '\\204',
00078 '\205' : '\\205', '\206' : '\\206', '\207' : '\\207',
00079 '\210' : '\\210', '\211' : '\\211', '\212' : '\\212',
00080 '\213' : '\\213', '\214' : '\\214', '\215' : '\\215',
00081 '\216' : '\\216', '\217' : '\\217', '\220' : '\\220',
00082 '\221' : '\\221', '\222' : '\\222', '\223' : '\\223',
00083 '\224' : '\\224', '\225' : '\\225', '\226' : '\\226',
00084 '\227' : '\\227', '\230' : '\\230', '\231' : '\\231',
00085 '\232' : '\\232', '\233' : '\\233', '\234' : '\\234',
00086 '\235' : '\\235', '\236' : '\\236', '\237' : '\\237',
00087 '\240' : '\\240', '\241' : '\\241', '\242' : '\\242',
00088 '\243' : '\\243', '\244' : '\\244', '\245' : '\\245',
00089 '\246' : '\\246', '\247' : '\\247', '\250' : '\\250',
00090 '\251' : '\\251', '\252' : '\\252', '\253' : '\\253',
00091 '\254' : '\\254', '\255' : '\\255', '\256' : '\\256',
00092 '\257' : '\\257', '\260' : '\\260', '\261' : '\\261',
00093 '\262' : '\\262', '\263' : '\\263', '\264' : '\\264',
00094 '\265' : '\\265', '\266' : '\\266', '\267' : '\\267',
00095 '\270' : '\\270', '\271' : '\\271', '\272' : '\\272',
00096 '\273' : '\\273', '\274' : '\\274', '\275' : '\\275',
00097 '\276' : '\\276', '\277' : '\\277', '\300' : '\\300',
00098 '\301' : '\\301', '\302' : '\\302', '\303' : '\\303',
00099 '\304' : '\\304', '\305' : '\\305', '\306' : '\\306',
00100 '\307' : '\\307', '\310' : '\\310', '\311' : '\\311',
00101 '\312' : '\\312', '\313' : '\\313', '\314' : '\\314',
00102 '\315' : '\\315', '\316' : '\\316', '\317' : '\\317',
00103 '\320' : '\\320', '\321' : '\\321', '\322' : '\\322',
00104 '\323' : '\\323', '\324' : '\\324', '\325' : '\\325',
00105 '\326' : '\\326', '\327' : '\\327', '\330' : '\\330',
00106 '\331' : '\\331', '\332' : '\\332', '\333' : '\\333',
00107 '\334' : '\\334', '\335' : '\\335', '\336' : '\\336',
00108 '\337' : '\\337', '\340' : '\\340', '\341' : '\\341',
00109 '\342' : '\\342', '\343' : '\\343', '\344' : '\\344',
00110 '\345' : '\\345', '\346' : '\\346', '\347' : '\\347',
00111 '\350' : '\\350', '\351' : '\\351', '\352' : '\\352',
00112 '\353' : '\\353', '\354' : '\\354', '\355' : '\\355',
00113 '\356' : '\\356', '\357' : '\\357', '\360' : '\\360',
00114 '\361' : '\\361', '\362' : '\\362', '\363' : '\\363',
00115 '\364' : '\\364', '\365' : '\\365', '\366' : '\\366',
00116 '\367' : '\\367', '\370' : '\\370', '\371' : '\\371',
00117 '\372' : '\\372', '\373' : '\\373', '\374' : '\\374',
00118 '\375' : '\\375', '\376' : '\\376', '\377' : '\\377'
00119 }