type ty = [
In general, the top-level media type is used to declare the general type of data.
If another top-level type is to be used for any reason, it must be given a name starting with
"X-" to indicate its non-standard status and to avoid a potential conflict with a future officiel name.
While the subtype specifies a specific format for that type of data. Thus, a media type of
"image/xyz" is enough to tell a user agent that the data is an image, even if the user agent has no knowledge of the specific image format
"xyz". Such information be used, for example, to decide whether or not to show a user the raw data from an unrecognized sbtype -- such an action might be reasonable for unrecognized subtype of text, but not for unrecognized subtypes of image or audio.
For this reason, registered subtypes of text, image, audio and video should not contain embedded information tht is really of a different type. Such compound formats should be represented using the
TypeBeat recognize 3 subtypes:
Parameters are modifiers of the media subtype, and as such do not fundamentally affter the nature of the content. The set of meaningful parameters depends on the media type and subtype, However, a given top-level media type may define parameters which are applicable to any subtype of that type.
Parameters may be required by their defining content type of subtype or they may be optional. TypeBeat does not check any assumption about parameters except for the
`Multipart where he expects the
"boundary" parameter - but TypeBeat does not processing (not yet!) the
"charset" parameter for example.
Note that the value of parameter can be a quoted string (
`String). In this case, the value does not include the quotes. That is, the quotation marks in a quoted-string are not a part of the value of the parameter, but are merely used to delimit that parameter value. In other case, the value is
A convenience record to deal with the
"Content-Type" which contains:
- the media type
- the subtype
- parameters: a associative list of
pp_subty subty prints an human readable representation of
pp_value value prints an human readable representation of
pp_value (attribute, value) prints an human readable representation of
pp content prints an human readable representation of
val default : content
Default RFC822 messages without a MIME
"Content-Type" header are taken by this protocol to be plain text in the US-ASCII character set, which can be excplicitly specified as:
Content-Type: text/plain; charset=use-ascii
This is assumed is no
"Content-Type" header field is specified. It is also recommend that this default be assumed when a syntactically invalid
"Content-Type" header field is encountered.
countthe number of byte read starting at
offto parse the
We don't put on the string
str the CRLF line break at the end but we expect this line break inside
str. We the the CRLF line break to terminate the parsing.