Back to index

lightning-sunbird  0.9+nobinonly
Public Member Functions
nsIMIMEHeaderParam Interface Reference

import "nsIMIMEHeaderParam.idl";

Inheritance diagram for nsIMIMEHeaderParam:
Inheritance graph
[legend]
Collaboration diagram for nsIMIMEHeaderParam:
Collaboration graph
[legend]

List of all members.

Public Member Functions

AString getParameter (in ACString aHeaderVal, in string aParamName, in ACString aFallbackCharset, in boolean aTryLocaleCharset, out string aLang)
 Given the value of a single header field (such as Content-Disposition and Content-Type) and the name of a parameter (e.g.
string getParameterInternal (in string aHeaderVal, in string aParamName, out string aCharset, out string aLang)
 Given the value of a single header field (such as Content-Disposition and Content-Type) and the name of a parameter (e.g.
ACString decodeRFC2047Header (in string aHeaderVal, in string aDefaultCharset, in boolean aOverrideCharset, in boolean aEatContinuation)
 Given a header value, decodes RFC 2047-style encoding and returns the decoded header value in UTF-8 if either it's RFC-2047-encoded or aDefaultCharset is given.
ACString decodeParameter (in ACString aParamValue, in string aCharset, in string aDefaultCharset, in boolean aOverrideCharset)
 Given a header parameter, decodes RFC 2047 style encoding (if it's not obtained from RFC 2231 encoding), converts it to UTF-8 and returns the result in UTF-8 if an attempt to extract charset info.

Detailed Description

Definition at line 48 of file nsIMIMEHeaderParam.idl.


Member Function Documentation

ACString nsIMIMEHeaderParam::decodeParameter ( in ACString  aParamValue,
in string  aCharset,
in string  aDefaultCharset,
in boolean  aOverrideCharset 
)

Given a header parameter, decodes RFC 2047 style encoding (if it's not obtained from RFC 2231 encoding), converts it to UTF-8 and returns the result in UTF-8 if an attempt to extract charset info.

from a few different sources succeeds. Otherwise, returns the input header value (in whatever encoding) as it is except that RFC 822 (using backslash) quotation is stripped off.

For internal use only. The only other place where this needs to be invoked is mime_decode_filename in mailnews/mime/src/mimehdrs.cpp defined as char * mime_decode_filename(char *name, const char *charset, MimeDisplayOptions *opt)

Parameters:
aParamValuethe value of a parameter to decode and convert
aCharsetcharset obtained from RFC 2231 decoding in which aParamValue is encoded. If null, indicates that it needs to try RFC 2047, instead.
aDefaultCharsetMIME charset to use when aCharset is null and cannot be obtained per RFC 2047 (most likely because 'bare' string is used.) Besides, it overrides aCharset/MIME charset obtained from RFC 2047 if aOverrideCharset is set.
aOverrideCharsetWhen set, overrides MIME charset specified in RFC 2047 style encoding with aDefaultCharset
Returns:
decoded parameter
ACString nsIMIMEHeaderParam::decodeRFC2047Header ( in string  aHeaderVal,
in string  aDefaultCharset,
in boolean  aOverrideCharset,
in boolean  aEatContinuation 
)

Given a header value, decodes RFC 2047-style encoding and returns the decoded header value in UTF-8 if either it's RFC-2047-encoded or aDefaultCharset is given.

Otherwise, returns the input header value (in whatever encoding) as it is except that RFC 822 (using backslash) quotation and CRLF (if aEatContinuation is set) are stripped away

For internal use only. The only other place where this needs to be invoked is MIME_DecodeMimeHeader in mailnews/mime/src/mimehdrs.cpp defined as char * Mime_DecodeMimeHeader(char *header_val, const char *charset, PRBool override, PRBool eatcontinuation)

Parameters:
aHeaderVala header value to decode
aDefaultCharsetMIME charset to use in place of MIME charset specified in RFC 2047 style encoding when aOverrideCharset is set.
aOverrideCharsetWhen set, overrides MIME charset specified in RFC 2047 style encoding with aDefaultCharset
aEatContinuationWhen set, removes CR/LF
Returns:
decoded header value
AString nsIMIMEHeaderParam::getParameter ( in ACString  aHeaderVal,
in string  aParamName,
in ACString  aFallbackCharset,
in boolean  aTryLocaleCharset,
out string  aLang 
)

Given the value of a single header field (such as Content-Disposition and Content-Type) and the name of a parameter (e.g.

filename, name, charset), returns the value of the parameter. The value is obtained by decoding RFC 2231-style encoding, RFC 2047-style encoding, and converting to UniChar(UTF-16) from charset specified in RFC 2231/2047 encoding, UTF-8, aFallbackCharset and the locale charset as the last resort if TryLocaleCharset is set.

This method internally invokes getParameterInternal, However, it does not stop at decoding RFC 2231 (the task for getParameterInternal but tries to cope with several non-standard-compliant cases mentioned below.

Note that a lot of MUAs and HTTP servers put RFC 2047-encoded parameters in mail headers and HTTP headers. Unfortunately, this includes Mozilla as of 2003-05-30. Even more standard-ignorant MUAs, web servers and application servers put 'raw 8bit characters'. This will try to cope with all these cases as gracefully as possible. Additionally, it returns the language tag if the parameter is encoded per RFC 2231 and includes lang.

Parameters:
aHeaderVala header string to get the value of a parameter from.
aParamNamethe name of a MIME header parameter (e.g. filename, name, charset). If empty, returns the first (possibly) unnamed 'parameter'.
aFallbackCharsetfallback charset to try if the string after RFC 2231/2047 decoding or the raw 8bit string is not UTF-8
aTryLocaleCharsetIf set, makes yet another attempt with the locale charset.
aLangIf non-null, assigns it to a pointer to a string containing the value of language obtained from RFC 2231 parsing. Caller has to nsMemory::Free it.
Returns:
the value of aParamName in Unichar(UTF-16).
string nsIMIMEHeaderParam::getParameterInternal ( in string  aHeaderVal,
in string  aParamName,
out string  aCharset,
out string  aLang 
)

Given the value of a single header field (such as Content-Disposition and Content-Type) and the name of a parameter (e.g.

filename, name, charset), returns the value of the parameter after decoding RFC 2231-style encoding.

For internal use only. The only other place where this needs to be invoked is |MimeHeaders_get_parameter| in mailnews/mime/src/mimehdrs.cpp defined as char * MimeHeaders_get_parameter (const char *header_value, const char *parm_name, char **charset, char **language)

Otherwise, this method would have been made static.

Parameters:
aHeaderVala header string to get the value of a parameter from.
aParamNamethe name of a MIME header parameter (e.g. filename, name, charset). If empty, returns the first (possibly) unnamed 'parameter'.
aCharsetIf non-null, it gets assigned a new pointer to a string containing the value of charset obtained from RFC 2231 parsing. Caller has to nsMemory::Free it.
aLangIf non-null, it gets assigned a new pointer to a string containing the value of language obtained from RFC 2231 parsing. Caller has to nsMemory::Free it.
Returns:
the value of aParamName after RFC 2231 decoding but without charset conversion.

The documentation for this interface was generated from the following file: