MIME is a java library without dependencies for parsing and creating HTTP media-type objects, according to RFC6838 specifications.
MIME type has mandatory type and subtype, e.g. application/json
has application
type
and json
subtype. Some MIME types has additional parameters, e.g. text/plain; encoding=utf-8
has
encoding
param with utf-8
value.
For all these entities there are related method exist. To construct MIME parser uses MimeType.of
function:
var mime = MimeType.of("text/xml; encoding=utf-8");
var type = mime.type(); // "text"
var subtype = mime.subtype(); // "xml"
var encoding = mime.param("encoding"); // "utf-8"
To parse multi-value mime-type strings (like Accept
header value), use MimeType.parse(String)
method, it pays attention to qualifier
of each value and sorts mime types using this qualifier.
Example:
MimeType.parse("text/html;q=0.6, application/xml;q=0.9, image/bmp;q=0.3,image/bmp;q=0.5, text/html, multipart/mixed, text/json;q=0.4")
returns a lits of:
multipart/mixed
text/html
application/xml
image/bmp
text/json
Hamcrest matchers are included in test
package. Them can be used to verify mime-types:
// verify type
MatcherAssert.assertThat(
MimeType.of("application/pdf"),
new HmMimeHasType("application")
);
// verify subtype
MatcherAssert.assertThat(
MimeType.of("image/bmp"),
new HmMimeHasSubType("bmp")
);
// verify parameter
MatcherAssert.assertThat(
MimeType.of("image/bmp; charset=utf-8"),
new HmMimeHasParameter("charset", "utf-8")
);
If you are interested in contributing please refer to CONTRIBUTING.md