struct MIME::MediaType

Overview

A MediaType describes a MIME content type with optional parameters.

Defined in:

mime/media_type.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(media_type, params = {} of String => String)Source

Creates a new MediaType instance.

def self.parse(string : String) : MediaTypeSource

Parses a MIME type string representation including any optional parameters, per RFC 1521. Media types are the values in Content-Type and Content-Disposition HTTP headers (RFC 2183).

Media type is lowercased and trimmed of whitespace. Param keys are lowercased.

Raises MIME::Error on error.

def self.parse?(string : String) : MediaType?Source

Parses a MIME type string representation including any optional parameters, per RFC 1521. Media types are the values in Content-Type and Content-Disposition HTTP headers (RFC 2183).

Media type is lowercased and trimmed of whitespace. Param keys are lowercased.

Returns nil on error.

Instance Method Detail

def [](key : String) : StringSource

Returns the value for the parameter given by key. If not found, raises KeyError.

require "mime/media_type"

MIME::MediaType.parse("text/plain; charset=UTF-8")["charset"] # => "UTF-8"
MIME::MediaType.parse("text/plain; charset=UTF-8")["foo"]     # raises KeyError

def []=(key : String, value : String)Source

Sets the value of parameter key to the given value.

require "mime/media_type"

mime_type = MIME::MediaType.parse("x-application/example")
mime_type["foo"] = "bar"
mime_type["foo"] # => "bar"

def []?(key : String) : String?Source

Returns the value for the parameter given by key. If not found, returns nil.

require "mime/media_type"

MIME::MediaType.parse("text/plain; charset=UTF-8")["charset"]? # => "UTF-8"
MIME::MediaType.parse("text/plain; charset=UTF-8")["foo"]?     # => nil

def each_parameter(&block : String, String -> _) : NilSource

Calls the given block for each parameter and passes in the key and the value.

def each_parameter : Iterator(Tuple(String, String))Source

Returns an iterator over the parameter which behaves like an Iterator returning a Tuple of key and value.

def fetch(key : String, default : T) : String | T forall TSource

Returns the value for the parameter given by key, or when not found the value given by default.

require "mime/media_type"

MIME::MediaType.parse("x-application/example").fetch("foo", "baz")          # => "baz"
MIME::MediaType.parse("x-application/example; foo=bar").fetch("foo", "baz") # => "bar"

def fetch(key : String, &block : String -> _)Source

Returns the value for the parameter given by key, or when not found calls the given block with the key.

require "mime/media_type"

MIME::MediaType.parse("x-application/example").fetch("foo") { |key| key }          # => "foo"
MIME::MediaType.parse("x-application/example; foo=bar").fetch("foo") { |key| key } # => "bar"

def media_type : StringSource

def sub_type : String?Source

Second component of #media_type or nil.

require "mime/media_type"

MIME::MediaType.new("text/plain").sub_type # => "plain"
MIME::MediaType.new("foo").sub_type        # => nil

def to_s(io : IO) : NilSource

Description copied from struct Struct

Same as #inspect(io).

def type : StringSource

First component of #media_type.

require "mime/media_type"

MIME::MediaType.new("text/plain").type # => "text"
MIME::MediaType.new("foo").type        # => "foo"

© 2012–2021 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/1.2.1/MIME/MediaType.html