14adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao# Copyright (C) 2001-2006 Python Software Foundation
24adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao# Author: Keith Dart
34adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao# Contact: email-sig@python.org
44adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
54adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao"""Class representing application/* type MIME documents."""
64adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
74adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao__all__ = ["MIMEApplication"]
84adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
94adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaofrom email import encoders
104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaofrom email.mime.nonmultipart import MIMENonMultipart
114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass MIMEApplication(MIMENonMultipart):
144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    """Class for generating application/* MIME documents."""
154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    def __init__(self, _data, _subtype='octet-stream',
174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao                 _encoder=encoders.encode_base64, **_params):
184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        """Create an application/* type MIME document.
194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        _data is a string containing the raw application data.
214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        _subtype is the MIME content type subtype, defaulting to
234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        'octet-stream'.
244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        _encoder is a function which will perform the actual encoding for
264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        transport of the application data, defaulting to base64 encoding.
274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        Any additional keyword arguments are passed to the base class
294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        constructor, which turns them into parameters on the Content-Type
304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        header.
314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        """
324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        if _subtype is None:
334adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao            raise TypeError('Invalid application MIME subtype')
344adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        MIMENonMultipart.__init__(self, 'application', _subtype, **_params)
354adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        self.set_payload(_data)
364adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        _encoder(self)
37