Usage
Initialization
Creating a new instance of MIME
type without any arguments results in application/octet-stream
without a file extension.
| import MIME
let mime = MIME()
print(mime) // "application/octet-stream"
print(mime.ext) // nil
|
If you provide valid values to the type
and subtype
arguments whose combination exists in the supported MIME types, it creates the corresponding MIME
type with the appropriate default file extension. Otherwise, it falls back to application/octet-stream
without a file extension.
| import MIME
let mime = MIME(type: "text", subtype: "html")
print(mime) // "text/html"
print(mime.ext) // "html"
|
You can also combine the type
and subtype
arguments together.
| import MIME
let mime = MIME("application/java-archive")
print(mime) // "application/java-archive"
print(mime.ext) // "jar"
|
There are quite a lot of MIME
types that support multiple file extensions. The default one is chosen if you don't provide a valid value to the ext
argument as a hint. Providing an invalid file extension leads to falling back to the default file extension.
| import MIME
let mime = MIME("application/java-archive", ext: "war") // Defaults to `jar`
print(mime) // "application/java-archive"
print(mime.ext) // "war"
|
A new instance of MIME
can also be instantiated with the ext
argument only that can automatically set the type
and subtype
properties. If the value is not a valid file extension, it falls back to application/octet-stream
without a file extension.
| import MIME
let mime = MIME(ext: "css")
print(mime) // "text/css"
print(mime.ext) // "css"
|
Last but not least, you can initialize a new instance of MIME
type with the path
or url
arguments that work the same way as the ext
argument.
| import MIME
let mime = MIME(path: "/public/js/main.js")
print(mime) // "text/javascript"
print(mime.ext) // "js"
|
| import MIME
let mime = MIME(url: URL(string: "https://chaqmoq.dev/public/img/logo.png")!)
print(mime) // "image/png"
print(mime.ext) // "png"
|
Guessing
MIME
types can be guessed from bytes
or Data
. See the full list of all guessable MIME types for more info.
Bytes
| import MIME
let bytes: [UInt8] = [0x47, 0x49, 0x46, ...]
let mime = MIME.guess(from: bytes)
print(mime) // "image/gif"
print(mime.ext) // "gif"
|
Data
| import MIME
let data = Data([0xFF, 0xD8, 0xFF, ...])
let mime = MIME.guess(from: data)
print(mime) // "image/jpeg"
print(mime.ext) // "jpg"
|