type

MimeType

src @Serializable { simple=true }
const class MimeType : Obj

MimeType represents the parsed value of a Content-Type header per RFC 2045 section 5.1.

constructors

fromStr

Parse from string format.

methods

charset

If a charset parameter is specified, then map it to the Charset instance, otherwise return Charset.utf8.

equals

Equality is based on the case insensitive mediaType and subType, and params (keys are case insensitive and values are case sensitive).

forExt

Map a case insensitive file extension to a MimeType.

hash

Hash code is derived from the mediaType, subType, and params hashes.

isText

Return if this mime type is known to be text.

mediaType

The primary media type always in lowercase

noParams

Return an instance with this mediaType and subType, but strip any parameters.

params

Additional parameters stored in case-insensitive map.

parseParams

Parse a set of attribute-value parameters where the values may be tokens or quoted-strings.

subType

The subtype always in lowercase

toStr

Encode as a MIME message according to RFC 822.

Slot Details

charset

src Charset charset()

If a charset parameter is specified, then map it to the Charset instance, otherwise return Charset.utf8.

equals

src virtual override Bool equals(Obj? that)

Equality is based on the case insensitive mediaType and subType, and params (keys are case insensitive and values are case sensitive).

forExt

src static MimeType? forExt(Str ext)

Map a case insensitive file extension to a MimeType. This mapping is configured via "etc/sys/ext2mime.props". If no mapping is available return null.

fromStr

src static new fromStr(Str s, Bool checked := true)

Parse from string format. If invalid format and checked is false return null, otherwise throw ParseErr. Parenthesis comments are treated as part of the value.

hash

src virtual override Int hash()

Hash code is derived from the mediaType, subType, and params hashes.

isText

src Bool isText()

Return if this mime type is known to be text. This includes all "text/*" mime types along with special cases like "application/json".

mediaType

src Str mediaType()

The primary media type always in lowercase:

text/html  =>  text

noParams

src MimeType noParams()

Return an instance with this mediaType and subType, but strip any parameters.

params

src Str:Str params()

Additional parameters stored in case-insensitive map. If no parameters, then this is an empty map.

text/html; charset=utf-8    =>  [charset:utf-8]
text/html; charset="utf-8"  =>  [charset:utf-8]

parseParams

src static [Str:Str]? parseParams(Str s, Bool checked := true)

Parse a set of attribute-value parameters where the values may be tokens or quoted-strings. The resulting map is case insensitive. If invalid format return null or raise ParseErr based on checked flag. Parenthesis comments are not supported. If a value pair is missing "= value", then the value is defaulted to "".

Examples:

a=b; c="d"       =>  ["a":"b", "c"="d"]
foo=bar; secure  =>  ["foo":"bar", "secure":""]

subType

src Str subType()

The subtype always in lowercase:

text/html  =>  html

toStr

src virtual override Str toStr()

Encode as a MIME message according to RFC 822. This is always the exact same string passed to fromStr.