Forráskód Böngészése

Changed the structure of the project. All XCode related files moved to "XCode" directory.

Damian Kołakowski 10 éve
szülő
commit
83ab8d59b2
25 módosított fájl, 105 hozzáadás és 1621 törlés
  1. 0 41
      Swifter.xcodeproj/project.xcworkspace/xcshareddata/Swifter.xccheckout
  2. 0 10
      Swifter.xcodeproj/project.xcworkspace/xcuserdata/damiankolakowski.xcuserdatad/WorkspaceSettings.xcsettings
  3. 0 92
      Swifter.xcodeproj/xcuserdata/damiankolakowski.xcuserdatad/xcschemes/xcschememanagement.plist
  4. 0 1352
      SwifterSampleOSX/SwiftyJSON.swift
  5. 0 0
      XCode/Resources/logo.png
  6. 105 116
      XCode/Swifter.xcodeproj/project.pbxproj
  7. 0 0
      XCode/Swifter.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  8. 0 0
      XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifterMac.xcscheme
  9. 0 0
      XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifteriOS.xcscheme
  10. 0 0
      XCode/SwifterMac/Info.plist
  11. 0 0
      XCode/SwifterMac/SwifterMac.h
  12. 0 0
      XCode/SwifterOSXTests/Info.plist
  13. 0 10
      XCode/SwifterSampleOSX/main.swift
  14. 0 0
      XCode/SwifterSampleiOS/AppDelegate.swift
  15. 0 0
      XCode/SwifterSampleiOS/Base.lproj/Main.storyboard
  16. 0 0
      XCode/SwifterSampleiOS/Images.xcassets/AppIcon.appiconset/Contents.json
  17. 0 0
      XCode/SwifterSampleiOS/Images.xcassets/LaunchImage.launchimage/Contents.json
  18. 0 0
      XCode/SwifterSampleiOS/Info.plist
  19. 0 0
      XCode/SwifterSampleiOS/Launch Screen.storyboard
  20. 0 0
      XCode/SwifterSampleiOS/ViewController.swift
  21. 0 0
      XCode/SwifterTestsCommon/SwifterTestsHttpParser.swift
  22. 0 0
      XCode/SwifterTestsCommon/SwifterTestsStringExtensions.swift
  23. 0 0
      XCode/SwifterTestsCommon/SwifterTestsWebSocketSession.swift
  24. 0 0
      XCode/SwifteriOS/SwifteriOS.h
  25. 0 0
      XCode/SwifteriOSTests/Info.plist

+ 0 - 41
Swifter.xcodeproj/project.xcworkspace/xcshareddata/Swifter.xccheckout

@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IDESourceControlProjectFavoriteDictionaryKey</key>
-	<false/>
-	<key>IDESourceControlProjectIdentifier</key>
-	<string>6F6EE92F-5058-4110-A55D-DFBC76A28E89</string>
-	<key>IDESourceControlProjectName</key>
-	<string>Swifter</string>
-	<key>IDESourceControlProjectOriginsDictionary</key>
-	<dict>
-		<key>75224C288D14A799245F99223249EF48FF5DC280</key>
-		<string>github.com:glock45/swifter.git</string>
-	</dict>
-	<key>IDESourceControlProjectPath</key>
-	<string>Swifter.xcodeproj</string>
-	<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
-	<dict>
-		<key>75224C288D14A799245F99223249EF48FF5DC280</key>
-		<string>../..</string>
-	</dict>
-	<key>IDESourceControlProjectURL</key>
-	<string>github.com:glock45/swifter.git</string>
-	<key>IDESourceControlProjectVersion</key>
-	<integer>111</integer>
-	<key>IDESourceControlProjectWCCIdentifier</key>
-	<string>75224C288D14A799245F99223249EF48FF5DC280</string>
-	<key>IDESourceControlProjectWCConfigurations</key>
-	<array>
-		<dict>
-			<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
-			<string>public.vcs.git</string>
-			<key>IDESourceControlWCCIdentifierKey</key>
-			<string>75224C288D14A799245F99223249EF48FF5DC280</string>
-			<key>IDESourceControlWCCName</key>
-			<string>swifter</string>
-		</dict>
-	</array>
-</dict>
-</plist>

+ 0 - 10
Swifter.xcodeproj/project.xcworkspace/xcuserdata/damiankolakowski.xcuserdatad/WorkspaceSettings.xcsettings

@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges</key>
-	<true/>
-	<key>SnapshotAutomaticallyBeforeSignificantChanges</key>
-	<false/>
-</dict>
-</plist>

+ 0 - 92
Swifter.xcodeproj/xcuserdata/damiankolakowski.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>SchemeUserState</key>
-	<dict>
-		<key>SwifterMac.xcscheme_^#shared#^_</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>1</integer>
-		</dict>
-		<key>SwifterOSXTests.xcscheme</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>4</integer>
-		</dict>
-		<key>SwifterSampleOSX.xcscheme</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>2</integer>
-		</dict>
-		<key>SwifterSampleiOS.xcscheme</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>3</integer>
-		</dict>
-		<key>SwifteriOS.xcscheme_^#shared#^_</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>0</integer>
-		</dict>
-		<key>SwifteriOSTests.xcscheme</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>5</integer>
-		</dict>
-	</dict>
-	<key>SuppressBuildableAutocreation</key>
-	<dict>
-		<key>7AE893E61C05127900A29F63</key>
-		<dict>
-			<key>primary</key>
-			<true/>
-		</dict>
-		<key>7AE893FA1C0512C400A29F63</key>
-		<dict>
-			<key>primary</key>
-			<true/>
-		</dict>
-		<key>7C6EC07F1C614051005A49B3</key>
-		<dict>
-			<key>primary</key>
-			<true/>
-		</dict>
-		<key>7C839B6D19422CFF003A6950</key>
-		<dict>
-			<key>primary</key>
-			<true/>
-		</dict>
-		<key>7C839B7F19422CFF003A6950</key>
-		<dict>
-			<key>primary</key>
-			<true/>
-		</dict>
-		<key>7CA4813A19A2EA8D0030B30D</key>
-		<dict>
-			<key>primary</key>
-			<true/>
-		</dict>
-		<key>7CCD875B1C66099B0068099B</key>
-		<dict>
-			<key>primary</key>
-			<true/>
-		</dict>
-		<key>7CCD87781C660EA30068099B</key>
-		<dict>
-			<key>primary</key>
-			<true/>
-		</dict>
-		<key>7CE581B41A36D9E300FB840F</key>
-		<dict>
-			<key>primary</key>
-			<true/>
-		</dict>
-		<key>7CEA69AD1BD271920009F783</key>
-		<dict>
-			<key>primary</key>
-			<true/>
-		</dict>
-	</dict>
-</dict>
-</plist>

+ 0 - 1352
SwifterSampleOSX/SwiftyJSON.swift

@@ -1,1352 +0,0 @@
-//  SwiftyJSON.swift
-//
-//  Copyright (c) 2014 Ruoyu Fu, Pinglin Tang
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy
-//  of this software and associated documentation files (the "Software"), to deal
-//  in the Software without restriction, including without limitation the rights
-//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-//  copies of the Software, and to permit persons to whom the Software is
-//  furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in
-//  all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-//  THE SOFTWARE.
-
-import Foundation
-
-// MARK: - Error
-
-///Error domain
-public let ErrorDomain: String! = "SwiftyJSONErrorDomain"
-
-///Error code
-public let ErrorUnsupportedType: Int! = 999
-public let ErrorIndexOutOfBounds: Int! = 900
-public let ErrorWrongType: Int! = 901
-public let ErrorNotExist: Int! = 500
-public let ErrorInvalidJSON: Int! = 490
-
-// MARK: - JSON Type
-
-/**
-JSON's type definitions.
-
-See http://tools.ietf.org/html/rfc7231#section-4.3
-*/
-public enum Type :Int{
-    
-    case Number
-    case String
-    case Bool
-    case Array
-    case Dictionary
-    case Null
-    case Unknown
-}
-
-// MARK: - JSON Base
-
-public struct JSON {
-    
-    /**
-    Creates a JSON using the data.
-    
-    - parameter data:  The NSData used to convert to json.Top level object in data is an NSArray or NSDictionary
-    - parameter opt:   The JSON serialization reading options. `.AllowFragments` by default.
-    - parameter error: error The NSErrorPointer used to return the error. `nil` by default.
-    
-    - returns: The created JSON
-    */
-    public init(data:NSData, options opt: NSJSONReadingOptions = .AllowFragments, error: NSErrorPointer = nil) {
-        do {
-            let object: AnyObject = try NSJSONSerialization.JSONObjectWithData(data, options: opt)
-            self.init(object)
-        } catch let aError as NSError {
-            if error != nil {
-                error.memory = aError
-            }
-            self.init(NSNull())
-        }
-    }
-    
-    /**
-    Creates a JSON using the object.
-    
-    - parameter object:  The object must have the following properties: All objects are NSString/String, NSNumber/Int/Float/Double/Bool, NSArray/Array, NSDictionary/Dictionary, or NSNull; All dictionary keys are NSStrings/String; NSNumbers are not NaN or infinity.
-    
-    - returns: The created JSON
-    */
-    public init(_ object: AnyObject) {
-        self.object = object
-    }
-    
-    /**
-    Creates a JSON from a [JSON]
-    
-    - parameter jsonArray: A Swift array of JSON objects
-    
-    - returns: The created JSON
-    */
-    public init(_ jsonArray:[JSON]) {
-        self.init(jsonArray.map { $0.object })
-    }
-    
-    /**
-    Creates a JSON from a [String: JSON]
-    
-    - parameter jsonDictionary: A Swift dictionary of JSON objects
-    
-    - returns: The created JSON
-    */
-    public init(_ jsonDictionary:[String: JSON]) {
-        var dictionary = [String: AnyObject]()
-        for (key, json) in jsonDictionary {
-            dictionary[key] = json.object
-        }
-        self.init(dictionary)
-    }
-    
-    /// Private object
-    private var rawArray: [AnyObject] = []
-    private var rawDictionary: [String : AnyObject] = [:]
-    private var rawString: String = ""
-    private var rawNumber: NSNumber = 0
-    private var rawNull: NSNull = NSNull()
-    /// Private type
-    private var _type: Type = .Null
-    /// prviate error
-    private var _error: NSError? = nil
-    
-    /// Object in JSON
-    public var object: AnyObject {
-        get {
-            switch self.type {
-            case .Array:
-                return self.rawArray
-            case .Dictionary:
-                return self.rawDictionary
-            case .String:
-                return self.rawString
-            case .Number:
-                return self.rawNumber
-            case .Bool:
-                return self.rawNumber
-            default:
-                return self.rawNull
-            }
-        }
-        set {
-            _error = nil
-            switch newValue {
-            case let number as NSNumber:
-                if number.isBool {
-                    _type = .Bool
-                } else {
-                    _type = .Number
-                }
-                self.rawNumber = number
-            case  let string as String:
-                _type = .String
-                self.rawString = string
-            case  _ as NSNull:
-                _type = .Null
-            case let array as [AnyObject]:
-                _type = .Array
-                self.rawArray = array
-            case let dictionary as [String : AnyObject]:
-                _type = .Dictionary
-                self.rawDictionary = dictionary
-            default:
-                _type = .Unknown
-                _error = NSError(domain: ErrorDomain, code: ErrorUnsupportedType, userInfo: [NSLocalizedDescriptionKey: "It is a unsupported type"])
-            }
-        }
-    }
-    
-    /// json type
-    public var type: Type { get { return _type } }
-    
-    /// Error in JSON
-    public var error: NSError? { get { return self._error } }
-    
-    /// The static null json
-    @available(*, unavailable, renamed="null")
-    public static var nullJSON: JSON { get { return null } }
-    public static var null: JSON { get { return JSON(NSNull()) } }
-}
-
-// MARK: - CollectionType, SequenceType, Indexable
-extension JSON : Swift.CollectionType, Swift.SequenceType, Swift.Indexable {
-    
-    public typealias Generator = JSONGenerator
-    
-    public typealias Index = JSONIndex
-    
-    public var startIndex: JSON.Index {
-        switch self.type {
-        case .Array:
-            return JSONIndex(arrayIndex: self.rawArray.startIndex)
-        case .Dictionary:
-            return JSONIndex(dictionaryIndex: self.rawDictionary.startIndex)
-        default:
-            return JSONIndex()
-        }
-    }
-    
-    public var endIndex: JSON.Index {
-        switch self.type {
-        case .Array:
-            return JSONIndex(arrayIndex: self.rawArray.endIndex)
-        case .Dictionary:
-            return JSONIndex(dictionaryIndex: self.rawDictionary.endIndex)
-        default:
-            return JSONIndex()
-        }
-    }
-    
-    public subscript (position: JSON.Index) -> JSON.Generator.Element {
-        switch self.type {
-        case .Array:
-            return (String(position.arrayIndex), JSON(self.rawArray[position.arrayIndex!]))
-        case .Dictionary:
-            let (key, value) = self.rawDictionary[position.dictionaryIndex!]
-            return (key, JSON(value))
-        default:
-            return ("", JSON.null)
-        }
-    }
-    
-    /// If `type` is `.Array` or `.Dictionary`, return `array.empty` or `dictonary.empty` otherwise return `false`.
-    public var isEmpty: Bool {
-        get {
-            switch self.type {
-            case .Array:
-                return self.rawArray.isEmpty
-            case .Dictionary:
-                return self.rawDictionary.isEmpty
-            default:
-                return true
-            }
-        }
-    }
-    
-    /// If `type` is `.Array` or `.Dictionary`, return `array.count` or `dictonary.count` otherwise return `0`.
-    public var count: Int {
-        switch self.type {
-        case .Array:
-            return self.rawArray.count
-        case .Dictionary:
-            return self.rawDictionary.count
-        default:
-            return 0
-        }
-    }
-    
-    public func underestimateCount() -> Int {
-        switch self.type {
-        case .Array:
-            return self.rawArray.underestimateCount()
-        case .Dictionary:
-            return self.rawDictionary.underestimateCount()
-        default:
-            return 0
-        }
-    }
-    
-    /**
-    If `type` is `.Array` or `.Dictionary`, return a generator over the elements like `Array` or `Dictionary`, otherwise return a generator over empty.
-    
-    - returns: Return a *generator* over the elements of JSON.
-    */
-    public func generate() -> JSON.Generator {
-        return JSON.Generator(self)
-    }
-}
-
-public struct JSONIndex: ForwardIndexType, _Incrementable, Equatable, Comparable {
-    
-    let arrayIndex: Int?
-    let dictionaryIndex: DictionaryIndex<String, AnyObject>?
-    
-    let type: Type
-    
-    init(){
-        self.arrayIndex = nil
-        self.dictionaryIndex = nil
-        self.type = .Unknown
-    }
-    
-    init(arrayIndex: Int) {
-        self.arrayIndex = arrayIndex
-        self.dictionaryIndex = nil
-        self.type = .Array
-    }
-    
-    init(dictionaryIndex: DictionaryIndex<String, AnyObject>) {
-        self.arrayIndex = nil
-        self.dictionaryIndex = dictionaryIndex
-        self.type = .Dictionary
-    }
-    
-    public func successor() -> JSONIndex {
-        switch self.type {
-        case .Array:
-            return JSONIndex(arrayIndex: self.arrayIndex!.successor())
-        case .Dictionary:
-            return JSONIndex(dictionaryIndex: self.dictionaryIndex!.successor())
-        default:
-            return JSONIndex()
-        }
-    }
-}
-
-public func ==(lhs: JSONIndex, rhs: JSONIndex) -> Bool {
-    switch (lhs.type, rhs.type) {
-    case (.Array, .Array):
-        return lhs.arrayIndex == rhs.arrayIndex
-    case (.Dictionary, .Dictionary):
-        return lhs.dictionaryIndex == rhs.dictionaryIndex
-    default:
-        return false
-    }
-}
-
-public func <(lhs: JSONIndex, rhs: JSONIndex) -> Bool {
-    switch (lhs.type, rhs.type) {
-    case (.Array, .Array):
-        return lhs.arrayIndex < rhs.arrayIndex
-    case (.Dictionary, .Dictionary):
-        return lhs.dictionaryIndex < rhs.dictionaryIndex
-    default:
-        return false
-    }
-}
-
-public func <=(lhs: JSONIndex, rhs: JSONIndex) -> Bool {
-    switch (lhs.type, rhs.type) {
-    case (.Array, .Array):
-        return lhs.arrayIndex <= rhs.arrayIndex
-    case (.Dictionary, .Dictionary):
-        return lhs.dictionaryIndex <= rhs.dictionaryIndex
-    default:
-        return false
-    }
-}
-
-public func >=(lhs: JSONIndex, rhs: JSONIndex) -> Bool {
-    switch (lhs.type, rhs.type) {
-    case (.Array, .Array):
-        return lhs.arrayIndex >= rhs.arrayIndex
-    case (.Dictionary, .Dictionary):
-        return lhs.dictionaryIndex >= rhs.dictionaryIndex
-    default:
-        return false
-    }
-}
-
-public func >(lhs: JSONIndex, rhs: JSONIndex) -> Bool {
-    switch (lhs.type, rhs.type) {
-    case (.Array, .Array):
-        return lhs.arrayIndex > rhs.arrayIndex
-    case (.Dictionary, .Dictionary):
-        return lhs.dictionaryIndex > rhs.dictionaryIndex
-    default:
-        return false
-    }
-}
-
-public struct JSONGenerator : GeneratorType {
-    
-    public typealias Element = (String, JSON)
-    
-    private let type: Type
-    private var dictionayGenerate: DictionaryGenerator<String, AnyObject>?
-    private var arrayGenerate: IndexingGenerator<[AnyObject]>?
-    private var arrayIndex: Int = 0
-    
-    init(_ json: JSON) {
-        self.type = json.type
-        if type == .Array {
-            self.arrayGenerate = json.rawArray.generate()
-        }else {
-            self.dictionayGenerate = json.rawDictionary.generate()
-        }
-    }
-    
-    public mutating func next() -> JSONGenerator.Element? {
-        switch self.type {
-        case .Array:
-            if let o = self.arrayGenerate!.next() {
-                return (String(self.arrayIndex++), JSON(o))
-            } else {
-                return nil
-            }
-        case .Dictionary:
-            if let (k, v): (String, AnyObject) = self.dictionayGenerate!.next() {
-                return (k, JSON(v))
-            } else {
-                return nil
-            }
-        default:
-            return nil
-        }
-    }
-}
-
-// MARK: - Subscript
-
-/**
-*  To mark both String and Int can be used in subscript.
-*/
-public protocol JSONSubscriptType {}
-
-extension Int: JSONSubscriptType {}
-
-extension String: JSONSubscriptType {}
-
-extension JSON {
-    
-    /// If `type` is `.Array`, return json which's object is `array[index]`, otherwise return null json with error.
-    private subscript(index index: Int) -> JSON {
-        get {
-            if self.type != .Array {
-                var r = JSON.null
-                r._error = self._error ?? NSError(domain: ErrorDomain, code: ErrorWrongType, userInfo: [NSLocalizedDescriptionKey: "Array[\(index)] failure, It is not an array"])
-                return r
-            } else if index >= 0 && index < self.rawArray.count {
-                return JSON(self.rawArray[index])
-            } else {
-                var r = JSON.null
-                r._error = NSError(domain: ErrorDomain, code:ErrorIndexOutOfBounds , userInfo: [NSLocalizedDescriptionKey: "Array[\(index)] is out of bounds"])
-                return r
-            }
-        }
-        set {
-            if self.type == .Array {
-                if self.rawArray.count > index && newValue.error == nil {
-                    self.rawArray[index] = newValue.object
-                }
-            }
-        }
-    }
-    
-    /// If `type` is `.Dictionary`, return json which's object is `dictionary[key]` , otherwise return null json with error.
-    private subscript(key key: String) -> JSON {
-        get {
-            var r = JSON.null
-            if self.type == .Dictionary {
-                if let o = self.rawDictionary[key] {
-                    r = JSON(o)
-                } else {
-                    r._error = NSError(domain: ErrorDomain, code: ErrorNotExist, userInfo: [NSLocalizedDescriptionKey: "Dictionary[\"\(key)\"] does not exist"])
-                }
-            } else {
-                r._error = self._error ?? NSError(domain: ErrorDomain, code: ErrorWrongType, userInfo: [NSLocalizedDescriptionKey: "Dictionary[\"\(key)\"] failure, It is not an dictionary"])
-            }
-            return r
-        }
-        set {
-            if self.type == .Dictionary && newValue.error == nil {
-                self.rawDictionary[key] = newValue.object
-            }
-        }
-    }
-    
-    /// If `sub` is `Int`, return `subscript(index:)`; If `sub` is `String`,  return `subscript(key:)`.
-    private subscript(sub sub: JSONSubscriptType) -> JSON {
-        get {
-            if sub is String {
-                return self[key:sub as! String]
-            } else {
-                return self[index:sub as! Int]
-            }
-        }
-        set {
-            if sub is String {
-                self[key:sub as! String] = newValue
-            } else {
-                self[index:sub as! Int] = newValue
-            }
-        }
-    }
-    
-    /**
-    Find a json in the complex data structuresby using the Int/String's array.
-    
-    - parameter path: The target json's path. Example:
-    
-    let json = JSON[data]
-    let path = [9,"list","person","name"]
-    let name = json[path]
-    
-    The same as: let name = json[9]["list"]["person"]["name"]
-    
-    - returns: Return a json found by the path or a null json with error
-    */
-    public subscript(path: [JSONSubscriptType]) -> JSON {
-        get {
-            return path.reduce(self) { $0[sub: $1] }
-        }
-        set {
-            switch path.count {
-            case 0:
-                return
-            case 1:
-                self[sub:path[0]].object = newValue.object
-            default:
-                var aPath = path; aPath.removeAtIndex(0)
-                var nextJSON = self[sub: path[0]]
-                nextJSON[aPath] = newValue
-                self[sub: path[0]] = nextJSON
-            }
-        }
-    }
-    
-    /**
-    Find a json in the complex data structuresby using the Int/String's array.
-    
-    - parameter path: The target json's path. Example:
-    
-    let name = json[9,"list","person","name"]
-    
-    The same as: let name = json[9]["list"]["person"]["name"]
-    
-    - returns: Return a json found by the path or a null json with error
-    */
-    public subscript(path: JSONSubscriptType...) -> JSON {
-        get {
-            return self[path]
-        }
-        set {
-            self[path] = newValue
-        }
-    }
-}
-
-// MARK: - LiteralConvertible
-
-extension JSON: Swift.StringLiteralConvertible {
-    
-    public init(stringLiteral value: StringLiteralType) {
-        self.init(value)
-    }
-    
-    public init(extendedGraphemeClusterLiteral value: StringLiteralType) {
-        self.init(value)
-    }
-    
-    public init(unicodeScalarLiteral value: StringLiteralType) {
-        self.init(value)
-    }
-}
-
-extension JSON: Swift.IntegerLiteralConvertible {
-    
-    public init(integerLiteral value: IntegerLiteralType) {
-        self.init(value)
-    }
-}
-
-extension JSON: Swift.BooleanLiteralConvertible {
-    
-    public init(booleanLiteral value: BooleanLiteralType) {
-        self.init(value)
-    }
-}
-
-extension JSON: Swift.FloatLiteralConvertible {
-    
-    public init(floatLiteral value: FloatLiteralType) {
-        self.init(value)
-    }
-}
-
-extension JSON: Swift.DictionaryLiteralConvertible {
-    
-    public init(dictionaryLiteral elements: (String, AnyObject)...) {
-        self.init(elements.reduce([String : AnyObject]()){(dictionary: [String : AnyObject], element:(String, AnyObject)) -> [String : AnyObject] in
-            var d = dictionary
-            d[element.0] = element.1
-            return d
-            })
-    }
-}
-
-extension JSON: Swift.ArrayLiteralConvertible {
-    
-    public init(arrayLiteral elements: AnyObject...) {
-        self.init(elements)
-    }
-}
-
-extension JSON: Swift.NilLiteralConvertible {
-    
-    public init(nilLiteral: ()) {
-        self.init(NSNull())
-    }
-}
-
-// MARK: - Raw
-
-extension JSON: Swift.RawRepresentable {
-    
-    public init?(rawValue: AnyObject) {
-        if JSON(rawValue).type == .Unknown {
-            return nil
-        } else {
-            self.init(rawValue)
-        }
-    }
-    
-    public var rawValue: AnyObject {
-        return self.object
-    }
-    
-    public func rawData(options opt: NSJSONWritingOptions = NSJSONWritingOptions(rawValue: 0)) throws -> NSData {
-        guard NSJSONSerialization.isValidJSONObject(self.object) else {
-            throw NSError(domain: ErrorDomain, code: ErrorInvalidJSON, userInfo: [NSLocalizedDescriptionKey: "JSON is invalid"])
-        }
-        
-        return try NSJSONSerialization.dataWithJSONObject(self.object, options: opt)
-    }
-    
-    public func rawString(encoding: UInt = NSUTF8StringEncoding, options opt: NSJSONWritingOptions = .PrettyPrinted) -> String? {
-        switch self.type {
-        case .Array, .Dictionary:
-            do {
-                let data = try self.rawData(options: opt)
-                return NSString(data: data, encoding: encoding) as? String
-            } catch _ {
-                return nil
-            }
-        case .String:
-            return self.rawString
-        case .Number:
-            return self.rawNumber.stringValue
-        case .Bool:
-            return self.rawNumber.boolValue.description
-        case .Null:
-            return "null"
-        default:
-            return nil
-        }
-    }
-}
-
-// MARK: - Printable, DebugPrintable
-
-extension JSON: Swift.Printable, Swift.DebugPrintable {
-    
-    public var description: String {
-        if let string = self.rawString(options:.PrettyPrinted) {
-            return string
-        } else {
-            return "unknown"
-        }
-    }
-    
-    public var debugDescription: String {
-        return description
-    }
-}
-
-// MARK: - Array
-
-extension JSON {
-    
-    //Optional [JSON]
-    public var array: [JSON]? {
-        get {
-            if self.type == .Array {
-                return self.rawArray.map{ JSON($0) }
-            } else {
-                return nil
-            }
-        }
-    }
-    
-    //Non-optional [JSON]
-    public var arrayValue: [JSON] {
-        get {
-            return self.array ?? []
-        }
-    }
-    
-    //Optional [AnyObject]
-    public var arrayObject: [AnyObject]? {
-        get {
-            switch self.type {
-            case .Array:
-                return self.rawArray
-            default:
-                return nil
-            }
-        }
-        set {
-            if let array = newValue {
-                self.object = array
-            } else {
-                self.object = NSNull()
-            }
-        }
-    }
-}
-
-// MARK: - Dictionary
-
-extension JSON {
-    
-    //Optional [String : JSON]
-    public var dictionary: [String : JSON]? {
-        if self.type == .Dictionary {
-            return self.rawDictionary.reduce([String : JSON]()) { (dictionary: [String : JSON], element: (String, AnyObject)) -> [String : JSON] in
-                var d = dictionary
-                d[element.0] = JSON(element.1)
-                return d
-            }
-        } else {
-            return nil
-        }
-    }
-    
-    //Non-optional [String : JSON]
-    public var dictionaryValue: [String : JSON] {
-        return self.dictionary ?? [:]
-    }
-    
-    //Optional [String : AnyObject]
-    public var dictionaryObject: [String : AnyObject]? {
-        get {
-            switch self.type {
-            case .Dictionary:
-                return self.rawDictionary
-            default:
-                return nil
-            }
-        }
-        set {
-            if let v = newValue {
-                self.object = v
-            } else {
-                self.object = NSNull()
-            }
-        }
-    }
-}
-
-// MARK: - Bool
-
-extension JSON: Swift.BooleanType {
-    
-    //Optional bool
-    public var bool: Bool? {
-        get {
-            switch self.type {
-            case .Bool:
-                return self.rawNumber.boolValue
-            default:
-                return nil
-            }
-        }
-        set {
-            if newValue != nil {
-                self.object = NSNumber(bool: newValue!)
-            } else {
-                self.object = NSNull()
-            }
-        }
-    }
-    
-    //Non-optional bool
-    public var boolValue: Bool {
-        get {
-            switch self.type {
-            case .Bool, .Number, .String:
-                return self.object.boolValue
-            default:
-                return false
-            }
-        }
-        set {
-            self.object = NSNumber(bool: newValue)
-        }
-    }
-}
-
-// MARK: - String
-
-extension JSON {
-    
-    //Optional string
-    public var string: String? {
-        get {
-            switch self.type {
-            case .String:
-                return self.object as? String
-            default:
-                return nil
-            }
-        }
-        set {
-            if newValue != nil {
-                self.object = NSString(string:newValue!)
-            } else {
-                self.object = NSNull()
-            }
-        }
-    }
-    
-    //Non-optional string
-    public var stringValue: String {
-        get {
-            switch self.type {
-            case .String:
-                return self.object as! String
-            case .Number:
-                return self.object.stringValue
-            case .Bool:
-                return (self.object as! Bool).description
-            default:
-                return ""
-            }
-        }
-        set {
-            self.object = NSString(string:newValue)
-        }
-    }
-}
-
-// MARK: - Number
-extension JSON {
-    
-    //Optional number
-    public var number: NSNumber? {
-        get {
-            switch self.type {
-            case .Number, .Bool:
-                return self.rawNumber
-            default:
-                return nil
-            }
-        }
-        set {
-            self.object = newValue ?? NSNull()
-        }
-    }
-    
-    //Non-optional number
-    public var numberValue: NSNumber {
-        get {
-            switch self.type {
-            case .String:
-                let decimal = NSDecimalNumber(string: self.object as? String)
-                if decimal == NSDecimalNumber.notANumber() {  // indicates parse error
-                    return NSDecimalNumber.zero()
-                }
-                return decimal
-            case .Number, .Bool:
-                return self.object as! NSNumber
-            default:
-                return NSNumber(double: 0.0)
-            }
-        }
-        set {
-            self.object = newValue
-        }
-    }
-}
-
-//MARK: - Null
-extension JSON {
-    
-    public var null: NSNull? {
-        get {
-            switch self.type {
-            case .Null:
-                return self.rawNull
-            default:
-                return nil
-            }
-        }
-        set {
-            self.object = NSNull()
-        }
-    }
-    public func isExists() -> Bool{
-        if let errorValue = error where errorValue.code == ErrorNotExist{
-            return false
-        }
-        return true
-    }
-}
-
-//MARK: - URL
-extension JSON {
-    
-    //Optional URL
-    public var URL: NSURL? {
-        get {
-            switch self.type {
-            case .String:
-                if let encodedString_ = self.rawString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) {
-                    return NSURL(string: encodedString_)
-                } else {
-                    return nil
-                }
-            default:
-                return nil
-            }
-        }
-        set {
-            self.object = newValue?.absoluteString ?? NSNull()
-        }
-    }
-}
-
-// MARK: - Int, Double, Float, Int8, Int16, Int32, Int64
-
-extension JSON {
-    
-    public var double: Double? {
-        get {
-            return self.number?.doubleValue
-        }
-        set {
-            if newValue != nil {
-                self.object = NSNumber(double: newValue!)
-            } else {
-                self.object = NSNull()
-            }
-        }
-    }
-    
-    public var doubleValue: Double {
-        get {
-            return self.numberValue.doubleValue
-        }
-        set {
-            self.object = NSNumber(double: newValue)
-        }
-    }
-    
-    public var float: Float? {
-        get {
-            return self.number?.floatValue
-        }
-        set {
-            if newValue != nil {
-                self.object = NSNumber(float: newValue!)
-            } else {
-                self.object = NSNull()
-            }
-        }
-    }
-    
-    public var floatValue: Float {
-        get {
-            return self.numberValue.floatValue
-        }
-        set {
-            self.object = NSNumber(float: newValue)
-        }
-    }
-    
-    public var int: Int? {
-        get {
-            return self.number?.longValue
-        }
-        set {
-            if newValue != nil {
-                self.object = NSNumber(integer: newValue!)
-            } else {
-                self.object = NSNull()
-            }
-        }
-    }
-    
-    public var intValue: Int {
-        get {
-            return self.numberValue.integerValue
-        }
-        set {
-            self.object = NSNumber(integer: newValue)
-        }
-    }
-    
-    public var uInt: UInt? {
-        get {
-            return self.number?.unsignedLongValue
-        }
-        set {
-            if newValue != nil {
-                self.object = NSNumber(unsignedLong: newValue!)
-            } else {
-                self.object = NSNull()
-            }
-        }
-    }
-    
-    public var uIntValue: UInt {
-        get {
-            return self.numberValue.unsignedLongValue
-        }
-        set {
-            self.object = NSNumber(unsignedLong: newValue)
-        }
-    }
-    
-    public var int8: Int8? {
-        get {
-            return self.number?.charValue
-        }
-        set {
-            if newValue != nil {
-                self.object = NSNumber(char: newValue!)
-            } else {
-                self.object =  NSNull()
-            }
-        }
-    }
-    
-    public var int8Value: Int8 {
-        get {
-            return self.numberValue.charValue
-        }
-        set {
-            self.object = NSNumber(char: newValue)
-        }
-    }
-    
-    public var uInt8: UInt8? {
-        get {
-            return self.number?.unsignedCharValue
-        }
-        set {
-            if newValue != nil {
-                self.object = NSNumber(unsignedChar: newValue!)
-            } else {
-                self.object =  NSNull()
-            }
-        }
-    }
-    
-    public var uInt8Value: UInt8 {
-        get {
-            return self.numberValue.unsignedCharValue
-        }
-        set {
-            self.object = NSNumber(unsignedChar: newValue)
-        }
-    }
-    
-    public var int16: Int16? {
-        get {
-            return self.number?.shortValue
-        }
-        set {
-            if newValue != nil {
-                self.object = NSNumber(short: newValue!)
-            } else {
-                self.object =  NSNull()
-            }
-        }
-    }
-    
-    public var int16Value: Int16 {
-        get {
-            return self.numberValue.shortValue
-        }
-        set {
-            self.object = NSNumber(short: newValue)
-        }
-    }
-    
-    public var uInt16: UInt16? {
-        get {
-            return self.number?.unsignedShortValue
-        }
-        set {
-            if newValue != nil {
-                self.object = NSNumber(unsignedShort: newValue!)
-            } else {
-                self.object =  NSNull()
-            }
-        }
-    }
-    
-    public var uInt16Value: UInt16 {
-        get {
-            return self.numberValue.unsignedShortValue
-        }
-        set {
-            self.object = NSNumber(unsignedShort: newValue)
-        }
-    }
-    
-    public var int32: Int32? {
-        get {
-            return self.number?.intValue
-        }
-        set {
-            if newValue != nil {
-                self.object = NSNumber(int: newValue!)
-            } else {
-                self.object =  NSNull()
-            }
-        }
-    }
-    
-    public var int32Value: Int32 {
-        get {
-            return self.numberValue.intValue
-        }
-        set {
-            self.object = NSNumber(int: newValue)
-        }
-    }
-    
-    public var uInt32: UInt32? {
-        get {
-            return self.number?.unsignedIntValue
-        }
-        set {
-            if newValue != nil {
-                self.object = NSNumber(unsignedInt: newValue!)
-            } else {
-                self.object =  NSNull()
-            }
-        }
-    }
-    
-    public var uInt32Value: UInt32 {
-        get {
-            return self.numberValue.unsignedIntValue
-        }
-        set {
-            self.object = NSNumber(unsignedInt: newValue)
-        }
-    }
-    
-    public var int64: Int64? {
-        get {
-            return self.number?.longLongValue
-        }
-        set {
-            if newValue != nil {
-                self.object = NSNumber(longLong: newValue!)
-            } else {
-                self.object =  NSNull()
-            }
-        }
-    }
-    
-    public var int64Value: Int64 {
-        get {
-            return self.numberValue.longLongValue
-        }
-        set {
-            self.object = NSNumber(longLong: newValue)
-        }
-    }
-    
-    public var uInt64: UInt64? {
-        get {
-            return self.number?.unsignedLongLongValue
-        }
-        set {
-            if newValue != nil {
-                self.object = NSNumber(unsignedLongLong: newValue!)
-            } else {
-                self.object =  NSNull()
-            }
-        }
-    }
-    
-    public var uInt64Value: UInt64 {
-        get {
-            return self.numberValue.unsignedLongLongValue
-        }
-        set {
-            self.object = NSNumber(unsignedLongLong: newValue)
-        }
-    }
-}
-
-//MARK: - Comparable
-extension JSON : Swift.Comparable {}
-
-public func ==(lhs: JSON, rhs: JSON) -> Bool {
-    
-    switch (lhs.type, rhs.type) {
-    case (.Number, .Number):
-        return lhs.rawNumber == rhs.rawNumber
-    case (.String, .String):
-        return lhs.rawString == rhs.rawString
-    case (.Bool, .Bool):
-        return lhs.rawNumber.boolValue == rhs.rawNumber.boolValue
-    case (.Array, .Array):
-        return lhs.rawArray as NSArray == rhs.rawArray as NSArray
-    case (.Dictionary, .Dictionary):
-        return lhs.rawDictionary as NSDictionary == rhs.rawDictionary as NSDictionary
-    case (.Null, .Null):
-        return true
-    default:
-        return false
-    }
-}
-
-public func <=(lhs: JSON, rhs: JSON) -> Bool {
-    
-    switch (lhs.type, rhs.type) {
-    case (.Number, .Number):
-        return lhs.rawNumber <= rhs.rawNumber
-    case (.String, .String):
-        return lhs.rawString <= rhs.rawString
-    case (.Bool, .Bool):
-        return lhs.rawNumber.boolValue == rhs.rawNumber.boolValue
-    case (.Array, .Array):
-        return lhs.rawArray as NSArray == rhs.rawArray as NSArray
-    case (.Dictionary, .Dictionary):
-        return lhs.rawDictionary as NSDictionary == rhs.rawDictionary as NSDictionary
-    case (.Null, .Null):
-        return true
-    default:
-        return false
-    }
-}
-
-public func >=(lhs: JSON, rhs: JSON) -> Bool {
-    
-    switch (lhs.type, rhs.type) {
-    case (.Number, .Number):
-        return lhs.rawNumber >= rhs.rawNumber
-    case (.String, .String):
-        return lhs.rawString >= rhs.rawString
-    case (.Bool, .Bool):
-        return lhs.rawNumber.boolValue == rhs.rawNumber.boolValue
-    case (.Array, .Array):
-        return lhs.rawArray as NSArray == rhs.rawArray as NSArray
-    case (.Dictionary, .Dictionary):
-        return lhs.rawDictionary as NSDictionary == rhs.rawDictionary as NSDictionary
-    case (.Null, .Null):
-        return true
-    default:
-        return false
-    }
-}
-
-public func >(lhs: JSON, rhs: JSON) -> Bool {
-    
-    switch (lhs.type, rhs.type) {
-    case (.Number, .Number):
-        return lhs.rawNumber > rhs.rawNumber
-    case (.String, .String):
-        return lhs.rawString > rhs.rawString
-    default:
-        return false
-    }
-}
-
-public func <(lhs: JSON, rhs: JSON) -> Bool {
-    
-    switch (lhs.type, rhs.type) {
-    case (.Number, .Number):
-        return lhs.rawNumber < rhs.rawNumber
-    case (.String, .String):
-        return lhs.rawString < rhs.rawString
-    default:
-        return false
-    }
-}
-
-private let trueNumber = NSNumber(bool: true)
-private let falseNumber = NSNumber(bool: false)
-private let trueObjCType = String.fromCString(trueNumber.objCType)
-private let falseObjCType = String.fromCString(falseNumber.objCType)
-
-// MARK: - NSNumber: Comparable
-
-extension NSNumber {
-    var isBool:Bool {
-        get {
-            let objCType = String.fromCString(self.objCType)
-            if (self.compare(trueNumber) == NSComparisonResult.OrderedSame && objCType == trueObjCType)
-                || (self.compare(falseNumber) == NSComparisonResult.OrderedSame && objCType == falseObjCType){
-                    return true
-            } else {
-                return false
-            }
-        }
-    }
-}
-
-public func ==(lhs: NSNumber, rhs: NSNumber) -> Bool {
-    switch (lhs.isBool, rhs.isBool) {
-    case (false, true):
-        return false
-    case (true, false):
-        return false
-    default:
-        return lhs.compare(rhs) == NSComparisonResult.OrderedSame
-    }
-}
-
-public func !=(lhs: NSNumber, rhs: NSNumber) -> Bool {
-    return !(lhs == rhs)
-}
-
-public func <(lhs: NSNumber, rhs: NSNumber) -> Bool {
-    
-    switch (lhs.isBool, rhs.isBool) {
-    case (false, true):
-        return false
-    case (true, false):
-        return false
-    default:
-        return lhs.compare(rhs) == NSComparisonResult.OrderedAscending
-    }
-}
-
-public func >(lhs: NSNumber, rhs: NSNumber) -> Bool {
-    
-    switch (lhs.isBool, rhs.isBool) {
-    case (false, true):
-        return false
-    case (true, false):
-        return false
-    default:
-        return lhs.compare(rhs) == NSComparisonResult.OrderedDescending
-    }
-}
-
-public func <=(lhs: NSNumber, rhs: NSNumber) -> Bool {
-    
-    switch (lhs.isBool, rhs.isBool) {
-    case (false, true):
-        return false
-    case (true, false):
-        return false
-    default:
-        return lhs.compare(rhs) != NSComparisonResult.OrderedDescending
-    }
-}
-
-public func >=(lhs: NSNumber, rhs: NSNumber) -> Bool {
-    
-    switch (lhs.isBool, rhs.isBool) {
-    case (false, true):
-        return false
-    case (true, false):
-        return false
-    default:
-        return lhs.compare(rhs) != NSComparisonResult.OrderedAscending
-    }
-}

+ 0 - 0
Resources/logo.png → XCode/Resources/logo.png


+ 105 - 116
Swifter.xcodeproj/project.pbxproj → XCode/Swifter.xcodeproj/project.pbxproj

@@ -10,54 +10,50 @@
 		7AE893EA1C05127900A29F63 /* SwifteriOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AE893E91C05127900A29F63 /* SwifteriOS.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		7AE893FE1C0512C400A29F63 /* SwifterMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AE893FD1C0512C400A29F63 /* SwifterMac.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		7AE8940D1C05151100A29F63 /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7AE8940C1C05151100A29F63 /* Launch Screen.storyboard */; };
-		7C1A2BFB1C5605F50026D3BF /* String+BASE64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C1A2BFA1C5605F50026D3BF /* String+BASE64.swift */; };
-		7C1A2BFC1C5605F50026D3BF /* String+BASE64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C1A2BFA1C5605F50026D3BF /* String+BASE64.swift */; };
-		7C2BEC781C518B7C00B8EE90 /* String+SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C2BEC771C518B7C00B8EE90 /* String+SHA1.swift */; };
-		7C2BEC791C5195EE00B8EE90 /* String+SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C2BEC771C518B7C00B8EE90 /* String+SHA1.swift */; };
-		7C2BEC7A1C5195F200B8EE90 /* String+SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C2BEC771C518B7C00B8EE90 /* String+SHA1.swift */; };
 		7C4785E91C71D15600A9FE73 /* SwifterTestsWebSocketSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C4785E81C71D15600A9FE73 /* SwifterTestsWebSocketSession.swift */; };
 		7C4785EA1C71D15600A9FE73 /* SwifterTestsWebSocketSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C4785E81C71D15600A9FE73 /* SwifterTestsWebSocketSession.swift */; };
 		7C71C5B11A1EC49B00682BF0 /* logo.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7CB102DF1A17381D00CBA3B4 /* logo.png */; };
-		7C73C6911C2615FE00AEF6CA /* SwiftyJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18E610A51BD6397D00B7D17A /* SwiftyJSON.swift */; };
 		7C73C6921C26179C00AEF6CA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CDAB80C1BE2A1D400C8A977 /* AppDelegate.swift */; };
-		7C73C6AA1C261A2100AEF6CA /* DemoServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C6941C2619E100AEF6CA /* DemoServer.swift */; };
-		7C73C6AC1C261A2100AEF6CA /* HttpParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C6961C2619E100AEF6CA /* HttpParser.swift */; };
-		7C73C6AD1C261A2100AEF6CA /* HttpRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C6971C2619E100AEF6CA /* HttpRequest.swift */; };
-		7C73C6AE1C261A2100AEF6CA /* HttpResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C6981C2619E100AEF6CA /* HttpResponse.swift */; };
-		7C73C6AF1C261A2100AEF6CA /* HttpRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C6991C2619E100AEF6CA /* HttpRouter.swift */; };
-		7C73C6B01C261A2100AEF6CA /* HttpServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C69A1C2619E100AEF6CA /* HttpServer.swift */; };
-		7C73C6B11C261A2100AEF6CA /* HttpServerIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C69B1C2619E100AEF6CA /* HttpServerIO.swift */; };
-		7C73C6B21C261A2100AEF6CA /* Socket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C69C1C2619E100AEF6CA /* Socket.swift */; };
-		7C73C6B31C261A2100AEF6CA /* String+Misc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C69D1C2619E100AEF6CA /* String+Misc.swift */; };
-		7C73C6B51C261A2600AEF6CA /* DemoServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C6941C2619E100AEF6CA /* DemoServer.swift */; };
-		7C73C6B71C261A2600AEF6CA /* HttpParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C6961C2619E100AEF6CA /* HttpParser.swift */; };
-		7C73C6B81C261A2600AEF6CA /* HttpRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C6971C2619E100AEF6CA /* HttpRequest.swift */; };
-		7C73C6B91C261A2600AEF6CA /* HttpResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C6981C2619E100AEF6CA /* HttpResponse.swift */; };
-		7C73C6BA1C261A2600AEF6CA /* HttpRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C6991C2619E100AEF6CA /* HttpRouter.swift */; };
-		7C73C6BB1C261A2600AEF6CA /* HttpServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C69A1C2619E100AEF6CA /* HttpServer.swift */; };
-		7C73C6BC1C261A2600AEF6CA /* HttpServerIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C69B1C2619E100AEF6CA /* HttpServerIO.swift */; };
-		7C73C6BD1C261A2600AEF6CA /* Socket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C69C1C2619E100AEF6CA /* Socket.swift */; };
-		7C73C6BE1C261A2600AEF6CA /* String+Misc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C73C69D1C2619E100AEF6CA /* String+Misc.swift */; };
-		7C76B6DE1D2BB1050030FC98 /* Scopes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6DD1D2BB1050030FC98 /* Scopes.swift */; };
-		7C76B6DF1D2BB1050030FC98 /* Scopes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6DD1D2BB1050030FC98 /* Scopes.swift */; };
-		7C76B6E31D2BB1320030FC98 /* Process.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6E21D2BB1320030FC98 /* Process.swift */; };
-		7C76B6E41D2BB1320030FC98 /* Process.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6E21D2BB1320030FC98 /* Process.swift */; };
-		7C76B6E51D2BB1320030FC98 /* Process.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6E21D2BB1320030FC98 /* Process.swift */; };
-		7C76B6E61D2BB1320030FC98 /* Process.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6E21D2BB1320030FC98 /* Process.swift */; };
+		7C76B70D1D2C456A0030FC98 /* DemoServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6EA1D2C44F30030FC98 /* DemoServer.swift */; };
+		7C76B70E1D2C456B0030FC98 /* DemoServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6EA1D2C44F30030FC98 /* DemoServer.swift */; };
+		7C76B70F1D2C456D0030FC98 /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6EB1D2C44F30030FC98 /* File.swift */; };
+		7C76B7101D2C456D0030FC98 /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6EB1D2C44F30030FC98 /* File.swift */; };
+		7C76B7111D2C45710030FC98 /* Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6EC1D2C44F30030FC98 /* Files.swift */; };
+		7C76B7121D2C45710030FC98 /* Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6EC1D2C44F30030FC98 /* Files.swift */; };
+		7C76B7131D2C45730030FC98 /* HttpParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6ED1D2C44F30030FC98 /* HttpParser.swift */; };
+		7C76B7141D2C45730030FC98 /* HttpParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6ED1D2C44F30030FC98 /* HttpParser.swift */; };
+		7C76B7151D2C45760030FC98 /* HttpRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6EE1D2C44F30030FC98 /* HttpRequest.swift */; };
+		7C76B7161D2C45760030FC98 /* HttpRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6EE1D2C44F30030FC98 /* HttpRequest.swift */; };
+		7C76B7171D2C45780030FC98 /* HttpResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6EF1D2C44F30030FC98 /* HttpResponse.swift */; };
+		7C76B7181D2C45790030FC98 /* HttpResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6EF1D2C44F30030FC98 /* HttpResponse.swift */; };
+		7C76B7191D2C457C0030FC98 /* HttpRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F01D2C44F30030FC98 /* HttpRouter.swift */; };
+		7C76B71A1D2C457C0030FC98 /* HttpRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F01D2C44F30030FC98 /* HttpRouter.swift */; };
+		7C76B71B1D2C457E0030FC98 /* HttpServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F11D2C44F30030FC98 /* HttpServer.swift */; };
+		7C76B71C1D2C457E0030FC98 /* HttpServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F11D2C44F30030FC98 /* HttpServer.swift */; };
+		7C76B71D1D2C45820030FC98 /* HttpServerIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F21D2C44F30030FC98 /* HttpServerIO.swift */; };
+		7C76B71E1D2C45820030FC98 /* HttpServerIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F21D2C44F30030FC98 /* HttpServerIO.swift */; };
+		7C76B71F1D2C45840030FC98 /* Process.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F31D2C44F30030FC98 /* Process.swift */; };
+		7C76B7201D2C45840030FC98 /* Process.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F31D2C44F30030FC98 /* Process.swift */; };
+		7C76B7211D2C45870030FC98 /* Scopes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F41D2C44F30030FC98 /* Scopes.swift */; };
+		7C76B7221D2C45870030FC98 /* Scopes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F41D2C44F30030FC98 /* Scopes.swift */; };
+		7C76B7231D2C45890030FC98 /* Socket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F51D2C44F30030FC98 /* Socket.swift */; };
+		7C76B7241D2C458A0030FC98 /* Socket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F51D2C44F30030FC98 /* Socket.swift */; };
+		7C76B7251D2C458C0030FC98 /* String+BASE64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F61D2C44F30030FC98 /* String+BASE64.swift */; };
+		7C76B7261D2C458D0030FC98 /* String+BASE64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F61D2C44F30030FC98 /* String+BASE64.swift */; };
+		7C76B7271D2C458F0030FC98 /* String+Misc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F71D2C44F30030FC98 /* String+Misc.swift */; };
+		7C76B7281D2C458F0030FC98 /* String+Misc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F71D2C44F30030FC98 /* String+Misc.swift */; };
+		7C76B7291D2C45920030FC98 /* String+SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F81D2C44F30030FC98 /* String+SHA1.swift */; };
+		7C76B72A1D2C45920030FC98 /* String+SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F81D2C44F30030FC98 /* String+SHA1.swift */; };
+		7C76B72B1D2C45940030FC98 /* WebSockets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F91D2C44F30030FC98 /* WebSockets.swift */; };
+		7C76B72C1D2C45950030FC98 /* WebSockets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F91D2C44F30030FC98 /* WebSockets.swift */; };
 		7CA4813E19A2EA8D0030B30D /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CA4813D19A2EA8D0030B30D /* main.swift */; };
 		7CB102E01A17381D00CBA3B4 /* logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 7CB102DF1A17381D00CBA3B4 /* logo.png */; };
-		7CC0F8C91C50136B00B65A94 /* Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CC0F8C81C50136B00B65A94 /* Files.swift */; };
-		7CC0F8CA1C50136B00B65A94 /* Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CC0F8C81C50136B00B65A94 /* Files.swift */; };
-		7CC0F8CC1C5014A200B65A94 /* WebSockets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CC0F8CB1C5014A200B65A94 /* WebSockets.swift */; };
-		7CC0F8CD1C5014A200B65A94 /* WebSockets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CC0F8CB1C5014A200B65A94 /* WebSockets.swift */; };
 		7CCD87611C66099B0068099B /* Swifter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AE893E71C05127900A29F63 /* Swifter.framework */; };
 		7CCD87701C660B250068099B /* SwifterTestsHttpParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CCD876D1C660B250068099B /* SwifterTestsHttpParser.swift */; };
 		7CCD87721C660B250068099B /* SwifterTestsStringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CCD876E1C660B250068099B /* SwifterTestsStringExtensions.swift */; };
 		7CCD877E1C660EA30068099B /* Swifter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AE893FB1C0512C400A29F63 /* Swifter.framework */; };
 		7CCD87841C660ED60068099B /* SwifterTestsHttpParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CCD876D1C660B250068099B /* SwifterTestsHttpParser.swift */; };
 		7CCD87851C660ED60068099B /* SwifterTestsStringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CCD876E1C660B250068099B /* SwifterTestsStringExtensions.swift */; };
-		7CCD87871C676EE50068099B /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CCD87861C676EE50068099B /* File.swift */; };
-		7CCD87881C676EE50068099B /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CCD87861C676EE50068099B /* File.swift */; };
 		7CDAB8131BE2A1D400C8A977 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7CDAB80D1BE2A1D400C8A977 /* Main.storyboard */; };
 		7CDAB8141BE2A1D400C8A977 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7CDAB80F1BE2A1D400C8A977 /* Images.xcassets */; };
 		7CDAB8161BE2A1D400C8A977 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CDAB8111BE2A1D400C8A977 /* ViewController.swift */; };
@@ -108,7 +104,6 @@
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
-		18E610A51BD6397D00B7D17A /* SwiftyJSON.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftyJSON.swift; sourceTree = "<group>"; };
 		7AE893E71C05127900A29F63 /* Swifter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Swifter.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		7AE893E91C05127900A29F63 /* SwifteriOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SwifteriOS.h; sourceTree = "<group>"; };
 		7AE893EB1C05127900A29F63 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -116,39 +111,38 @@
 		7AE893FD1C0512C400A29F63 /* SwifterMac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SwifterMac.h; sourceTree = "<group>"; };
 		7AE893FF1C0512C400A29F63 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		7AE8940C1C05151100A29F63 /* Launch Screen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; };
-		7C1A2BFA1C5605F50026D3BF /* String+BASE64.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+BASE64.swift"; sourceTree = "<group>"; };
-		7C2BEC771C518B7C00B8EE90 /* String+SHA1.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+SHA1.swift"; sourceTree = "<group>"; };
 		7C4785E81C71D15600A9FE73 /* SwifterTestsWebSocketSession.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwifterTestsWebSocketSession.swift; sourceTree = "<group>"; };
-		7C73C6941C2619E100AEF6CA /* DemoServer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DemoServer.swift; sourceTree = "<group>"; };
-		7C73C6961C2619E100AEF6CA /* HttpParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpParser.swift; sourceTree = "<group>"; };
-		7C73C6971C2619E100AEF6CA /* HttpRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpRequest.swift; sourceTree = "<group>"; };
-		7C73C6981C2619E100AEF6CA /* HttpResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpResponse.swift; sourceTree = "<group>"; };
-		7C73C6991C2619E100AEF6CA /* HttpRouter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpRouter.swift; sourceTree = "<group>"; };
-		7C73C69A1C2619E100AEF6CA /* HttpServer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpServer.swift; sourceTree = "<group>"; };
-		7C73C69B1C2619E100AEF6CA /* HttpServerIO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpServerIO.swift; sourceTree = "<group>"; };
-		7C73C69C1C2619E100AEF6CA /* Socket.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Socket.swift; sourceTree = "<group>"; };
-		7C73C69D1C2619E100AEF6CA /* String+Misc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+Misc.swift"; sourceTree = "<group>"; };
-		7C76B6DD1D2BB1050030FC98 /* Scopes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Scopes.swift; sourceTree = "<group>"; };
-		7C76B6E21D2BB1320030FC98 /* Process.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Process.swift; sourceTree = "<group>"; };
+		7C76B6EA1D2C44F30030FC98 /* DemoServer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DemoServer.swift; sourceTree = "<group>"; };
+		7C76B6EB1D2C44F30030FC98 /* File.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = "<group>"; };
+		7C76B6EC1D2C44F30030FC98 /* Files.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Files.swift; sourceTree = "<group>"; };
+		7C76B6ED1D2C44F30030FC98 /* HttpParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpParser.swift; sourceTree = "<group>"; };
+		7C76B6EE1D2C44F30030FC98 /* HttpRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpRequest.swift; sourceTree = "<group>"; };
+		7C76B6EF1D2C44F30030FC98 /* HttpResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpResponse.swift; sourceTree = "<group>"; };
+		7C76B6F01D2C44F30030FC98 /* HttpRouter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpRouter.swift; sourceTree = "<group>"; };
+		7C76B6F11D2C44F30030FC98 /* HttpServer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpServer.swift; sourceTree = "<group>"; };
+		7C76B6F21D2C44F30030FC98 /* HttpServerIO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpServerIO.swift; sourceTree = "<group>"; };
+		7C76B6F31D2C44F30030FC98 /* Process.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Process.swift; sourceTree = "<group>"; };
+		7C76B6F41D2C44F30030FC98 /* Scopes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Scopes.swift; sourceTree = "<group>"; };
+		7C76B6F51D2C44F30030FC98 /* Socket.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Socket.swift; sourceTree = "<group>"; };
+		7C76B6F61D2C44F30030FC98 /* String+BASE64.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+BASE64.swift"; sourceTree = "<group>"; };
+		7C76B6F71D2C44F30030FC98 /* String+Misc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+Misc.swift"; sourceTree = "<group>"; };
+		7C76B6F81D2C44F30030FC98 /* String+SHA1.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+SHA1.swift"; sourceTree = "<group>"; };
+		7C76B6F91D2C44F30030FC98 /* WebSockets.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebSockets.swift; sourceTree = "<group>"; };
 		7C839B6E19422CFF003A6950 /* SwifterSampleiOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwifterSampleiOS.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		7CA4813B19A2EA8D0030B30D /* SwifterSampleOSX */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = SwifterSampleOSX; sourceTree = BUILT_PRODUCTS_DIR; };
 		7CA4813D19A2EA8D0030B30D /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
 		7CB102DF1A17381D00CBA3B4 /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo.png; sourceTree = "<group>"; };
-		7CC0F8C81C50136B00B65A94 /* Files.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Files.swift; sourceTree = "<group>"; };
-		7CC0F8CB1C5014A200B65A94 /* WebSockets.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebSockets.swift; sourceTree = "<group>"; };
 		7CCD875C1C66099B0068099B /* SwifteriOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwifteriOSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		7CCD87601C66099B0068099B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		7CCD876D1C660B250068099B /* SwifterTestsHttpParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwifterTestsHttpParser.swift; sourceTree = "<group>"; };
 		7CCD876E1C660B250068099B /* SwifterTestsStringExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwifterTestsStringExtensions.swift; sourceTree = "<group>"; };
 		7CCD87791C660EA30068099B /* SwifterOSXTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwifterOSXTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		7CCD877D1C660EA30068099B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
-		7CCD87861C676EE50068099B /* File.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = "<group>"; };
 		7CDAB80C1BE2A1D400C8A977 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
 		7CDAB80E1BE2A1D400C8A977 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
 		7CDAB80F1BE2A1D400C8A977 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
 		7CDAB8101BE2A1D400C8A977 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		7CDAB8111BE2A1D400C8A977 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
-		7CEAF86F1C14B2B5003252DE /* Package.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -217,12 +211,35 @@
 			path = SwifterMac;
 			sourceTree = "<group>";
 		};
+		7C76B6E91D2C44F30030FC98 /* Sources */ = {
+			isa = PBXGroup;
+			children = (
+				7C76B6EA1D2C44F30030FC98 /* DemoServer.swift */,
+				7C76B6EB1D2C44F30030FC98 /* File.swift */,
+				7C76B6EC1D2C44F30030FC98 /* Files.swift */,
+				7C76B6ED1D2C44F30030FC98 /* HttpParser.swift */,
+				7C76B6EE1D2C44F30030FC98 /* HttpRequest.swift */,
+				7C76B6EF1D2C44F30030FC98 /* HttpResponse.swift */,
+				7C76B6F01D2C44F30030FC98 /* HttpRouter.swift */,
+				7C76B6F11D2C44F30030FC98 /* HttpServer.swift */,
+				7C76B6F21D2C44F30030FC98 /* HttpServerIO.swift */,
+				7C76B6F31D2C44F30030FC98 /* Process.swift */,
+				7C76B6F41D2C44F30030FC98 /* Scopes.swift */,
+				7C76B6F51D2C44F30030FC98 /* Socket.swift */,
+				7C76B6F61D2C44F30030FC98 /* String+BASE64.swift */,
+				7C76B6F71D2C44F30030FC98 /* String+Misc.swift */,
+				7C76B6F81D2C44F30030FC98 /* String+SHA1.swift */,
+				7C76B6F91D2C44F30030FC98 /* WebSockets.swift */,
+			);
+			name = Sources;
+			path = ../Sources;
+			sourceTree = "<group>";
+		};
 		7C839B6519422CFF003A6950 = {
 			isa = PBXGroup;
 			children = (
-				7CEAF86F1C14B2B5003252DE /* Package.swift */,
+				7C76B6E91D2C44F30030FC98 /* Sources */,
 				7CA4815619A2EF2B0030B30D /* Resources */,
-				7CEAF84A1C14B29B003252DE /* Sources */,
 				7CCD876C1C660B250068099B /* SwifterTestsCommon */,
 				7CCD875D1C66099B0068099B /* SwifteriOSTests */,
 				7CCD877A1C660EA30068099B /* SwifterOSXTests */,
@@ -250,7 +267,6 @@
 		7CA4813C19A2EA8D0030B30D /* SwifterSampleOSX */ = {
 			isa = PBXGroup;
 			children = (
-				18E610A51BD6397D00B7D17A /* SwiftyJSON.swift */,
 				7CA4813D19A2EA8D0030B30D /* main.swift */,
 			);
 			path = SwifterSampleOSX;
@@ -303,29 +319,6 @@
 			path = SwifterSampleiOS;
 			sourceTree = "<group>";
 		};
-		7CEAF84A1C14B29B003252DE /* Sources */ = {
-			isa = PBXGroup;
-			children = (
-				7C73C6941C2619E100AEF6CA /* DemoServer.swift */,
-				7CC0F8C81C50136B00B65A94 /* Files.swift */,
-				7C76B6DD1D2BB1050030FC98 /* Scopes.swift */,
-				7CC0F8CB1C5014A200B65A94 /* WebSockets.swift */,
-				7C73C6961C2619E100AEF6CA /* HttpParser.swift */,
-				7C73C6971C2619E100AEF6CA /* HttpRequest.swift */,
-				7C73C6981C2619E100AEF6CA /* HttpResponse.swift */,
-				7C73C6991C2619E100AEF6CA /* HttpRouter.swift */,
-				7C73C69A1C2619E100AEF6CA /* HttpServer.swift */,
-				7C73C69B1C2619E100AEF6CA /* HttpServerIO.swift */,
-				7C73C69C1C2619E100AEF6CA /* Socket.swift */,
-				7CCD87861C676EE50068099B /* File.swift */,
-				7C73C69D1C2619E100AEF6CA /* String+Misc.swift */,
-				7C2BEC771C518B7C00B8EE90 /* String+SHA1.swift */,
-				7C1A2BFA1C5605F50026D3BF /* String+BASE64.swift */,
-				7C76B6E21D2BB1320030FC98 /* Process.swift */,
-			);
-			path = Sources;
-			sourceTree = "<group>";
-		};
 /* End PBXGroup section */
 
 /* Begin PBXHeadersBuildPhase section */
@@ -556,22 +549,22 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				7C2BEC791C5195EE00B8EE90 /* String+SHA1.swift in Sources */,
-				7C73C6AA1C261A2100AEF6CA /* DemoServer.swift in Sources */,
-				7C1A2BFB1C5605F50026D3BF /* String+BASE64.swift in Sources */,
-				7C73C6AC1C261A2100AEF6CA /* HttpParser.swift in Sources */,
-				7C73C6AD1C261A2100AEF6CA /* HttpRequest.swift in Sources */,
-				7C73C6AE1C261A2100AEF6CA /* HttpResponse.swift in Sources */,
-				7C76B6E31D2BB1320030FC98 /* Process.swift in Sources */,
-				7C73C6AF1C261A2100AEF6CA /* HttpRouter.swift in Sources */,
-				7CC0F8CC1C5014A200B65A94 /* WebSockets.swift in Sources */,
-				7C73C6B01C261A2100AEF6CA /* HttpServer.swift in Sources */,
-				7CCD87871C676EE50068099B /* File.swift in Sources */,
-				7C73C6B11C261A2100AEF6CA /* HttpServerIO.swift in Sources */,
-				7C73C6B21C261A2100AEF6CA /* Socket.swift in Sources */,
-				7C76B6DE1D2BB1050030FC98 /* Scopes.swift in Sources */,
-				7CC0F8C91C50136B00B65A94 /* Files.swift in Sources */,
-				7C73C6B31C261A2100AEF6CA /* String+Misc.swift in Sources */,
+				7C76B7171D2C45780030FC98 /* HttpResponse.swift in Sources */,
+				7C76B7211D2C45870030FC98 /* Scopes.swift in Sources */,
+				7C76B71F1D2C45840030FC98 /* Process.swift in Sources */,
+				7C76B7131D2C45730030FC98 /* HttpParser.swift in Sources */,
+				7C76B7271D2C458F0030FC98 /* String+Misc.swift in Sources */,
+				7C76B72B1D2C45940030FC98 /* WebSockets.swift in Sources */,
+				7C76B71B1D2C457E0030FC98 /* HttpServer.swift in Sources */,
+				7C76B7151D2C45760030FC98 /* HttpRequest.swift in Sources */,
+				7C76B70D1D2C456A0030FC98 /* DemoServer.swift in Sources */,
+				7C76B70F1D2C456D0030FC98 /* File.swift in Sources */,
+				7C76B7231D2C45890030FC98 /* Socket.swift in Sources */,
+				7C76B71D1D2C45820030FC98 /* HttpServerIO.swift in Sources */,
+				7C76B7111D2C45710030FC98 /* Files.swift in Sources */,
+				7C76B7191D2C457C0030FC98 /* HttpRouter.swift in Sources */,
+				7C76B7291D2C45920030FC98 /* String+SHA1.swift in Sources */,
+				7C76B7251D2C458C0030FC98 /* String+BASE64.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -579,22 +572,22 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				7C2BEC7A1C5195F200B8EE90 /* String+SHA1.swift in Sources */,
-				7C73C6B51C261A2600AEF6CA /* DemoServer.swift in Sources */,
-				7C1A2BFC1C5605F50026D3BF /* String+BASE64.swift in Sources */,
-				7C73C6B71C261A2600AEF6CA /* HttpParser.swift in Sources */,
-				7C73C6B81C261A2600AEF6CA /* HttpRequest.swift in Sources */,
-				7C73C6B91C261A2600AEF6CA /* HttpResponse.swift in Sources */,
-				7C76B6E41D2BB1320030FC98 /* Process.swift in Sources */,
-				7C73C6BA1C261A2600AEF6CA /* HttpRouter.swift in Sources */,
-				7CC0F8CD1C5014A200B65A94 /* WebSockets.swift in Sources */,
-				7C73C6BB1C261A2600AEF6CA /* HttpServer.swift in Sources */,
-				7CCD87881C676EE50068099B /* File.swift in Sources */,
-				7C73C6BC1C261A2600AEF6CA /* HttpServerIO.swift in Sources */,
-				7C73C6BD1C261A2600AEF6CA /* Socket.swift in Sources */,
-				7C76B6DF1D2BB1050030FC98 /* Scopes.swift in Sources */,
-				7CC0F8CA1C50136B00B65A94 /* Files.swift in Sources */,
-				7C73C6BE1C261A2600AEF6CA /* String+Misc.swift in Sources */,
+				7C76B7181D2C45790030FC98 /* HttpResponse.swift in Sources */,
+				7C76B7221D2C45870030FC98 /* Scopes.swift in Sources */,
+				7C76B7201D2C45840030FC98 /* Process.swift in Sources */,
+				7C76B7141D2C45730030FC98 /* HttpParser.swift in Sources */,
+				7C76B7281D2C458F0030FC98 /* String+Misc.swift in Sources */,
+				7C76B72C1D2C45950030FC98 /* WebSockets.swift in Sources */,
+				7C76B71C1D2C457E0030FC98 /* HttpServer.swift in Sources */,
+				7C76B7161D2C45760030FC98 /* HttpRequest.swift in Sources */,
+				7C76B70E1D2C456B0030FC98 /* DemoServer.swift in Sources */,
+				7C76B7101D2C456D0030FC98 /* File.swift in Sources */,
+				7C76B7241D2C458A0030FC98 /* Socket.swift in Sources */,
+				7C76B71E1D2C45820030FC98 /* HttpServerIO.swift in Sources */,
+				7C76B7121D2C45710030FC98 /* Files.swift in Sources */,
+				7C76B71A1D2C457C0030FC98 /* HttpRouter.swift in Sources */,
+				7C76B72A1D2C45920030FC98 /* String+SHA1.swift in Sources */,
+				7C76B7261D2C458D0030FC98 /* String+BASE64.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -604,7 +597,6 @@
 			files = (
 				7C73C6921C26179C00AEF6CA /* AppDelegate.swift in Sources */,
 				7CDAB8161BE2A1D400C8A977 /* ViewController.swift in Sources */,
-				7C2BEC781C518B7C00B8EE90 /* String+SHA1.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -612,7 +604,6 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				7C73C6911C2615FE00AEF6CA /* SwiftyJSON.swift in Sources */,
 				7CA4813E19A2EA8D0030B30D /* main.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -622,7 +613,6 @@
 			buildActionMask = 2147483647;
 			files = (
 				7CCD87701C660B250068099B /* SwifterTestsHttpParser.swift in Sources */,
-				7C76B6E51D2BB1320030FC98 /* Process.swift in Sources */,
 				7C4785E91C71D15600A9FE73 /* SwifterTestsWebSocketSession.swift in Sources */,
 				7CCD87721C660B250068099B /* SwifterTestsStringExtensions.swift in Sources */,
 			);
@@ -633,7 +623,6 @@
 			buildActionMask = 2147483647;
 			files = (
 				7CCD87841C660ED60068099B /* SwifterTestsHttpParser.swift in Sources */,
-				7C76B6E61D2BB1320030FC98 /* Process.swift in Sources */,
 				7C4785EA1C71D15600A9FE73 /* SwifterTestsWebSocketSession.swift in Sources */,
 				7CCD87851C660ED60068099B /* SwifterTestsStringExtensions.swift in Sources */,
 			);

+ 0 - 0
Swifter.xcodeproj/project.xcworkspace/contents.xcworkspacedata → XCode/Swifter.xcodeproj/project.xcworkspace/contents.xcworkspacedata


+ 0 - 0
Swifter.xcodeproj/xcshareddata/xcschemes/SwifterMac.xcscheme → XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifterMac.xcscheme


+ 0 - 0
Swifter.xcodeproj/xcshareddata/xcschemes/SwifteriOS.xcscheme → XCode/Swifter.xcodeproj/xcshareddata/xcschemes/SwifteriOS.xcscheme


+ 0 - 0
SwifterMac/Info.plist → XCode/SwifterMac/Info.plist


+ 0 - 0
SwifterMac/SwifterMac.h → XCode/SwifterMac/SwifterMac.h


+ 0 - 0
SwifterOSXTests/Info.plist → XCode/SwifterOSXTests/Info.plist


+ 0 - 10
SwifterSampleOSX/main.swift → XCode/SwifterSampleOSX/main.swift

@@ -7,18 +7,8 @@
 import Foundation
 import Swifter
 
-
 do {
     let server = demoServer(try File.currentWorkingDirectory())
-    server["/SwiftyJSON"] = { request in
-        let js: JSON = ["return": "OK", "isItAJSON": true, "code" : 200]
-        return .OK(.Custom(js, { object in
-            guard let obj = object as? JSON, let rawString = obj.rawString() else {
-                throw SerializationError.InvalidObject
-            }
-            return rawString
-        }))
-    }
     server["/testAfterBaseRoute"] = { request in
         return .OK(.Html("ok !"))
     }

+ 0 - 0
SwifterSampleiOS/AppDelegate.swift → XCode/SwifterSampleiOS/AppDelegate.swift


+ 0 - 0
SwifterSampleiOS/Base.lproj/Main.storyboard → XCode/SwifterSampleiOS/Base.lproj/Main.storyboard


+ 0 - 0
SwifterSampleiOS/Images.xcassets/AppIcon.appiconset/Contents.json → XCode/SwifterSampleiOS/Images.xcassets/AppIcon.appiconset/Contents.json


+ 0 - 0
SwifterSampleiOS/Images.xcassets/LaunchImage.launchimage/Contents.json → XCode/SwifterSampleiOS/Images.xcassets/LaunchImage.launchimage/Contents.json


+ 0 - 0
SwifterSampleiOS/Info.plist → XCode/SwifterSampleiOS/Info.plist


+ 0 - 0
SwifterSampleiOS/Launch Screen.storyboard → XCode/SwifterSampleiOS/Launch Screen.storyboard


+ 0 - 0
SwifterSampleiOS/ViewController.swift → XCode/SwifterSampleiOS/ViewController.swift


+ 0 - 0
SwifterTestsCommon/SwifterTestsHttpParser.swift → XCode/SwifterTestsCommon/SwifterTestsHttpParser.swift


+ 0 - 0
SwifterTestsCommon/SwifterTestsStringExtensions.swift → XCode/SwifterTestsCommon/SwifterTestsStringExtensions.swift


+ 0 - 0
SwifterTestsCommon/SwifterTestsWebSocketSession.swift → XCode/SwifterTestsCommon/SwifterTestsWebSocketSession.swift


+ 0 - 0
SwifteriOS/SwifteriOS.h → XCode/SwifteriOS/SwifteriOS.h


+ 0 - 0
SwifteriOSTests/Info.plist → XCode/SwifteriOSTests/Info.plist