All Projects â†’ sendyhalim â†’ Swime

sendyhalim / Swime

Licence: mit
🗂 Swift MIME type checking based on magic bytes

Programming Languages

swift
15916 projects

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 Db
Media Type Database
Stars: ✭ 612 (+414.29%)
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
mimesniff
MIME Sniffing Standard
Stars: ✭ 89 (-25.21%)
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
.NET wrapper for libmagic
Stars: ✭ 51 (-57.14%)
Mutual labels:  mime, mime-types
Mime
The Hoa\Mime library.
Stars: ✭ 100 (-15.97%)
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
Ruby Mime Types
Ruby MIME type registry library
Stars: ✭ 288 (+142.02%)
Mutual labels:  mime-types
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
Mime
Map filenames to MIME types
Stars: ✭ 21 (-82.35%)
Mutual labels:  mime-types

🗂 Swime

Swift check MIME type based on magic bytes. Swime detects MIME type of a Data, ported from sindresorhus/file-type

Build Status

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].