Class MediaType
- java.lang.Object
-
- com.google.common.net.MediaType
-
@Beta @GwtCompatible @Immutable public final class MediaType extends java.lang.Object
Represents an Internet Media Type (also known as a MIME Type or Content Type). This class also supports the concept of media ranges defined by HTTP/1.1. As such, the*
character is treated as a wildcard and is used to represent any acceptable type or subtype value. A media type may not have wildcard type with a declared subtype. The*
character has no special meaning as part of a parameter. All values for type, subtype, parameter attributes or parameter values must be valid according to RFCs 2045 and 2046.All portions of the media type that are case-insensitive (type, subtype, parameter attributes) are normalized to lowercase. The value of the
charset
parameter is normalized to lowercase, but all others are left as-is.Note that this specifically does not represent the value of the MIME
Content-Type
header and as such has no support for header-specific considerations such as line folding and comments.For media types that take a charset the predefined constants default to UTF-8 and have a "_UTF_8" suffix. To get a version without a character set, use
withoutParameters()
.- Since:
- 12.0
- Author:
- Gregory Kick
-
-
Field Summary
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Optional<java.nio.charset.Charset>
charset()
Returns an optional charset for the value of the charset parameter if it is specified.static MediaType
create(java.lang.String type, java.lang.String subtype)
Creates a new media type with the given type and subtype.boolean
equals(java.lang.Object obj)
int
hashCode()
boolean
hasWildcard()
Returns true if either the type or subtype is the wildcard.boolean
is(MediaType mediaTypeRange)
Returnstrue
if this instance falls within the range (as defined by the HTTP Accept header) given by the argument according to three criteria: The type of the argument is the wildcard or equal to the type of this instance.ImmutableListMultimap<java.lang.String,java.lang.String>
parameters()
Returns a multimap containing the parameters of this media type.static MediaType
parse(java.lang.String input)
Parses a media type from its string representation.java.lang.String
subtype()
Returns the media subtype.java.lang.String
toString()
Returns the string representation of this media type in the format described in RFC 2045.java.lang.String
type()
Returns the top-level media type.MediaType
withCharset(java.nio.charset.Charset charset)
Returns a new instance with the same type and subtype as this instance, with thecharset
parameter set to thename
of the given charset.MediaType
withoutParameters()
Returns a new instance with the same type and subtype as this instance, but without any parameters.MediaType
withParameter(java.lang.String attribute, java.lang.String value)
Replaces all parameters with the given attribute with a single parameter with the given value.MediaType
withParameters(Multimap<java.lang.String,java.lang.String> parameters)
Replaces all parameters with the given parameters.
-
-
-
Field Detail
-
ANY_TYPE
public static final MediaType ANY_TYPE
-
ANY_TEXT_TYPE
public static final MediaType ANY_TEXT_TYPE
-
ANY_IMAGE_TYPE
public static final MediaType ANY_IMAGE_TYPE
-
ANY_AUDIO_TYPE
public static final MediaType ANY_AUDIO_TYPE
-
ANY_VIDEO_TYPE
public static final MediaType ANY_VIDEO_TYPE
-
ANY_APPLICATION_TYPE
public static final MediaType ANY_APPLICATION_TYPE
-
CACHE_MANIFEST_UTF_8
public static final MediaType CACHE_MANIFEST_UTF_8
-
CSS_UTF_8
public static final MediaType CSS_UTF_8
-
CSV_UTF_8
public static final MediaType CSV_UTF_8
-
HTML_UTF_8
public static final MediaType HTML_UTF_8
-
I_CALENDAR_UTF_8
public static final MediaType I_CALENDAR_UTF_8
-
PLAIN_TEXT_UTF_8
public static final MediaType PLAIN_TEXT_UTF_8
-
TEXT_JAVASCRIPT_UTF_8
public static final MediaType TEXT_JAVASCRIPT_UTF_8
RFC 4329 declaresapplication/javascript
to be the correct media type for JavaScript, but this may be necessary in certain situations for compatibility.
-
TSV_UTF_8
public static final MediaType TSV_UTF_8
- Since:
- 15.0
-
VCARD_UTF_8
public static final MediaType VCARD_UTF_8
-
WML_UTF_8
public static final MediaType WML_UTF_8
-
XML_UTF_8
public static final MediaType XML_UTF_8
As described in RFC 3023, this constant (text/xml
) is used for XML documents that are "readable by casual users."APPLICATION_XML_UTF_8
is provided for documents that are intended for applications.
-
BMP
public static final MediaType BMP
-
CRW
public static final MediaType CRW
The media type for the Canon Image File Format (crw
files), a widely-used "raw image" format for cameras. It is found in/etc/mime.types
, e.g. inDebian 3.48-1. - Since:
- 15.0
-
GIF
public static final MediaType GIF
-
ICO
public static final MediaType ICO
-
JPEG
public static final MediaType JPEG
-
PNG
public static final MediaType PNG
-
PSD
public static final MediaType PSD
The media type for the Photoshop File Format (psd
files) as defined by IANA, and found in/etc/mime.types
, e.g. of the Apache HTTPD project; for the specification, seeAdobe Photoshop Document Format and Wikipedia; this is the regular output/input of Photoshop (which can also export to various image formats; note that files with extension "PSB" are in a distinct but related format). This is a more recent replacement for the older, experimental type
x-photoshop
: RFC-2046.6.- Since:
- 15.0
-
SVG_UTF_8
public static final MediaType SVG_UTF_8
-
TIFF
public static final MediaType TIFF
-
WEBP
public static final MediaType WEBP
-
MP4_AUDIO
public static final MediaType MP4_AUDIO
-
MPEG_AUDIO
public static final MediaType MPEG_AUDIO
-
OGG_AUDIO
public static final MediaType OGG_AUDIO
-
WEBM_AUDIO
public static final MediaType WEBM_AUDIO
-
MP4_VIDEO
public static final MediaType MP4_VIDEO
-
MPEG_VIDEO
public static final MediaType MPEG_VIDEO
-
OGG_VIDEO
public static final MediaType OGG_VIDEO
-
QUICKTIME
public static final MediaType QUICKTIME
-
WEBM_VIDEO
public static final MediaType WEBM_VIDEO
-
WMV
public static final MediaType WMV
-
APPLICATION_XML_UTF_8
public static final MediaType APPLICATION_XML_UTF_8
-
ATOM_UTF_8
public static final MediaType ATOM_UTF_8
-
BZIP2
public static final MediaType BZIP2
-
DART_UTF_8
public static final MediaType DART_UTF_8
Media type for dart files.- Since:
- 19.0
-
APPLE_PASSBOOK
public static final MediaType APPLE_PASSBOOK
Media type for Apple Passbook.- Since:
- 19.0
-
EOT
public static final MediaType EOT
Media type for Embedded OpenType fonts. This is registered with the IANA.- Since:
- 17.0
-
EPUB
public static final MediaType EPUB
As described in the International Digital Publishing Forum EPUB is the distribution and interchange format standard for digital publications and documents. This media type is defined in the EPUB Open Container Format specification.- Since:
- 15.0
-
FORM_DATA
public static final MediaType FORM_DATA
-
KEY_ARCHIVE
public static final MediaType KEY_ARCHIVE
As described in PKCS #12: Personal Information Exchange Syntax Standard, PKCS #12 defines an archive file format for storing many cryptography objects as a single file.- Since:
- 15.0
-
APPLICATION_BINARY
public static final MediaType APPLICATION_BINARY
This is a non-standard media type, but is commonly used in serving hosted binary files as it is known not to trigger content sniffing in current browsers. It should not be used in other situations as it is not specified by any RFC and does not appear in the /IANA MIME Media Types list. ConsiderOCTET_STREAM
for binary data that is not being served to a browser.- Since:
- 14.0
-
GZIP
public static final MediaType GZIP
-
JAVASCRIPT_UTF_8
public static final MediaType JAVASCRIPT_UTF_8
RFC 4329 declares this to be the correct media type for JavaScript, buttext/javascript
may be necessary in certain situations for compatibility.
-
JSON_UTF_8
public static final MediaType JSON_UTF_8
-
MANIFEST_JSON_UTF_8
public static final MediaType MANIFEST_JSON_UTF_8
Media type for the Manifest for a web application.- Since:
- 19.0
-
KML
public static final MediaType KML
-
KMZ
public static final MediaType KMZ
-
MBOX
public static final MediaType MBOX
-
APPLE_MOBILE_CONFIG
public static final MediaType APPLE_MOBILE_CONFIG
Media type for Apple over-the-air mobile configuration profiles.- Since:
- 18.0
-
MICROSOFT_EXCEL
public static final MediaType MICROSOFT_EXCEL
-
MICROSOFT_POWERPOINT
public static final MediaType MICROSOFT_POWERPOINT
-
MICROSOFT_WORD
public static final MediaType MICROSOFT_WORD
-
OCTET_STREAM
public static final MediaType OCTET_STREAM
-
OGG_CONTAINER
public static final MediaType OGG_CONTAINER
-
OOXML_DOCUMENT
public static final MediaType OOXML_DOCUMENT
-
OOXML_PRESENTATION
public static final MediaType OOXML_PRESENTATION
-
OOXML_SHEET
public static final MediaType OOXML_SHEET
-
OPENDOCUMENT_GRAPHICS
public static final MediaType OPENDOCUMENT_GRAPHICS
-
OPENDOCUMENT_PRESENTATION
public static final MediaType OPENDOCUMENT_PRESENTATION
-
OPENDOCUMENT_SPREADSHEET
public static final MediaType OPENDOCUMENT_SPREADSHEET
-
OPENDOCUMENT_TEXT
public static final MediaType OPENDOCUMENT_TEXT
-
PDF
public static final MediaType PDF
-
POSTSCRIPT
public static final MediaType POSTSCRIPT
-
PROTOBUF
public static final MediaType PROTOBUF
- Since:
- 15.0
-
RDF_XML_UTF_8
public static final MediaType RDF_XML_UTF_8
-
RTF_UTF_8
public static final MediaType RTF_UTF_8
-
SFNT
public static final MediaType SFNT
Media type for SFNT fonts (which includes TrueType and OpenType fonts). This is registered with the IANA.- Since:
- 17.0
-
SHOCKWAVE_FLASH
public static final MediaType SHOCKWAVE_FLASH
-
SKETCHUP
public static final MediaType SKETCHUP
-
TAR
public static final MediaType TAR
-
WOFF
public static final MediaType WOFF
Media type for the Web Open Font Format (WOFF) defined by the W3C. This is registered with the IANA.- Since:
- 17.0
-
XHTML_UTF_8
public static final MediaType XHTML_UTF_8
-
XRD_UTF_8
public static final MediaType XRD_UTF_8
Media type for Extensible Resource Descriptors. This is not yet registered with the IANA, but it is specified by OASIS in the XRD definition and implemented in projects such as WebFinger.
-
ZIP
public static final MediaType ZIP
-
-
Method Detail
-
type
public java.lang.String type()
Returns the top-level media type. For example,"text"
in"text/plain"
.
-
subtype
public java.lang.String subtype()
Returns the media subtype. For example,"plain"
in"text/plain"
.
-
parameters
public ImmutableListMultimap<java.lang.String,java.lang.String> parameters()
Returns a multimap containing the parameters of this media type.
-
charset
public Optional<java.nio.charset.Charset> charset()
Returns an optional charset for the value of the charset parameter if it is specified.- Throws:
java.lang.IllegalStateException
- if multiple charset values have been set for this media typejava.nio.charset.IllegalCharsetNameException
- if a charset value is present, but illegaljava.nio.charset.UnsupportedCharsetException
- if a charset value is present, but no support is available in this instance of the Java virtual machine
-
withoutParameters
public MediaType withoutParameters()
Returns a new instance with the same type and subtype as this instance, but without any parameters.
-
withParameters
public MediaType withParameters(Multimap<java.lang.String,java.lang.String> parameters)
Replaces all parameters with the given parameters.- Throws:
java.lang.IllegalArgumentException
- if any parameter or value is invalid
-
withParameter
public MediaType withParameter(java.lang.String attribute, java.lang.String value)
Replaces all parameters with the given attribute with a single parameter with the given value. If multiple parameters with the same attributes are necessary usewithParameters(com.google.common.collect.Multimap<java.lang.String, java.lang.String>)
. PreferwithCharset(java.nio.charset.Charset)
for setting thecharset
parameter when using aCharset
object.- Throws:
java.lang.IllegalArgumentException
- if eitherattribute
orvalue
is invalid
-
withCharset
public MediaType withCharset(java.nio.charset.Charset charset)
Returns a new instance with the same type and subtype as this instance, with thecharset
parameter set to thename
of the given charset. Only onecharset
parameter will be present on the new instance regardless of the number set on this one.If a charset must be specified that is not supported on this JVM (and thus is not representable as a
Charset
instance, usewithParameter(java.lang.String, java.lang.String)
.
-
hasWildcard
public boolean hasWildcard()
Returns true if either the type or subtype is the wildcard.
-
is
public boolean is(MediaType mediaTypeRange)
Returnstrue
if this instance falls within the range (as defined by the HTTP Accept header) given by the argument according to three criteria:- The type of the argument is the wildcard or equal to the type of this instance.
- The subtype of the argument is the wildcard or equal to the subtype of this instance.
- All of the parameters present in the argument are present in this instance.
For example:
PLAIN_TEXT_UTF_8.is(PLAIN_TEXT_UTF_8) // true PLAIN_TEXT_UTF_8.is(HTML_UTF_8) // false PLAIN_TEXT_UTF_8.is(ANY_TYPE) // true PLAIN_TEXT_UTF_8.is(ANY_TEXT_TYPE) // true PLAIN_TEXT_UTF_8.is(ANY_IMAGE_TYPE) // false PLAIN_TEXT_UTF_8.is(ANY_TEXT_TYPE.withCharset(UTF_8)) // true PLAIN_TEXT_UTF_8.withoutParameters().is(ANY_TEXT_TYPE.withCharset(UTF_8)) // false PLAIN_TEXT_UTF_8.is(ANY_TEXT_TYPE.withCharset(UTF_16)) // false
Note that while it is possible to have the same parameter declared multiple times within a media type this method does not consider the number of occurrences of a parameter. For example,
"text/plain; charset=UTF-8"
satisfies"text/plain; charset=UTF-8; charset=UTF-8"
.
-
create
public static MediaType create(java.lang.String type, java.lang.String subtype)
Creates a new media type with the given type and subtype.- Throws:
java.lang.IllegalArgumentException
- if type or subtype is invalid or if a wildcard is used for the type, but not the subtype.
-
parse
public static MediaType parse(java.lang.String input)
Parses a media type from its string representation.- Throws:
java.lang.IllegalArgumentException
- if the input is not parsable
-
equals
public boolean equals(@Nullable java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
toString
public java.lang.String toString()
Returns the string representation of this media type in the format described in RFC 2045.- Overrides:
toString
in classjava.lang.Object
-
-