Ejemplo n.º 1
0
def content_types_test():
    eq_(('binary', {
        'name': 'Alices_PDP-10'
    }), parametrized.decode('''BINARY;name="Alices_PDP-10"'''))
    eq_(('multipart/mixed', {
        'boundary': 'mail.sleepy.sau.158.532'
    }),
        parametrized.decode(
            '''MULTIPART/MIXED;boundary="mail.sleepy.sau.158.532"'''))
    eq_(('multipart/mixed', {
        'boundary': 'Where_No_Man_Has_Gone_Before'
    }),
        parametrized.decode(
            '''MULTIPART/MIXED;boundary=Where_No_Man_Has_Gone_Before'''))
    eq_(('multipart/mixed', {
        'boundary':
        'Alternative_Boundary_8dJn:mu0M2Yt5KaFZ8AdJn:mu0M2=Yt1KaFdA'
    }),
        parametrized.decode(
            ''' multipart/mixed; \n\tboundary="Alternative_Boundary_8dJn:mu0M2Yt5KaFZ8AdJn:mu0M2=Yt1KaFdA"'''
        ))
    eq_(('multipart/mixed', {
        'boundary': '16819560-2078917053-688350843:#11603'
    }),
        parametrized.decode(
            '''MULTIPART/MIXED;BOUNDARY="16819560-2078917053-688350843:#11603"'''
        ))
Ejemplo n.º 2
0
def parse_header_value(name, val):
    if not is_pure_ascii(val):
        if parametrized.is_parametrized(name, val):
            # PHOENIX HACK!!!
            # FIXME: making the function return a completely different type on
            # parameterized headers is wrong.
            val = val.decode('utf-8', errors='replace')
            val = val.split(";", 1)
            if len(val) == 2:
                val, params = val

                rparams = {}
                for p in params.split(";"):
                    k,v = p.split("=", 1)
                    rparams[k.strip()] = v.split('"')[1]

                return val, rparams
            return val[0], {}

        return to_unicode(val)
    else:
        if parametrized.is_parametrized(name, val):
            val, params = parametrized.decode(val)
            if name == 'Content-Type':
                main, sub = parametrized.fix_content_type(val)
                return ContentType(main, sub, params)
            else:
                return WithParams(val, params)
        else:
            return val
Ejemplo n.º 3
0
def old_style_test_google():
    h = """image/png;
	name="=?KOI8-R?B?68HS1MnOy8Eg0yDP3sXO2Cwgz97FztggxMzJzs7ZzSA=?=
	=?KOI8-R?B?0NLFxMzJzs7ZzSDJzcXOxc0g0NLFyc3FzsXNINTByw==?=
	=?KOI8-R?B?yc0g3tTPINTP3s7PINrBys3F1CDU1d7VINDSxdTV3tUg?=
	=?KOI8-R?B?zcXT1MEg0NLT1M8gz8bJx8XU2C5wbmc=?="""
    eq_(('image/png', {
        'name':
        u'Картинка с очень, очень длинным предлинным именем преименем таким что точно займет тучу претучу места прсто офигеть.png'
    }), parametrized.decode(h))
Ejemplo n.º 4
0
def parse_header_value(name, val):
    if parametrized.is_parametrized(name, val):
        val, params = parametrized.decode(val)
        if name == 'Content-Type':
            main, sub = parametrized.fix_content_type(val)
            return ContentType(main, sub, params)
        else:
            return WithParams(val, params)
    else:
        return val if is_pure_ascii(val) else to_unicode(val)
Ejemplo n.º 5
0
def parse_header_value(name, val):
    if parametrized.is_parametrized(name, val):
        val, params = parametrized.decode(val)
        if name == 'Content-Type':
            main, sub = parametrized.fix_content_type(val)
            return ContentType(main, sub, params)
        else:
            return WithParams(val, params)
    else:
        return val if is_pure_ascii(val) else to_unicode(val)
Ejemplo n.º 6
0
def parse_header_value(name, val):
    if not is_pure_ascii(val):
        val = to_unicode(val)
    if parametrized.is_parametrized(name, val):
        val, params = parametrized.decode(val)
        if val is not None and not is_pure_ascii(val):
            raise DecodingError('Non-ascii content header value')
        if name == 'Content-Type':
            main, sub = parametrized.fix_content_type(val)
            return ContentType(main, sub, params)

        return WithParams(val, params)

    return val
Ejemplo n.º 7
0
def new_style_test():
    # missing ;
    h = ''' application/x-stuff
    title*0*=us-ascii'en'This%20is%20even%20more%20
    title*1*=%2A%2A%2Afun%2A%2A%2A%20
    title*2="isn't it!"'''
    eq_(('application/x-stuff', {
        'title': u"This is even more ***fun*** isn't it!"
    }), parametrized.decode(h))

    h = '''message/external-body; access-type=URL;
         URL*0="ftp://";
         URL*1="cs.utk.edu/pub/moore/bulk-mailer/bulk-mailer.tar"'''
    eq_(('message/external-body', {
        'access-type': 'URL',
        'url': u"ftp://cs.utk.edu/pub/moore/bulk-mailer/bulk-mailer.tar"
    }), parametrized.decode(h))

    h = '''application/x-stuff;
         title*=us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A'''
    eq_(('application/x-stuff', {
        'title': u"This is ***fun***"
    }), parametrized.decode(h))
Ejemplo n.º 8
0
def parse_header_value(name, val):
    if not is_pure_ascii(val):
        val = to_unicode(val)
    if parametrized.is_parametrized(name, val):
        val, params = parametrized.decode(val)
        if val is not None and not is_pure_ascii(val):
            raise DecodingError('Non-ascii content header value')
        if name == 'Content-Type':
            main, sub = parametrized.fix_content_type(val)
            return ContentType(main, sub, params)

        return WithParams(val, params)

    return val
Ejemplo n.º 9
0
def parse_header_value(name, val):
    if not is_pure_ascii(val):
        if parametrized.is_parametrized(name, val):
            raise DecodingError("Unsupported value in content- header")
        return to_unicode(val)
    else:
        if parametrized.is_parametrized(name, val):
            val, params = parametrized.decode(val)
            if name == 'Content-Type':
                main, sub = parametrized.fix_content_type(val)
                return ContentType(main, sub, params)
            else:
                return WithParams(val, params)
        else:
            return val
Ejemplo n.º 10
0
def parse_header_value(name, val):
    if not is_pure_ascii(val):
        if parametrized.is_parametrized(name, val):
            raise DecodingError("Unsupported value in content- header")
        return to_unicode(val)
    else:
        if parametrized.is_parametrized(name, val):
            val, params = parametrized.decode(val)
            if name == 'Content-Type':
                main, sub = parametrized.fix_content_type(val)
                return ContentType(main, sub, params)
            else:
                return WithParams(val, params)
        else:
            return val
Ejemplo n.º 11
0
def old_style_test_aol():
    h = '''image/png; name="=?utf-8?Q?=D0=9A=D0=B0=D1=80=D1=82=D0=B8=D0=BD=D0=BA=D0=B0_=D1=81_?=
 =?utf-8?Q?=D0=BE=D1=87=D0=B5=D0=BD=D1=8C,_=D0=BE=D1=87=D0=B5=D0=BD?=
 =?utf-8?Q?=D1=8C_=D0=B4=D0=BB=D0=B8=D0=BD=D0=BD=D1=8B=D0=BC_=D0=BF?=
 =?utf-8?Q?=D1=80=D0=B5=D0=B4=D0=BB=D0=B8=D0=BD=D0=BD=D1=8B=D0=BC_=D0=B8?=
 =?utf-8?Q?=D0=BC=D0=B5=D0=BD=D0=B5=D0=BC_=D0=BF=D1=80=D0=B5=D0=B8=D0=BC?=
 =?utf-8?Q?=D0=B5=D0=BD=D0=B5=D0=BC_=D1=82=D0=B0=D0=BA=D0=B8=D0=BC_?=
 =?utf-8?Q?=D1=87=D1=82=D0=BE_=D1=82=D0=BE=D1=87=D0=BD=D0=BE_=D0=B7?=
 =?utf-8?Q?=D0=B0=D0=B9=D0=BC=D0=B5=D1=82_=D1=82=D1=83=D1=87=D1=83_?=
 =?utf-8?Q?=D0=BF=D1=80=D0=B5=D1=82=D1=83=D1=87=D1=83_=D0=BC=D0=B5=D1=81?=
 =?utf-8?Q?=D1=82=D0=B0_=D0=BF=D1=80=D1=81=D1=82=D0=BE_=D0=BE=D1=84?=
 =?utf-8?Q?=D0=B8=D0=B3=D0=B5=D1=82=D1=8C.png?="'''
    eq_(('image/png', {
        'name':
        u'Картинка с очень, очень длинным предлинным именем преименем таким что точно займет тучу претучу места прсто офигеть.png'
    }), parametrized.decode(h))
Ejemplo n.º 12
0
def new_style_test():
    # missing ;
    h = ''' application/x-stuff
    title*0*=us-ascii'en'This%20is%20even%20more%20
    title*1*=%2A%2A%2Afun%2A%2A%2A%20
    title*2="isn't it!"'''
    eq_(('application/x-stuff', {'title': u"This is even more ***fun*** isn't it!"}), parametrized.decode(h))

    h = '''message/external-body; access-type=URL;
         URL*0="ftp://";
         URL*1="cs.utk.edu/pub/moore/bulk-mailer/bulk-mailer.tar"'''
    eq_(('message/external-body', {'access-type': 'URL', 'url': u"ftp://cs.utk.edu/pub/moore/bulk-mailer/bulk-mailer.tar"}), parametrized.decode(h))


    h = '''application/x-stuff;
         title*=us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A'''
    eq_(('application/x-stuff', {'title': u"This is ***fun***"}),
        parametrized.decode(h))
Ejemplo n.º 13
0
def old_style_test_aol():
    h = '''image/png; name="=?utf-8?Q?=D0=9A=D0=B0=D1=80=D1=82=D0=B8=D0=BD=D0=BA=D0=B0_=D1=81_?=
 =?utf-8?Q?=D0=BE=D1=87=D0=B5=D0=BD=D1=8C,_=D0=BE=D1=87=D0=B5=D0=BD?=
 =?utf-8?Q?=D1=8C_=D0=B4=D0=BB=D0=B8=D0=BD=D0=BD=D1=8B=D0=BC_=D0=BF?=
 =?utf-8?Q?=D1=80=D0=B5=D0=B4=D0=BB=D0=B8=D0=BD=D0=BD=D1=8B=D0=BC_=D0=B8?=
 =?utf-8?Q?=D0=BC=D0=B5=D0=BD=D0=B5=D0=BC_=D0=BF=D1=80=D0=B5=D0=B8=D0=BC?=
 =?utf-8?Q?=D0=B5=D0=BD=D0=B5=D0=BC_=D1=82=D0=B0=D0=BA=D0=B8=D0=BC_?=
 =?utf-8?Q?=D1=87=D1=82=D0=BE_=D1=82=D0=BE=D1=87=D0=BD=D0=BE_=D0=B7?=
 =?utf-8?Q?=D0=B0=D0=B9=D0=BC=D0=B5=D1=82_=D1=82=D1=83=D1=87=D1=83_?=
 =?utf-8?Q?=D0=BF=D1=80=D0=B5=D1=82=D1=83=D1=87=D1=83_=D0=BC=D0=B5=D1=81?=
 =?utf-8?Q?=D1=82=D0=B0_=D0=BF=D1=80=D1=81=D1=82=D0=BE_=D0=BE=D1=84?=
 =?utf-8?Q?=D0=B8=D0=B3=D0=B5=D1=82=D1=8C.png?="'''
    eq_(('image/png', {'name': u'Картинка с очень, очень длинным предлинным именем преименем таким что точно займет тучу претучу места прсто офигеть.png'}), parametrized.decode(h))
Ejemplo n.º 14
0
 def content_disposition(self):
     try:
         return parametrized.decode(self._m.get('Content-Disposition', ''))
     except:
         return None, {}
Ejemplo n.º 15
0
 def content_disposition(self):
     try:
         return parametrized.decode(self._m.get('Content-Disposition', ''))
     except:
         return None, {}
Ejemplo n.º 16
0
def simple_test():
    eq_(("message/rfc822", {}), parametrized.decode("MESSAGE/RFC822"))
    eq_(("text/plain", {}), parametrized.decode("text/plain (this is text)"))
Ejemplo n.º 17
0
def broken_test():
    eq_((None, {}), parametrized.decode(""))
Ejemplo n.º 18
0
def content_types_test():
    eq_(('binary', {'name': 'Alices_PDP-10'}), parametrized.decode('''BINARY;name="Alices_PDP-10"'''))
    eq_(('multipart/mixed', {'boundary': 'mail.sleepy.sau.158.532'}), parametrized.decode('''MULTIPART/MIXED;boundary="mail.sleepy.sau.158.532"'''))
    eq_(('multipart/mixed', {'boundary': 'Where_No_Man_Has_Gone_Before'}), parametrized.decode('''MULTIPART/MIXED;boundary=Where_No_Man_Has_Gone_Before'''))
    eq_(('multipart/mixed', {'boundary': 'Alternative_Boundary_8dJn:mu0M2Yt5KaFZ8AdJn:mu0M2=Yt1KaFdA'}), parametrized.decode(''' multipart/mixed; \n\tboundary="Alternative_Boundary_8dJn:mu0M2Yt5KaFZ8AdJn:mu0M2=Yt1KaFdA"'''))
    eq_(('multipart/mixed', {'boundary': '16819560-2078917053-688350843:#11603'}), parametrized.decode('''MULTIPART/MIXED;BOUNDARY="16819560-2078917053-688350843:#11603"'''))
Ejemplo n.º 19
0
def old_style_test_google():
    h = """image/png;
	name="=?KOI8-R?B?68HS1MnOy8Eg0yDP3sXO2Cwgz97FztggxMzJzs7ZzSA=?=
	=?KOI8-R?B?0NLFxMzJzs7ZzSDJzcXOxc0g0NLFyc3FzsXNINTByw==?=
	=?KOI8-R?B?yc0g3tTPINTP3s7PINrBys3F1CDU1d7VINDSxdTV3tUg?=
	=?KOI8-R?B?zcXT1MEg0NLT1M8gz8bJx8XU2C5wbmc=?="""
    eq_(('image/png', {'name': u'Картинка с очень, очень длинным предлинным именем преименем таким что точно займет тучу претучу места прсто офигеть.png'}), parametrized.decode(h))
Ejemplo n.º 20
0
def broken_test():
    eq_((None, {}), parametrized.decode(""))
Ejemplo n.º 21
0
def simple_test():
    eq_(("message/rfc822", {}), parametrized.decode("MESSAGE/RFC822"))
    eq_(("text/plain", {}), parametrized.decode("text/plain (this is text)"))
Ejemplo n.º 22
0
def content_type_param_with_spaces_test():
    eq_(('multipart/alternative', {
        'boundary': 'nextPart'
    }), parametrized.decode("multipart/alternative; boundary = nextPart"))
Ejemplo n.º 23
0
def content_type_param_with_spaces_test():
    eq_(('multipart/alternative',{'boundary':'nextPart'}), parametrized.decode("multipart/alternative; boundary = nextPart"))