pcbeard / MimeParser

Mime parsing in Swift | Relevant RFCs: RFC 822, RFC 2045, RFC 2046

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status

About

MimeParser is a simple MIME (Multipurpose Internet Mail Extensions) parsing library written in Swift (to learn more about mimes refer to RFC 822, RFC 2045, RFC 2046)

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

To integrate MimeParser into your Xcode project using CocoaPods, specify it in your Podfile:

project '<Your Project Name>.xcodeproj'
platform :osx, '10.12'

target 'Test' do
  use_frameworks!
  pod 'MimeParser', '~> 0.1'
end

Then, run the following command:

$ pod install

Usage

Import MimeParser before using it:

import MimeParser

Create parser object:

let parser = MimeParser()

Let this be a simplest mime to be parsed:

let str = """
	Content-Type: text/plain
	
	Test
	"""

You are ready to parse the mime:

let mime = try parser.parse(str)

Returned mime object is a root of the mime tree and provides access to its header fields and content:

public enum MimeContent {
    case body(MimeBody)
    case mixed([Mime])
    case alternative([Mime])
}

public struct MimeHeader {
    public let contentTransferEncoding: ContentTransferEncoding?
    public let contentType: ContentType?
    public let contentDisposition: ContentDisposition?
    public let other: [RFC822HeaderField]
}

if let contentTypeString = mime.header.contentType?.raw {
	print("\(contentTypeString)")
	// "text/plain"
}

if case .body(let body) = mime.content {
	print("\(body.raw)")
	// "Test"
}

Decoded mime's content is simply to retrieve:

let content = try mime.decodedContentData()
// "Test"

License

MimeParser is available under the MIT license. See the LICENSE file for more info.

Contribution

MimeParser is still very simple and incomplete, so pull requests welcome!

About

Mime parsing in Swift | Relevant RFCs: RFC 822, RFC 2045, RFC 2046

License:MIT License


Languages

Language:Swift 98.1%Language:Ruby 1.1%Language:C 0.8%