sendyhalim / Swime
Licence: mit
🗂 Swift MIME type checking based on magic bytes
Stars: ✠119
Programming Languages
swift
15916 projects
Labels
Projects that are alternatives of or similar to Swime
Fileio.jl
Main Package for IO, loading all different kind of files
Stars: ✠133 (+11.76%)
Mutual labels: mime, mime-types
Filetype
Fast, dependency-free, small Go package to infer the binary file type based on the magic numbers signature
Stars: ✠1,278 (+973.95%)
Mutual labels: mime, mime-types
Mime Types
The ultimate javascript content-type utility.
Stars: ✠865 (+626.89%)
Mutual labels: mime, mime-types
ruby-magic
Simple interface to libmagic for Ruby Programming Language
Stars: ✠23 (-80.67%)
Mutual labels: mime, mime-types
Mimetype
A fast golang library for MIME type and file extension detection, based on magic numbers
Stars: ✠452 (+279.83%)
Mutual labels: mime, mime-types
Mime
Shared MIME-info database in D programming language
Stars: ✠7 (-94.12%)
Mutual labels: mime, mime-types
Mime
Fast, robust, standards-compliant MIME decoder. Ships with extensive tests and fuzz tests.
Stars: ✠57 (-52.1%)
Mutual labels: mime
Droply Js
Droply JS, a new responsive and cross browser chunk uploader with DragDrop and File Preview capabilities (HTML5/CSS3)
Stars: ✠50 (-57.98%)
Mutual labels: mime
Mail
Library to send e-mails over different transports and protocols (like SMTP and IMAP) using immutable messages and streams. Also includes SMTP server.
Stars: ✠399 (+235.29%)
Mutual labels: mime
Mailkit
A cross-platform .NET library for IMAP, POP3, and SMTP.
Stars: ✠4,477 (+3662.18%)
Mutual labels: mime
Filetype.py
Small, dependency-free, fast Python package to infer binary file types checking the magic numbers signature
Stars: ✠275 (+131.09%)
Mutual labels: mime
Mailmergelib
MailMergeLib is a mail message client library which provides comfortable mail merge capabilities for text, inline images and attachments, as well as good throughput and fault tolerance for sending mail messages.
Stars: ✠97 (-18.49%)
Mutual labels: mime
Mimekit
A .NET MIME creation and parser library with support for S/MIME, PGP, DKIM, TNEF and Unix mbox spools.
Stars: ✠1,214 (+920.17%)
Mutual labels: mime
Mimetypes
A simple lookup from file name/extension to MIME/media type, generated from mime-db, which in turn is compiled from IANA, Apache and nginx's MIME types.
Stars: ✠37 (-68.91%)
Mutual labels: mime
🗂 Swime
Swift check MIME type based on magic bytes. Swime detects MIME type of a Data
, ported from sindresorhus/file-type
Installation
Swift Package Manager
import PackageDescription
let package = Package(
name: "MyApp",
dependencies: [
.Package(url: "https://github.com/sendyhalim/Swime", majorVersion: 3)
]
)
Usage
Inspect mime type
import Swime
let path = "/path/to/some-file.jpg"
let url = URL(fileURLWithPath: path, isDirectory: false)
let data = try! Data(contentsOf: url)
let mimeType = Swime.mimeType(data: data)
mimeType?.type == .jpg // true
mimeType! // MimeType(mime: "image/jpeg", ext: "jpg", type: .jpg)
switch mimeType?.type {
case .jpg?:
....
case .png?:
....
case .wmv?:
....
case ...
}
Pass bytes to it
import Swime
let bytes: [UInt8] = [255, 216, 255]
let mimeType = Swime.mimeType(bytes: bytes)
mimeType! // MimeType(mime: "image/jpeg", ext: "jpg", type: .jpg)
MimeTypeExtension
Here are the list of available MimeTypeExtension
.
public enum MimeTypeExtension {
case amr
case ar
case avi
case bmp
case bz2
case cab
case cr2
case crx
case deb
case dmg
case eot
case epub
case exe
case flac
case flif
case flv
case gif
case gz
case ico
case jpg
case jxr
case lz
case m4a
case m4v
case mid
case mkv
case mov
case mp3
case mp4
case mpg
case msi
case mxf
case nes
case ogg
case opus
case otf
case pdf
case png
case ps
case psd
case rar
case rpm
case rtf
case sevenZ // 7z, Swift does not let us define enum that starts with a digit
case sqlite
case swf
case tar
case tif
case ttf
case wav
case webm
case webp
case wmv
case woff
case woff2
case xpi
case xz
case z
case zip
}
Testing
make test
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].