diff --git a/Example/FayeSwift.xcodeproj/project.pbxproj b/Example/FayeSwift.xcodeproj/project.pbxproj index d0cfc75..296f457 100644 --- a/Example/FayeSwift.xcodeproj/project.pbxproj +++ b/Example/FayeSwift.xcodeproj/project.pbxproj @@ -28,7 +28,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0FB02F967E53932A0EC5BD3A /* FayeSwift.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = FayeSwift.podspec; path = ../FayeSwift.podspec; sourceTree = ""; }; + 0FB02F967E53932A0EC5BD3A /* FayeSwift.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = FayeSwift.podspec; path = ../FayeSwift.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 184DB2AC7D39B8841A288465 /* Pods-FayeSwift_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FayeSwift_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example.release.xcconfig"; sourceTree = ""; }; 607FACD01AFB9204008FA782 /* FayeSwift_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FayeSwift_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -171,7 +171,6 @@ 607FACCD1AFB9204008FA782 /* Frameworks */, 607FACCE1AFB9204008FA782 /* Resources */, 21F82E0E26ACF051FC7532F7 /* [CP] Embed Pods Frameworks */, - 59B2329E5037A036C89F0500 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -191,7 +190,6 @@ 607FACE21AFB9204008FA782 /* Frameworks */, 607FACE31AFB9204008FA782 /* Resources */, 9E2A77B21E9E7A5C4BE35879 /* [CP] Embed Pods Frameworks */, - A81BF78875162EB729A72AA7 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -210,7 +208,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0720; + LastUpgradeCheck = 1130; ORGANIZATIONNAME = CocoaPods; TargetAttributes = { 607FACCF1AFB9204008FA782 = { @@ -226,7 +224,7 @@ }; buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "FayeSwift" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -270,13 +268,16 @@ files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-FayeSwift_Tests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; 21F82E0E26ACF051FC7532F7 /* [CP] Embed Pods Frameworks */ = { @@ -285,28 +286,18 @@ files = ( ); inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/FayeSwift/FayeSwift.framework", + "${BUILT_PRODUCTS_DIR}/Starscream/Starscream.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FayeSwift.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Starscream.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 59B2329E5037A036C89F0500 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 9E2A77B21E9E7A5C4BE35879 /* [CP] Embed Pods Frameworks */ = { @@ -315,28 +306,18 @@ files = ( ); inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/FayeSwift/FayeSwift.framework", + "${BUILT_PRODUCTS_DIR}/Starscream/Starscream.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FayeSwift.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Starscream.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - A81BF78875162EB729A72AA7 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; D398F2E44EC65E8B01959DBC /* [CP] Check Pods Manifest.lock */ = { @@ -345,13 +326,16 @@ files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-FayeSwift_Example-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -408,17 +392,28 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -453,17 +448,28 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -482,6 +488,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.3; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; VALIDATE_PRODUCT = YES; }; name = Release; @@ -496,7 +503,7 @@ MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -510,7 +517,7 @@ MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -528,7 +535,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FayeSwift_Example.app/FayeSwift_Example"; }; name = Debug; @@ -543,7 +550,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FayeSwift_Example.app/FayeSwift_Example"; }; name = Release; diff --git a/Example/FayeSwift.xcodeproj/xcshareddata/xcschemes/FayeSwift-Example.xcscheme b/Example/FayeSwift.xcodeproj/xcshareddata/xcschemes/FayeSwift-Example.xcscheme index 068ecf3..5149138 100644 --- a/Example/FayeSwift.xcodeproj/xcshareddata/xcschemes/FayeSwift-Example.xcscheme +++ b/Example/FayeSwift.xcodeproj/xcshareddata/xcschemes/FayeSwift-Example.xcscheme @@ -1,6 +1,6 @@ + + + + @@ -53,17 +62,6 @@ - - - - - - - - + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/FayeSwift/AppDelegate.swift b/Example/FayeSwift/AppDelegate.swift index 0347d3b..55ac64d 100644 --- a/Example/FayeSwift/AppDelegate.swift +++ b/Example/FayeSwift/AppDelegate.swift @@ -14,7 +14,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true } diff --git a/Example/FayeSwift/ViewController.swift b/Example/FayeSwift/ViewController.swift index f002014..2e85c17 100644 --- a/Example/FayeSwift/ViewController.swift +++ b/Example/FayeSwift/ViewController.swift @@ -11,89 +11,96 @@ import FayeSwift class ViewController: UIViewController, UITextFieldDelegate, FayeClientDelegate { - @IBOutlet weak var textField: UITextField! - @IBOutlet weak var textView: UITextView! - - /// Example FayeClient - let client:FayeClient = FayeClient(aFayeURLString: "ws://localhost:5222/faye", channel: "/cool") - - // MARK: - // MARK: Lifecycle - - override func viewDidLoad() { - super.viewDidLoad() - - client.delegate = self; - client.transportHeaders = ["X-Custom-Header": "Custom Value"] - client.connectToServer() + @IBOutlet weak var textField: UITextField! + @IBOutlet weak var textView: UITextView! + + /// Example FayeClient + let client:FayeClient = FayeClient(aFayeURLString: "ws://localhost:5222/faye", channel: "/cool") + + // MARK: + // MARK: Lifecycle - let channelBlock:ChannelSubscriptionBlock = {(messageDict) -> Void in - if let text = messageDict["text"] { - print("Here is the Block message: \(text)") - } + override func viewDidLoad() { + super.viewDidLoad() + + client.delegate = self; + client.transportHeaders = ["X-Custom-Header": "Custom Value"] + client.connectToServer() + + let channelBlock:ChannelSubscriptionBlock = {(messageDict) -> Void in + if let text = messageDict["text"] { + print("Here is the Block message: \(text)") + } + } + _ = client.subscribeToChannel("/awesome", block: channelBlock) + + let delayTime = DispatchTime.now() + Double(Int64(5 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC) + DispatchQueue.main.asyncAfter(deadline: delayTime) { + self.client.unsubscribeFromChannel("/awesome") + } + + DispatchQueue.main.asyncAfter(deadline: delayTime) { + let model = FayeSubscriptionModel(subscription: "/awesome", channel: .Subscribe, clientId: nil) + + _ = self.client.subscribeToChannel(model, block: { [unowned self] messages in + print("awesome response: \(messages)") + + self.client.sendPing("Ping".data(using: String.Encoding.utf8)!, completion: { + print("got pong") + }) + }) + } } - _ = client.subscribeToChannel("/awesome", block: channelBlock) - let delayTime = DispatchTime.now() + Double(Int64(5 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC) - DispatchQueue.main.asyncAfter(deadline: delayTime) { - self.client.unsubscribeFromChannel("/awesome") + // MARK: + // MARK: TextfieldDelegate + + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + client.sendMessage(["text" : textField.text!], channel: "/cool") + return false; } - - DispatchQueue.main.asyncAfter(deadline: delayTime) { - let model = FayeSubscriptionModel(subscription: "/awesome", clientId: nil) - - _ = self.client.subscribeToChannel(model, block: { [unowned self] messages in - print("awesome response: \(messages)") - - self.client.sendPing("Ping".data(using: String.Encoding.utf8)!, completion: { - print("got pong") - }) - }) + + // MARK: FayeClientDelegate + + func connectionFailed(_ client: FayeClient) { + print("Failed to connect to Faye server!") } - } - - // MARK: - // MARK: TextfieldDelegate - func textFieldShouldReturn(_ textField: UITextField) -> Bool { - client.sendMessage(["text" : textField.text!], channel: "/cool") - return false; - } - - // MARK: - // MARK: FayeClientDelegate - - func connectedtoser(_ client: FayeClient) { - print("Connected to Faye server") - } - - func connectionFailed(_ client: FayeClient) { - print("Failed to connect to Faye server!") - } - - func disconnectedFromServer(_ client: FayeClient) { - print("Disconnected from Faye server") - } - - func didSubscribeToChannel(_ client: FayeClient, channel: String) { - print("Subscribed to channel \(channel)") - } - - func didUnsubscribeFromChannel(_ client: FayeClient, channel: String) { - print("Unsubscribed from channel \(channel)") - } - - func subscriptionFailedWithError(_ client: FayeClient, error: subscriptionError) { - print("Subscription failed") - } - - func messageReceived(_ client: FayeClient, messageDict: NSDictionary, channel: String) { - if let text = messageDict["text"] { - print("Here is the message: \(text)") + func disconnectedFromServer(_ client: FayeClient) { + print("Disconnected from Faye server") + } + + func didSubscribeToChannel(_ client: FayeClient, channel: String) { + print("Subscribed to channel \(channel)") + } + + func didUnsubscribeFromChannel(_ client: FayeClient, channel: String) { + print("Unsubscribed from channel \(channel)") + } + + func subscriptionFailedWithError(_ client: FayeClient, error: subscriptionError) { + print("Subscription failed") + } + + func messageReceived(_ client: FayeClient, messageDict: NSDictionary, channel: String) { + if let text = messageDict["text"] { + print("Here is the message: \(text)") + } + } + + func pongReceived(_ client: FayeClient) { + print("pong") + } + + func pingReceived(_ client: FayeClient) { + print("ping") + } + + func connectedToServer(_ client: FayeClient) { + print("Successfully connected") + } + + func fayeClientError(_ client: FayeClient, error: NSError) { + print("Failed to connect with error: \(error)") } - } - - func pongReceived(_ client: FayeClient) { - print("pong") - } } diff --git a/Example/Podfile.lock b/Example/Podfile.lock index cdd5614..c4efb59 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,22 +1,23 @@ PODS: - - FayeSwift (0.2.0): - - Starscream (~> 2.0) - - SwiftyJSON (~> 3.1) - - Starscream (2.0.2) - - SwiftyJSON (3.1.3) + - FayeSwift (0.4.0): + - Starscream (~> 4.0.0) + - Starscream (4.0.0) DEPENDENCIES: - FayeSwift (from `../`) +SPEC REPOS: + https://github.com/CocoaPods/Specs.git: + - Starscream + EXTERNAL SOURCES: FayeSwift: :path: "../" SPEC CHECKSUMS: - FayeSwift: b7889c3df7d9b37fa88253a4c9fbb6fcb4404993 - Starscream: 6c135a34e0a6e60cedaa0b30db67a4c05cf7cd38 - SwiftyJSON: 38a8ea2006779c0fc4c310cb2ee8195327740faf + FayeSwift: b9c1316dd967a51befe22e1ec0faff6cc914955e + Starscream: 04b26f02727e10a002e6b5d21b188ba0d049910b PODFILE CHECKSUM: cda739a33c3a43c81b405d9eee2a84c5b9d19f1b -COCOAPODS: 1.1.1 +COCOAPODS: 1.8.4 diff --git a/Example/Pods/Local Podspecs/FayeSwift.podspec.json b/Example/Pods/Local Podspecs/FayeSwift.podspec.json index 5836156..ebf2948 100644 --- a/Example/Pods/Local Podspecs/FayeSwift.podspec.json +++ b/Example/Pods/Local Podspecs/FayeSwift.podspec.json @@ -1,6 +1,6 @@ { "name": "FayeSwift", - "version": "0.2.0", + "version": "0.4.0", "summary": "A pure Swift Faye (Bayeux) Client", "description": "A Pure Swift Client Library for the Faye (Bayeux/Comet) Pub-Sub messaging server.\nThis client has been tested with the Faye (http://faye.jcoglan.com) implementation of the\nBayeux protocol. Currently only supports Websocket transport.", "homepage": "https://github.com/hamin/FayeSwift", @@ -10,22 +10,19 @@ }, "source": { "git": "https://github.com/hamin/FayeSwift.git", - "tag": "0.2.0" + "tag": "0.4.0" }, "social_media_url": "https://twitter.com/harisamin", "requires_arc": true, "platforms": { - "osx": "10.9", + "osx": "10.10", "ios": "8.0", "tvos": "9.0" }, "source_files": "Sources/*.swift", "dependencies": { "Starscream": [ - "~> 2.0" - ], - "SwiftyJSON": [ - "~> 3.1" + "~> 4.0.0" ] } } diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index cdd5614..c4efb59 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,22 +1,23 @@ PODS: - - FayeSwift (0.2.0): - - Starscream (~> 2.0) - - SwiftyJSON (~> 3.1) - - Starscream (2.0.2) - - SwiftyJSON (3.1.3) + - FayeSwift (0.4.0): + - Starscream (~> 4.0.0) + - Starscream (4.0.0) DEPENDENCIES: - FayeSwift (from `../`) +SPEC REPOS: + https://github.com/CocoaPods/Specs.git: + - Starscream + EXTERNAL SOURCES: FayeSwift: :path: "../" SPEC CHECKSUMS: - FayeSwift: b7889c3df7d9b37fa88253a4c9fbb6fcb4404993 - Starscream: 6c135a34e0a6e60cedaa0b30db67a4c05cf7cd38 - SwiftyJSON: 38a8ea2006779c0fc4c310cb2ee8195327740faf + FayeSwift: b9c1316dd967a51befe22e1ec0faff6cc914955e + Starscream: 04b26f02727e10a002e6b5d21b188ba0d049910b PODFILE CHECKSUM: cda739a33c3a43c81b405d9eee2a84c5b9d19f1b -COCOAPODS: 1.1.1 +COCOAPODS: 1.8.4 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 7db9e25..34fb6bb 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,1105 +7,1046 @@ objects = { /* Begin PBXBuildFile section */ - 01491BBA557B2F18B2A77192743E3E55 /* SwiftyJSON-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DCD25231745CBB7A0DE8AE144F32C35 /* SwiftyJSON-dummy.m */; }; - 026017E12DAB48A922244C71A63253D0 /* Starscream-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D47E6B74B427A4904D75990D1C34E829 /* Starscream-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 12A2D6DEF558554F285FBB6A2196E202 /* Pods-FayeSwift_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 06B16C30B7CF62C246F4DD2B6BA325D2 /* Pods-FayeSwift_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 16C3627510AB6B698291B30407553A5D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF83ABEF1A458CAE5372C3E2E46D918F /* Foundation.framework */; }; - 1AF8A2644E64066D72B7AE1ED35E042E /* FayeClient+Parsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD6E1ADC55716BEA0CA275460382B07D /* FayeClient+Parsing.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2140E1D04E961AF703FD04D54FF8C740 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF83ABEF1A458CAE5372C3E2E46D918F /* Foundation.framework */; }; - 2641943D2AB25D845A907E751D0D4A0E /* FayeClient+Transport.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDECAEB5EE9FA1ABB438BF7BFA54A873 /* FayeClient+Transport.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 372A1E8811704945874EB18F7BD1309F /* FayeClientDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C951632446E53D8608098AA9AE5EDEA /* FayeClientDelegate.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4395CC6B51E36E7FA9DF24986CB85D58 /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DA424137F7F26626CB88BD77A99423B /* StringExtensions.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 53956DED61FE62732C9218A7A387BC00 /* SwiftyJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A1314F41D4AF302873CCAE4DF95096E /* SwiftyJSON.framework */; }; - 5C79AABB8B872CDFC3596A03DA50F50F /* FayeSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D3A7795CDA243AB07B1664FEE1544038 /* FayeSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 603A236E27FDBCDDDC245C7949FAC4AB /* Pods-FayeSwift_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DCE2224000629085D044E4A5FDB2710 /* Pods-FayeSwift_Tests-dummy.m */; }; - 630775D47B4762F060BF09A7AD3AD9F2 /* SwiftyJSON-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B923F40E09322629BC57536AFBDAB00 /* SwiftyJSON-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 66F8B4E224873FB0B03A14FF6D5055DA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF83ABEF1A458CAE5372C3E2E46D918F /* Foundation.framework */; }; - 819CD987E43CF9B00A0BE165B3144C21 /* Pods-FayeSwift_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FE9E957D59ADA0A662E4B8C1A7BD7E2 /* Pods-FayeSwift_Example-dummy.m */; }; - 888BD35738BB6F56062233497B82CEA4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF83ABEF1A458CAE5372C3E2E46D918F /* Foundation.framework */; }; - 8F7F7274F17B1CF2A00BED441F5CFD67 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF83ABEF1A458CAE5372C3E2E46D918F /* Foundation.framework */; }; - 9590095A7427348F72D50958E6DF569D /* FayeClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3144C4726BB0EB476A794EEFC0B2F26 /* FayeClient.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 97E28C082763F8A1B9DF116332FE45A5 /* FayeSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F23ED994CFBB0F9B07BF334EA7FF240 /* FayeSwift-dummy.m */; }; - A3F622749F008AB61E99EF439E3B7551 /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87D64F48FA18233694918281C87E0266 /* WebSocket.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - AC29BC38767C449B4173F44C53632135 /* Pods-FayeSwift_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 10E4A21EDDC41F94B30C17F38403E413 /* Pods-FayeSwift_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B4F045C4EB5BA94B75966419EB72662A /* SSLSecurity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38A444149F18F886FD0A1E23B45D6671 /* SSLSecurity.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B715F8A02147DC9AF882D4E8B8CA03A5 /* WebsocketTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DA092BAC435FAC54B26652A4967BBC2 /* WebsocketTransport.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BD0EEEBB061534E4B0AA21C29937F7E9 /* FayeClient+Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 040DEA860EC7FF25C6B8F9F0C5AE8073 /* FayeClient+Helper.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C96024BA34EFE5DFB81CAA301E6CBF9D /* SwiftyJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0813DA1F91E6465D940389B245DB41E4 /* SwiftyJSON.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D7C3BD0F56BE895E0425738268F11494 /* NSError+Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24295EB91477AACF5542D54C350C5715 /* NSError+Helper.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D82013AA00D169E2324113D1EA177494 /* FayeClient+Bayuex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00691AB4D533EDE30C5370EEE0AE7074 /* FayeClient+Bayuex.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DB619B3DA5D1A31A839B17491D9AB6CF /* Starscream.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E94F4BAAE418F28A0730CC56D7FACFF /* Starscream.framework */; }; - DF00F790990FE2A87CACDD519DA5FAA2 /* FayeSubscriptionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E2414E53B957CFF4E6F6E82CECEFA47 /* FayeSubscriptionModel.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EA58C7FB9E131FA20044D726C8634078 /* FayeClient+Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0DE0C357228154269715152013E357E /* FayeClient+Action.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F13620786093149885BC1C94F8AE9FB9 /* Transport.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0700FD7F6575455C46E83723884C015 /* Transport.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F9073136443690E223D545CD2FF138B0 /* FayeClient+Subscriptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AC895133B34E9D0675395BA526347A6 /* FayeClient+Subscriptions.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FED7F96749B4ACB6DAF206513C945CA9 /* Starscream-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 18C6718FA411202146721CBD6539BA6A /* Starscream-dummy.m */; }; + 0A3491AACF3B030E58B0D85DE94F9A77 /* FayeClient+Parsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EB69BC9BBF2B384084E0A128B4ED7BA /* FayeClient+Parsing.swift */; }; + 0BE11EC491137918A9DF1EBF7F8DA330 /* FayeSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CF1D16B5F6734884D1A2AA0A95510960 /* FayeSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11125B36965E6888DCB67E1D81AFF401 /* Pods-FayeSwift_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 74CF4E2A192377428C5F06ECC9E8FA6C /* Pods-FayeSwift_Tests-dummy.m */; }; + 124C81DB033D760FF13720B7DAF7EB72 /* Server.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACEC12C1CB4357C633347ECB15BFB3B5 /* Server.swift */; }; + 17BA7C9EF8E08E7C72C31C2B0C050AD3 /* Framer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B469C9443C7A8332A92D93ECC1994F06 /* Framer.swift */; }; + 36F8640866D196BA4554E1CF36C1C7C5 /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = F12667FFFCB6455C3AC68BD65809B063 /* WebSocket.swift */; }; + 3C9AE0D0989200C0F066380910A49B43 /* FayeClientDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A85EB7AD70AF154A65E123A6E977FB4F /* FayeClientDelegate.swift */; }; + 409FFD09F7C2AB1A2E3022C29E47AEBC /* FoundationHTTPServerHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F2F3AD59FADDCA9533C204CFDF5867 /* FoundationHTTPServerHandler.swift */; }; + 40D091CB32422C4223C2D860BF09AB75 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DBB895F616DD1C4C7C1587261E4EBE5D /* Foundation.framework */; }; + 4118BD130476632693D8D681D64C7BDD /* Transport.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97F6DC319A077725FE3D3805D810EE3 /* Transport.swift */; }; + 4AACE513E124D555D1DAD606417C9752 /* StringHTTPHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3C1CE0D417884E7034373A7E8F70AEE /* StringHTTPHandler.swift */; }; + 4CFA72BC9AE59D1D28BEB9CF5B3B99CB /* Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D86F52B90B39CFACAE37DB765E30F4F /* Compression.swift */; }; + 4D17A29457AF97C39E46C715807B8FBB /* Starscream-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D19B7EC27FA15B2300013D7A82983442 /* Starscream-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 55E5C4F8E92D2874B86296CCF24D5CA6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DBB895F616DD1C4C7C1587261E4EBE5D /* Foundation.framework */; }; + 5AE8C8FFA58A98FB2EF5D929AD97CC48 /* NSError+Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3B3095DAD917854C0A3E374EA5BE89F /* NSError+Helper.swift */; }; + 6AB74EEBB2F512FBC6DA877C7229BF29 /* Pods-FayeSwift_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B0D1A2F55D87666017D56F16D5671E34 /* Pods-FayeSwift_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7053B1CF926C531F5CB324BA89A17054 /* Engine.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAE24906F50C62DF73861EB94878B3E1 /* Engine.swift */; }; + 707CCBA3E88283A2484AB89D01BB133F /* FayeClient+Transport.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07C34E68D9E43E3211E1DE86B1637BA /* FayeClient+Transport.swift */; }; + 769822593034E557EE0F4BBDE348010C /* FayeSubscriptionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 818B50B64E2C3E09C96ABBA95CA3D0C5 /* FayeSubscriptionModel.swift */; }; + 78683E4E8860467F8B67989CDC76B0E5 /* Starscream-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E51930C99B40B3CDCAE9033D4542611 /* Starscream-dummy.m */; }; + 7CE012168FD8F0965F8901B0029627FB /* WSEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB589DE2B64A840E0ECC99F8272D61F5 /* WSEngine.swift */; }; + 852A24A518E75BBFBEA4AB477C7C7B20 /* FayeClient+Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6288E7ED2202C227D9C958C0FB9ED2DA /* FayeClient+Helper.swift */; }; + 8672F7C0F34DA7E604A50E31C5BA74A9 /* WSCompression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0912441B3D68024A988E3646C03B9C3C /* WSCompression.swift */; }; + 96B137446187D6B76049502165F9B255 /* FoundationTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73FEC6A7A0CAD1E0E51A64E7AAB383E1 /* FoundationTransport.swift */; }; + A1B3238EEF18EF8504E1A2B18B479930 /* Data+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87AFDC947B6A78483A044B13CD643692 /* Data+Extensions.swift */; }; + A8C35B96DD9A45E079F633C82A88F7A0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DBB895F616DD1C4C7C1587261E4EBE5D /* Foundation.framework */; }; + A94CEE7B00FB102284B14D280DCE8911 /* Pods-FayeSwift_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5408A92C70DD1D719AD288C51BA3EDE7 /* Pods-FayeSwift_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B0B154E4BFA108C8EF088F0356A467CB /* FayeClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94BBC1492D6764F1510A111F3BBAB68D /* FayeClient.swift */; }; + B81097DEBCF361189800556FB949DBE9 /* Pods-FayeSwift_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 702ED4E00C35B47376D617A4E4BF3CE9 /* Pods-FayeSwift_Example-dummy.m */; }; + B87DD765AA71CC66B9D882C0C2FF8C13 /* NativeEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6C718EF9BA76CE1CD7230F4AC227FB4 /* NativeEngine.swift */; }; + CC270E7D68EDF963C16A80ECD29ADA00 /* FayeClient+Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = 650D755CE10E84D017B0C835DAD24E8C /* FayeClient+Action.swift */; }; + D283138A651C16A9FBA92A44351FA220 /* FrameCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5506D7C7E94836DA1634D95E0E9A2123 /* FrameCollector.swift */; }; + D91D98E11D6235C6729CF8A8A6CFCD4D /* Transport.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC20F6EF8AB486CB20AD946CBA6855F /* Transport.swift */; }; + E0738107A218CC695CD03194FE7CD79F /* Starscream.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3319CBE6BF16B5B2366BDE834B663B5E /* Starscream.framework */; }; + E8463FBD16B018470C5254943B1A9E5D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DBB895F616DD1C4C7C1587261E4EBE5D /* Foundation.framework */; }; + E8AA269278FDBCA618B4441AFC303B1C /* TCPTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22680B5A2B7A2EFD73302D95C85E8833 /* TCPTransport.swift */; }; + EA939E57D1B2125ACFFA6FEBA0AE1C09 /* WebSocketServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02836A08BC2703834C57A6EA9CD900CC /* WebSocketServer.swift */; }; + EAEA2DA5EB9BEC82474ADDEF2595119E /* FayeClient+Subscriptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D34D8024B10C3F83EDCEF25D8F85B0AB /* FayeClient+Subscriptions.swift */; }; + EC1A78BDEFB0746B58A03929039A22DA /* FoundationHTTPHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4566B1E635A9AC2080E7B264F5E9DBFC /* FoundationHTTPHandler.swift */; }; + F000BBEF6E0EAA1C58CD157003030497 /* FoundationSecurity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34F81A2BC80C48F071AF52010E8A0ABE /* FoundationSecurity.swift */; }; + F386CB7AD9FE43FE75F19B84E69B2C3F /* HTTPHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61F3729F21AAE38EEB3F59EE1EA24DCA /* HTTPHandler.swift */; }; + F93433CB404502EAD9D02592A76F26C2 /* Security.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2735F9BC0C5EE710F0FEB44E3511FE8 /* Security.swift */; }; + FBAE6EAE5BAE3504F0ADA0932176ECB9 /* FayeClient+Bayuex.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA844D644FE81F2CBF57620FD70E9DC0 /* FayeClient+Bayuex.swift */; }; + FC1EDDEB048757B367BBDC4D82ECA408 /* WebsocketTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = C84486F09D0372EA4EB43FB741A6B177 /* WebsocketTransport.swift */; }; + FF4AB4E97F669DE6874684B3964E0F3C /* FayeSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 25D5D3962EE6A70E26DB6EACFD24017A /* FayeSwift-dummy.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0E2E944578DFD11725AE03E57A2F5E40 /* PBXContainerItemProxy */ = { + 2775B3BFD89D2BD3E8C8F5EC2FC6E606 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5C1F57BFFCD92868AF3442E38186A537; - remoteInfo = SwiftyJSON; - }; - 27129EF77D9CAC29F1151EC75DB48940 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = BCC8AE0600D381881B2B45F29D3A3294; - remoteInfo = Starscream; - }; - 42672EE0E914C25799C038C3FFE417CC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = BCC8AE0600D381881B2B45F29D3A3294; + remoteGlobalIDString = 9B78EE4AF6AE03E79D88886319853FF7; remoteInfo = Starscream; }; - 5C2824D1A9A59FC7E0807982E563883C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5C48D6CAB4FBFA5BB8EFCD0C0947DF9D; - remoteInfo = FayeSwift; - }; - 663722FA80FCCEA51B761DBCF6962820 /* PBXContainerItemProxy */ = { + 6F1058A8B60352EF523473FC4637C180 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5C48D6CAB4FBFA5BB8EFCD0C0947DF9D; + remoteGlobalIDString = 5E551DD8B190AB276724C510971C365C; remoteInfo = FayeSwift; }; - 906B0FC7D35C414F5BBE0F7DB11C519B /* PBXContainerItemProxy */ = { + 7C8192EF2F05D91E3A42F22B15B2717A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5C1F57BFFCD92868AF3442E38186A537; - remoteInfo = SwiftyJSON; + remoteGlobalIDString = 9B78EE4AF6AE03E79D88886319853FF7; + remoteInfo = Starscream; }; - B4F58B425B8A192B0B43228D5BBD2FEF /* PBXContainerItemProxy */ = { + CC77485CCDFF17D37F20593A8AAEE8E1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = BCC8AE0600D381881B2B45F29D3A3294; + remoteGlobalIDString = 9B78EE4AF6AE03E79D88886319853FF7; remoteInfo = Starscream; }; - EF2196CF5D21430C9E4A6BAD3F790A0F /* PBXContainerItemProxy */ = { + F7EA3396C573BC562B28BC4ADDC208F6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5C1F57BFFCD92868AF3442E38186A537; - remoteInfo = SwiftyJSON; + remoteGlobalIDString = 5E551DD8B190AB276724C510971C365C; + remoteInfo = FayeSwift; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00691AB4D533EDE30C5370EEE0AE7074 /* FayeClient+Bayuex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "FayeClient+Bayuex.swift"; sourceTree = ""; }; - 01718434A0A3E9C872093B738FC33F54 /* FayeSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FayeSwift-prefix.pch"; sourceTree = ""; }; - 040DEA860EC7FF25C6B8F9F0C5AE8073 /* FayeClient+Helper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "FayeClient+Helper.swift"; sourceTree = ""; }; - 06B16C30B7CF62C246F4DD2B6BA325D2 /* Pods-FayeSwift_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-FayeSwift_Example-umbrella.h"; sourceTree = ""; }; - 0813DA1F91E6465D940389B245DB41E4 /* SwiftyJSON.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyJSON.swift; path = Source/SwiftyJSON.swift; sourceTree = ""; }; - 0AC895133B34E9D0675395BA526347A6 /* FayeClient+Subscriptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "FayeClient+Subscriptions.swift"; sourceTree = ""; }; - 0DA092BAC435FAC54B26652A4967BBC2 /* WebsocketTransport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = WebsocketTransport.swift; sourceTree = ""; }; - 0F0AD0445D068E37E1C8498A3BF6150D /* SwiftyJSON-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-prefix.pch"; sourceTree = ""; }; - 10E4A21EDDC41F94B30C17F38403E413 /* Pods-FayeSwift_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-FayeSwift_Tests-umbrella.h"; sourceTree = ""; }; - 14B7C4FE824293ABEEF592A7E71C4AFC /* Pods-FayeSwift_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FayeSwift_Example-frameworks.sh"; sourceTree = ""; }; - 154C747E02B1DCBD4885645B5878477F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 15765D47A6F3AC9E1A1D641D8B2ADB93 /* Pods-FayeSwift_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FayeSwift_Tests-acknowledgements.plist"; sourceTree = ""; }; - 18C6718FA411202146721CBD6539BA6A /* Starscream-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Starscream-dummy.m"; sourceTree = ""; }; - 1DCE2224000629085D044E4A5FDB2710 /* Pods-FayeSwift_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-FayeSwift_Tests-dummy.m"; sourceTree = ""; }; - 1EC0280E5CCCCD96F81E63B562E157DD /* SwiftyJSON.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyJSON.xcconfig; sourceTree = ""; }; - 24295EB91477AACF5542D54C350C5715 /* NSError+Helper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSError+Helper.swift"; sourceTree = ""; }; - 2692C5A026D6876DF0B8ED238232F2E6 /* Pods-FayeSwift_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FayeSwift_Example.release.xcconfig"; sourceTree = ""; }; - 2A14E4E75C0921B8190FF7805BDB1994 /* SwiftyJSON.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = SwiftyJSON.modulemap; sourceTree = ""; }; - 2D4EF06156597B9C0C9800347C3343FC /* Pods-FayeSwift_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-FayeSwift_Tests-acknowledgements.markdown"; sourceTree = ""; }; - 2FE9E957D59ADA0A662E4B8C1A7BD7E2 /* Pods-FayeSwift_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-FayeSwift_Example-dummy.m"; sourceTree = ""; }; - 37D9B4C012C932EED434E89C515FA960 /* Pods-FayeSwift_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-FayeSwift_Example.modulemap"; sourceTree = ""; }; - 38A444149F18F886FD0A1E23B45D6671 /* SSLSecurity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SSLSecurity.swift; path = Source/SSLSecurity.swift; sourceTree = ""; }; - 3E94F4BAAE418F28A0730CC56D7FACFF /* Starscream.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Starscream.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4471A15D81938B6C2CE6A161EC41FEED /* Pods-FayeSwift_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-FayeSwift_Example-acknowledgements.markdown"; sourceTree = ""; }; - 47C7E36F0C36BF6A9B7F26250E6F35CA /* Starscream-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-prefix.pch"; sourceTree = ""; }; - 47C81FB96686C0BE581D0FC3090AFC0D /* Starscream.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Starscream.xcconfig; sourceTree = ""; }; - 4885D84AE492246F7B92A35D5F4C2787 /* Pods-FayeSwift_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FayeSwift_Example-resources.sh"; sourceTree = ""; }; - 4AB2D41C9043F185BD735AC2476F72C6 /* Pods-FayeSwift_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FayeSwift_Tests.release.xcconfig"; sourceTree = ""; }; - 4E2414E53B957CFF4E6F6E82CECEFA47 /* FayeSubscriptionModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FayeSubscriptionModel.swift; sourceTree = ""; }; - 502DCC2B2A3C577BB0E225CE04E63571 /* Pods_FayeSwift_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_FayeSwift_Tests.framework; path = "Pods-FayeSwift_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 5927E4C39F2970C28F9060D5EDF137B9 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 6B923F40E09322629BC57536AFBDAB00 /* SwiftyJSON-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-umbrella.h"; sourceTree = ""; }; - 6DA424137F7F26626CB88BD77A99423B /* StringExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = StringExtensions.swift; sourceTree = ""; }; - 6DCD25231745CBB7A0DE8AE144F32C35 /* SwiftyJSON-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyJSON-dummy.m"; sourceTree = ""; }; - 6E1FB52B709CB783F4109CA61174C28B /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 6F23ED994CFBB0F9B07BF334EA7FF240 /* FayeSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FayeSwift-dummy.m"; sourceTree = ""; }; - 6FA9ABBAFE65EA53C5AECD4FEF5902DE /* Pods_FayeSwift_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_FayeSwift_Example.framework; path = "Pods-FayeSwift_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 7B3AAC1CAA0FD33A1665A6CF0609129E /* FayeSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FayeSwift.xcconfig; sourceTree = ""; }; - 7C951632446E53D8608098AA9AE5EDEA /* FayeClientDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FayeClientDelegate.swift; sourceTree = ""; }; - 8617DDEB1D97E8945A823BA19722DD99 /* Starscream.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Starscream.framework; path = Starscream.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 87D64F48FA18233694918281C87E0266 /* WebSocket.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebSocket.swift; path = Source/WebSocket.swift; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9A1314F41D4AF302873CCAE4DF95096E /* SwiftyJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftyJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 9C1D30B972C48AC8BD0E88DA4DB9F743 /* FayeSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = FayeSwift.modulemap; sourceTree = ""; }; - AF83ABEF1A458CAE5372C3E2E46D918F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - B29C7FFE8D08A56E77C644C03000FC94 /* Pods-FayeSwift_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FayeSwift_Example-acknowledgements.plist"; sourceTree = ""; }; - B3144C4726BB0EB476A794EEFC0B2F26 /* FayeClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FayeClient.swift; sourceTree = ""; }; - B661AAF1FC01F5B9EB53567F4990C215 /* Pods-FayeSwift_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FayeSwift_Example.debug.xcconfig"; sourceTree = ""; }; - B9AF00E1C38081852D6E23B7C286C779 /* SwiftyJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwiftyJSON.framework; path = SwiftyJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B9BD316B84610E564DEC11C4F736BD36 /* Pods-FayeSwift_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FayeSwift_Tests-resources.sh"; sourceTree = ""; }; - BC51989923EA37E862F09C698F868947 /* FayeSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FayeSwift.framework; path = FayeSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C0700FD7F6575455C46E83723884C015 /* Transport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Transport.swift; sourceTree = ""; }; - C0DE0C357228154269715152013E357E /* FayeClient+Action.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "FayeClient+Action.swift"; sourceTree = ""; }; - CFB3E404A66EE13E14582416D200A72C /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D26B5E2282A330BE919FE4EFDFB738B3 /* Pods-FayeSwift_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FayeSwift_Tests.debug.xcconfig"; sourceTree = ""; }; - D3A7795CDA243AB07B1664FEE1544038 /* FayeSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FayeSwift-umbrella.h"; sourceTree = ""; }; - D47E6B74B427A4904D75990D1C34E829 /* Starscream-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-umbrella.h"; sourceTree = ""; }; - DD6E1ADC55716BEA0CA275460382B07D /* FayeClient+Parsing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "FayeClient+Parsing.swift"; sourceTree = ""; }; - DDECAEB5EE9FA1ABB438BF7BFA54A873 /* FayeClient+Transport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "FayeClient+Transport.swift"; sourceTree = ""; }; - E4E07C18061452192A8755C57422BE93 /* Pods-FayeSwift_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FayeSwift_Tests-frameworks.sh"; sourceTree = ""; }; - E6671F9532A947F40918CF9A0D44F70F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - ED0A84AABA966E6DE908E1D84ABB429E /* Starscream.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Starscream.modulemap; sourceTree = ""; }; - F3FCAA0DF279AAE5F2E8878F0749DD44 /* Pods-FayeSwift_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-FayeSwift_Tests.modulemap"; sourceTree = ""; }; + 02836A08BC2703834C57A6EA9CD900CC /* WebSocketServer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebSocketServer.swift; path = Sources/Server/WebSocketServer.swift; sourceTree = ""; }; + 04F2F3AD59FADDCA9533C204CFDF5867 /* FoundationHTTPServerHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FoundationHTTPServerHandler.swift; path = Sources/Framer/FoundationHTTPServerHandler.swift; sourceTree = ""; }; + 0912441B3D68024A988E3646C03B9C3C /* WSCompression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WSCompression.swift; path = Sources/Compression/WSCompression.swift; sourceTree = ""; }; + 10AC67941C2C7C7F27D9DA8B3004B74E /* Starscream.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Starscream.modulemap; sourceTree = ""; }; + 13F871721477871167420E510E6E3742 /* Pods_FayeSwift_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_FayeSwift_Example.framework; path = "Pods-FayeSwift_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1C6323085F674B9644697ADA3CC79ABD /* FayeSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FayeSwift-Info.plist"; sourceTree = ""; }; + 22680B5A2B7A2EFD73302D95C85E8833 /* TCPTransport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TCPTransport.swift; path = Sources/Transport/TCPTransport.swift; sourceTree = ""; }; + 25D5D3962EE6A70E26DB6EACFD24017A /* FayeSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FayeSwift-dummy.m"; sourceTree = ""; }; + 2E51930C99B40B3CDCAE9033D4542611 /* Starscream-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Starscream-dummy.m"; sourceTree = ""; }; + 2EB69BC9BBF2B384084E0A128B4ED7BA /* FayeClient+Parsing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FayeClient+Parsing.swift"; path = "Sources/FayeClient+Parsing.swift"; sourceTree = ""; }; + 3319CBE6BF16B5B2366BDE834B663B5E /* Starscream.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Starscream.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 34F81A2BC80C48F071AF52010E8A0ABE /* FoundationSecurity.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FoundationSecurity.swift; path = Sources/Security/FoundationSecurity.swift; sourceTree = ""; }; + 43DC7B0C07F699CCD23DCB53B28E7E83 /* Readme.md */ = {isa = PBXFileReference; includeInIndex = 1; path = Readme.md; sourceTree = ""; }; + 4566B1E635A9AC2080E7B264F5E9DBFC /* FoundationHTTPHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FoundationHTTPHandler.swift; path = Sources/Framer/FoundationHTTPHandler.swift; sourceTree = ""; }; + 528FBBFFC84FFBEF0E7DDF0982562E0B /* Pods-FayeSwift_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FayeSwift_Tests.release.xcconfig"; sourceTree = ""; }; + 5408A92C70DD1D719AD288C51BA3EDE7 /* Pods-FayeSwift_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-FayeSwift_Tests-umbrella.h"; sourceTree = ""; }; + 5506D7C7E94836DA1634D95E0E9A2123 /* FrameCollector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FrameCollector.swift; path = Sources/Framer/FrameCollector.swift; sourceTree = ""; }; + 5E6CC62AB0D140277E579CE5E18F1508 /* Pods-FayeSwift_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FayeSwift_Example-frameworks.sh"; sourceTree = ""; }; + 5F7F3D733E01300A4E277E94D7A39D09 /* Pods-FayeSwift_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FayeSwift_Tests-frameworks.sh"; sourceTree = ""; }; + 60BE70F6A7CDA17431FDDC70D47EE478 /* Starscream.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Starscream.xcconfig; sourceTree = ""; }; + 61F3729F21AAE38EEB3F59EE1EA24DCA /* HTTPHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HTTPHandler.swift; path = Sources/Framer/HTTPHandler.swift; sourceTree = ""; }; + 6288E7ED2202C227D9C958C0FB9ED2DA /* FayeClient+Helper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FayeClient+Helper.swift"; path = "Sources/FayeClient+Helper.swift"; sourceTree = ""; }; + 650D755CE10E84D017B0C835DAD24E8C /* FayeClient+Action.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FayeClient+Action.swift"; path = "Sources/FayeClient+Action.swift"; sourceTree = ""; }; + 6C8F4E9608DB652CEC72BFDD58678857 /* FayeSwift.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = FayeSwift.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 6E810AE5C04F854E8DFC92ACC290FA50 /* Pods-FayeSwift_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-FayeSwift_Example-acknowledgements.markdown"; sourceTree = ""; }; + 702ED4E00C35B47376D617A4E4BF3CE9 /* Pods-FayeSwift_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-FayeSwift_Example-dummy.m"; sourceTree = ""; }; + 73FEC6A7A0CAD1E0E51A64E7AAB383E1 /* FoundationTransport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FoundationTransport.swift; path = Sources/Transport/FoundationTransport.swift; sourceTree = ""; }; + 74CF4E2A192377428C5F06ECC9E8FA6C /* Pods-FayeSwift_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-FayeSwift_Tests-dummy.m"; sourceTree = ""; }; + 7DAD9B664EF4965431CCE924B1A86027 /* Pods-FayeSwift_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FayeSwift_Tests-acknowledgements.plist"; sourceTree = ""; }; + 7DCFC525E0C4FB7B05B9DD90891FD2E9 /* Pods-FayeSwift_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-FayeSwift_Tests-acknowledgements.markdown"; sourceTree = ""; }; + 803B043628E27E9B05B3949999D24303 /* Pods_FayeSwift_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_FayeSwift_Tests.framework; path = "Pods-FayeSwift_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 818B50B64E2C3E09C96ABBA95CA3D0C5 /* FayeSubscriptionModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FayeSubscriptionModel.swift; path = Sources/FayeSubscriptionModel.swift; sourceTree = ""; }; + 87AFDC947B6A78483A044B13CD643692 /* Data+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extensions.swift"; path = "Sources/DataBytes/Data+Extensions.swift"; sourceTree = ""; }; + 891B2270823847ED23F2ECFC28F935EC /* Starscream.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Starscream.framework; path = Starscream.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 92B45F50B2100AC6E199BE823EB478C5 /* Pods-FayeSwift_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FayeSwift_Tests.debug.xcconfig"; sourceTree = ""; }; + 94BBC1492D6764F1510A111F3BBAB68D /* FayeClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FayeClient.swift; path = Sources/FayeClient.swift; sourceTree = ""; }; + 9A341DC23209CF90D5CF851634FF9500 /* FayeSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FayeSwift.modulemap; sourceTree = ""; }; + 9CDA2A0B34EDB5063A8EBF3868D88867 /* FayeSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FayeSwift.framework; path = FayeSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9D86F52B90B39CFACAE37DB765E30F4F /* Compression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Compression.swift; path = Sources/Compression/Compression.swift; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + A07C34E68D9E43E3211E1DE86B1637BA /* FayeClient+Transport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FayeClient+Transport.swift"; path = "Sources/FayeClient+Transport.swift"; sourceTree = ""; }; + A334613D59552A1553E912C4E2814646 /* Pods-FayeSwift_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FayeSwift_Tests-Info.plist"; sourceTree = ""; }; + A35C786F187E0EDCF9002FFF106F6C57 /* Pods-FayeSwift_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FayeSwift_Example.debug.xcconfig"; sourceTree = ""; }; + A7619E8DC7E2EDC39E19C3D22F298A83 /* Pods-FayeSwift_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FayeSwift_Example-acknowledgements.plist"; sourceTree = ""; }; + A85EB7AD70AF154A65E123A6E977FB4F /* FayeClientDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FayeClientDelegate.swift; path = Sources/FayeClientDelegate.swift; sourceTree = ""; }; + AA7F574240E86655E9765CAB61B9A812 /* FayeSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FayeSwift-prefix.pch"; sourceTree = ""; }; + AAE24906F50C62DF73861EB94878B3E1 /* Engine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Engine.swift; path = Sources/Engine/Engine.swift; sourceTree = ""; }; + ACEC12C1CB4357C633347ECB15BFB3B5 /* Server.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Server.swift; path = Sources/Server/Server.swift; sourceTree = ""; }; + AE81896D8E7307758095002E7E26C05C /* Starscream-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-prefix.pch"; sourceTree = ""; }; + B0D1A2F55D87666017D56F16D5671E34 /* Pods-FayeSwift_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-FayeSwift_Example-umbrella.h"; sourceTree = ""; }; + B469C9443C7A8332A92D93ECC1994F06 /* Framer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Framer.swift; path = Sources/Framer/Framer.swift; sourceTree = ""; }; + B46A5A95935228E00C289D459B6A52CB /* Pods-FayeSwift_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-FayeSwift_Tests.modulemap"; sourceTree = ""; }; + B5DF3ABE2E76234D0C9781F83F10D164 /* Starscream-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Starscream-Info.plist"; sourceTree = ""; }; + BAD32D443481EFA337DBC60C51702A5D /* License */ = {isa = PBXFileReference; includeInIndex = 1; path = License; sourceTree = ""; }; + BEC86F6E4914D08D02F45B8563B29D66 /* Pods-FayeSwift_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FayeSwift_Example-Info.plist"; sourceTree = ""; }; + C84486F09D0372EA4EB43FB741A6B177 /* WebsocketTransport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebsocketTransport.swift; path = Sources/WebsocketTransport.swift; sourceTree = ""; }; + CB589DE2B64A840E0ECC99F8272D61F5 /* WSEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WSEngine.swift; path = Sources/Engine/WSEngine.swift; sourceTree = ""; }; + CC09C6A1CD1691C8FE27E54FC92DC1A1 /* Pods-FayeSwift_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FayeSwift_Example.release.xcconfig"; sourceTree = ""; }; + CEC20F6EF8AB486CB20AD946CBA6855F /* Transport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Transport.swift; path = Sources/Transport/Transport.swift; sourceTree = ""; }; + CF1D16B5F6734884D1A2AA0A95510960 /* FayeSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FayeSwift-umbrella.h"; sourceTree = ""; }; + D19B7EC27FA15B2300013D7A82983442 /* Starscream-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Starscream-umbrella.h"; sourceTree = ""; }; + D34D8024B10C3F83EDCEF25D8F85B0AB /* FayeClient+Subscriptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FayeClient+Subscriptions.swift"; path = "Sources/FayeClient+Subscriptions.swift"; sourceTree = ""; }; + D3C1CE0D417884E7034373A7E8F70AEE /* StringHTTPHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StringHTTPHandler.swift; path = Sources/Framer/StringHTTPHandler.swift; sourceTree = ""; }; + DBB895F616DD1C4C7C1587261E4EBE5D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + E2735F9BC0C5EE710F0FEB44E3511FE8 /* Security.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Security.swift; path = Sources/Security/Security.swift; sourceTree = ""; }; + E6C718EF9BA76CE1CD7230F4AC227FB4 /* NativeEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NativeEngine.swift; path = Sources/Engine/NativeEngine.swift; sourceTree = ""; }; + F12667FFFCB6455C3AC68BD65809B063 /* WebSocket.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebSocket.swift; path = Sources/Starscream/WebSocket.swift; sourceTree = ""; }; + F3B3095DAD917854C0A3E374EA5BE89F /* NSError+Helper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSError+Helper.swift"; path = "Sources/NSError+Helper.swift"; sourceTree = ""; }; + F97F6DC319A077725FE3D3805D810EE3 /* Transport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Transport.swift; path = Sources/Transport.swift; sourceTree = ""; }; + FA844D644FE81F2CBF57620FD70E9DC0 /* FayeClient+Bayuex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FayeClient+Bayuex.swift"; path = "Sources/FayeClient+Bayuex.swift"; sourceTree = ""; }; + FB3947B8055ACC7D7C6AAF0280B8DD6F /* FayeSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FayeSwift.xcconfig; sourceTree = ""; }; + FE0C7154FB2910C429E0C8C92035FE9F /* Pods-FayeSwift_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-FayeSwift_Example.modulemap"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 4EDDF933F2400C2E4D59159875DE4F19 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 888BD35738BB6F56062233497B82CEA4 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 55482E57D69A6BEE3AB08D61E8D44F5A /* Frameworks */ = { + 0D6F0896AB86FF0FDC7C3A39AEEC79D3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 16C3627510AB6B698291B30407553A5D /* Foundation.framework in Frameworks */, + 55E5C4F8E92D2874B86296CCF24D5CA6 /* Foundation.framework in Frameworks */, + E0738107A218CC695CD03194FE7CD79F /* Starscream.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9AE92D03ECEE8678AEF5195F0D5F65A7 /* Frameworks */ = { + 247880AD6A3E62A727063EA7E65AAE56 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8F7F7274F17B1CF2A00BED441F5CFD67 /* Foundation.framework in Frameworks */, + 40D091CB32422C4223C2D860BF09AB75 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - AC8BC9D4F3FD3DEC442EFCF527C2C4B2 /* Frameworks */ = { + 537D3D1CF889546CC7E4EE8B054CE85B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 66F8B4E224873FB0B03A14FF6D5055DA /* Foundation.framework in Frameworks */, - DB619B3DA5D1A31A839B17491D9AB6CF /* Starscream.framework in Frameworks */, - 53956DED61FE62732C9218A7A387BC00 /* SwiftyJSON.framework in Frameworks */, + A8C35B96DD9A45E079F633C82A88F7A0 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - C6EA43D132CFBD43EBC704B9E9E413DF /* Frameworks */ = { + E930A1421EDD62A9EFFE3F3DDD4EF76D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 2140E1D04E961AF703FD04D54FF8C740 /* Foundation.framework in Frameworks */, + E8463FBD16B018470C5254943B1A9E5D /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 000A61D7F0D0221F20F470656F297E70 /* Targets Support Files */ = { + 00B2FEDCAC8A8BACE0F9A4E951E14F8C /* Pods */ = { isa = PBXGroup; children = ( - AEC58E9B2FE610C5D55CBB2FA4D34F2A /* Pods-FayeSwift_Example */, - 0A3C1A1DE210D08A1510BD9669BDF551 /* Pods-FayeSwift_Tests */, + 4E34C1BAF25156718E120C2384479377 /* Starscream */, ); - name = "Targets Support Files"; + name = Pods; sourceTree = ""; }; - 0A3C1A1DE210D08A1510BD9669BDF551 /* Pods-FayeSwift_Tests */ = { + 07D5512657F444425F035791D322E15F /* Pod */ = { isa = PBXGroup; children = ( - 154C747E02B1DCBD4885645B5878477F /* Info.plist */, - F3FCAA0DF279AAE5F2E8878F0749DD44 /* Pods-FayeSwift_Tests.modulemap */, - 2D4EF06156597B9C0C9800347C3343FC /* Pods-FayeSwift_Tests-acknowledgements.markdown */, - 15765D47A6F3AC9E1A1D641D8B2ADB93 /* Pods-FayeSwift_Tests-acknowledgements.plist */, - 1DCE2224000629085D044E4A5FDB2710 /* Pods-FayeSwift_Tests-dummy.m */, - E4E07C18061452192A8755C57422BE93 /* Pods-FayeSwift_Tests-frameworks.sh */, - B9BD316B84610E564DEC11C4F736BD36 /* Pods-FayeSwift_Tests-resources.sh */, - 10E4A21EDDC41F94B30C17F38403E413 /* Pods-FayeSwift_Tests-umbrella.h */, - D26B5E2282A330BE919FE4EFDFB738B3 /* Pods-FayeSwift_Tests.debug.xcconfig */, - 4AB2D41C9043F185BD735AC2476F72C6 /* Pods-FayeSwift_Tests.release.xcconfig */, + 6C8F4E9608DB652CEC72BFDD58678857 /* FayeSwift.podspec */, + BAD32D443481EFA337DBC60C51702A5D /* License */, + 43DC7B0C07F699CCD23DCB53B28E7E83 /* Readme.md */, ); - name = "Pods-FayeSwift_Tests"; - path = "Target Support Files/Pods-FayeSwift_Tests"; + name = Pod; sourceTree = ""; }; - 0C03422930E80D7BB92C5C859589F09F /* Pods */ = { + 21A72EAA804A88B5CBA2739226038F7C /* FayeSwift */ = { isa = PBXGroup; children = ( - B60722EF6A0F9DCD2D7C6D03F8B362CD /* Starscream */, - 48BC61B70DBB2FA057A57FF358488F76 /* SwiftyJSON */, + 94BBC1492D6764F1510A111F3BBAB68D /* FayeClient.swift */, + 650D755CE10E84D017B0C835DAD24E8C /* FayeClient+Action.swift */, + FA844D644FE81F2CBF57620FD70E9DC0 /* FayeClient+Bayuex.swift */, + 6288E7ED2202C227D9C958C0FB9ED2DA /* FayeClient+Helper.swift */, + 2EB69BC9BBF2B384084E0A128B4ED7BA /* FayeClient+Parsing.swift */, + D34D8024B10C3F83EDCEF25D8F85B0AB /* FayeClient+Subscriptions.swift */, + A07C34E68D9E43E3211E1DE86B1637BA /* FayeClient+Transport.swift */, + A85EB7AD70AF154A65E123A6E977FB4F /* FayeClientDelegate.swift */, + 818B50B64E2C3E09C96ABBA95CA3D0C5 /* FayeSubscriptionModel.swift */, + F3B3095DAD917854C0A3E374EA5BE89F /* NSError+Helper.swift */, + F97F6DC319A077725FE3D3805D810EE3 /* Transport.swift */, + C84486F09D0372EA4EB43FB741A6B177 /* WebsocketTransport.swift */, + 07D5512657F444425F035791D322E15F /* Pod */, + 801AE421FA24885699B873E1943AA03F /* Support Files */, ); - name = Pods; + name = FayeSwift; + path = ../..; sourceTree = ""; }; - 0DB5BD81DCAEB161F8916282ABFD3340 /* Frameworks */ = { + 4E34C1BAF25156718E120C2384479377 /* Starscream */ = { isa = PBXGroup; children = ( - 3E94F4BAAE418F28A0730CC56D7FACFF /* Starscream.framework */, - 9A1314F41D4AF302873CCAE4DF95096E /* SwiftyJSON.framework */, - FD9348BF3D0247517870C91A35D015B9 /* iOS */, + 9D86F52B90B39CFACAE37DB765E30F4F /* Compression.swift */, + 87AFDC947B6A78483A044B13CD643692 /* Data+Extensions.swift */, + AAE24906F50C62DF73861EB94878B3E1 /* Engine.swift */, + 4566B1E635A9AC2080E7B264F5E9DBFC /* FoundationHTTPHandler.swift */, + 04F2F3AD59FADDCA9533C204CFDF5867 /* FoundationHTTPServerHandler.swift */, + 34F81A2BC80C48F071AF52010E8A0ABE /* FoundationSecurity.swift */, + 73FEC6A7A0CAD1E0E51A64E7AAB383E1 /* FoundationTransport.swift */, + 5506D7C7E94836DA1634D95E0E9A2123 /* FrameCollector.swift */, + B469C9443C7A8332A92D93ECC1994F06 /* Framer.swift */, + 61F3729F21AAE38EEB3F59EE1EA24DCA /* HTTPHandler.swift */, + E6C718EF9BA76CE1CD7230F4AC227FB4 /* NativeEngine.swift */, + E2735F9BC0C5EE710F0FEB44E3511FE8 /* Security.swift */, + ACEC12C1CB4357C633347ECB15BFB3B5 /* Server.swift */, + D3C1CE0D417884E7034373A7E8F70AEE /* StringHTTPHandler.swift */, + 22680B5A2B7A2EFD73302D95C85E8833 /* TCPTransport.swift */, + CEC20F6EF8AB486CB20AD946CBA6855F /* Transport.swift */, + F12667FFFCB6455C3AC68BD65809B063 /* WebSocket.swift */, + 02836A08BC2703834C57A6EA9CD900CC /* WebSocketServer.swift */, + 0912441B3D68024A988E3646C03B9C3C /* WSCompression.swift */, + CB589DE2B64A840E0ECC99F8272D61F5 /* WSEngine.swift */, + E6370DF0107D49FCA4E8B471A7B0E4BB /* Support Files */, ); - name = Frameworks; + name = Starscream; + path = Starscream; sourceTree = ""; }; - 142346D50CBE4F37FCCAE9D64C36FDC1 /* Products */ = { + 6563A60F5A5BF11CB0170B4878038DFF /* Pods-FayeSwift_Example */ = { isa = PBXGroup; children = ( - BC51989923EA37E862F09C698F868947 /* FayeSwift.framework */, - 6FA9ABBAFE65EA53C5AECD4FEF5902DE /* Pods_FayeSwift_Example.framework */, - 502DCC2B2A3C577BB0E225CE04E63571 /* Pods_FayeSwift_Tests.framework */, - 8617DDEB1D97E8945A823BA19722DD99 /* Starscream.framework */, - B9AF00E1C38081852D6E23B7C286C779 /* SwiftyJSON.framework */, + FE0C7154FB2910C429E0C8C92035FE9F /* Pods-FayeSwift_Example.modulemap */, + 6E810AE5C04F854E8DFC92ACC290FA50 /* Pods-FayeSwift_Example-acknowledgements.markdown */, + A7619E8DC7E2EDC39E19C3D22F298A83 /* Pods-FayeSwift_Example-acknowledgements.plist */, + 702ED4E00C35B47376D617A4E4BF3CE9 /* Pods-FayeSwift_Example-dummy.m */, + 5E6CC62AB0D140277E579CE5E18F1508 /* Pods-FayeSwift_Example-frameworks.sh */, + BEC86F6E4914D08D02F45B8563B29D66 /* Pods-FayeSwift_Example-Info.plist */, + B0D1A2F55D87666017D56F16D5671E34 /* Pods-FayeSwift_Example-umbrella.h */, + A35C786F187E0EDCF9002FFF106F6C57 /* Pods-FayeSwift_Example.debug.xcconfig */, + CC09C6A1CD1691C8FE27E54FC92DC1A1 /* Pods-FayeSwift_Example.release.xcconfig */, ); - name = Products; + name = "Pods-FayeSwift_Example"; + path = "Target Support Files/Pods-FayeSwift_Example"; sourceTree = ""; }; - 1F6C69005CE5773E87D416DED050CEA8 /* Development Pods */ = { + 738B7549EF52C82B3FD13C533D4241EC /* Development Pods */ = { isa = PBXGroup; children = ( - 7BECE1B843E487DAEB4272B5E771533E /* FayeSwift */, + 21A72EAA804A88B5CBA2739226038F7C /* FayeSwift */, ); name = "Development Pods"; sourceTree = ""; }; - 48BC61B70DBB2FA057A57FF358488F76 /* SwiftyJSON */ = { - isa = PBXGroup; - children = ( - 0813DA1F91E6465D940389B245DB41E4 /* SwiftyJSON.swift */, - 9BE8F84C840D474BB60E62D4A8259C63 /* Support Files */, - ); - name = SwiftyJSON; - path = SwiftyJSON; - sourceTree = ""; - }; - 57072CFE2F97B4E7645A18D9267BA425 /* Support Files */ = { + 801AE421FA24885699B873E1943AA03F /* Support Files */ = { isa = PBXGroup; children = ( - CFB3E404A66EE13E14582416D200A72C /* Info.plist */, - ED0A84AABA966E6DE908E1D84ABB429E /* Starscream.modulemap */, - 47C81FB96686C0BE581D0FC3090AFC0D /* Starscream.xcconfig */, - 18C6718FA411202146721CBD6539BA6A /* Starscream-dummy.m */, - 47C7E36F0C36BF6A9B7F26250E6F35CA /* Starscream-prefix.pch */, - D47E6B74B427A4904D75990D1C34E829 /* Starscream-umbrella.h */, + 9A341DC23209CF90D5CF851634FF9500 /* FayeSwift.modulemap */, + FB3947B8055ACC7D7C6AAF0280B8DD6F /* FayeSwift.xcconfig */, + 25D5D3962EE6A70E26DB6EACFD24017A /* FayeSwift-dummy.m */, + 1C6323085F674B9644697ADA3CC79ABD /* FayeSwift-Info.plist */, + AA7F574240E86655E9765CAB61B9A812 /* FayeSwift-prefix.pch */, + CF1D16B5F6734884D1A2AA0A95510960 /* FayeSwift-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/Starscream"; - sourceTree = ""; - }; - 7BECE1B843E487DAEB4272B5E771533E /* FayeSwift */ = { - isa = PBXGroup; - children = ( - 8036FC47B43C006D2E5847AA468D6316 /* Sources */, - 9ACEECA4EA200705374D27971C0A3EAE /* Support Files */, - ); - name = FayeSwift; - path = ../..; + path = "Example/Pods/Target Support Files/FayeSwift"; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 85422BCB99D41B108592CBC36D07C319 /* Pods-FayeSwift_Tests */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - 1F6C69005CE5773E87D416DED050CEA8 /* Development Pods */, - 0DB5BD81DCAEB161F8916282ABFD3340 /* Frameworks */, - 0C03422930E80D7BB92C5C859589F09F /* Pods */, - 142346D50CBE4F37FCCAE9D64C36FDC1 /* Products */, - 000A61D7F0D0221F20F470656F297E70 /* Targets Support Files */, + B46A5A95935228E00C289D459B6A52CB /* Pods-FayeSwift_Tests.modulemap */, + 7DCFC525E0C4FB7B05B9DD90891FD2E9 /* Pods-FayeSwift_Tests-acknowledgements.markdown */, + 7DAD9B664EF4965431CCE924B1A86027 /* Pods-FayeSwift_Tests-acknowledgements.plist */, + 74CF4E2A192377428C5F06ECC9E8FA6C /* Pods-FayeSwift_Tests-dummy.m */, + 5F7F3D733E01300A4E277E94D7A39D09 /* Pods-FayeSwift_Tests-frameworks.sh */, + A334613D59552A1553E912C4E2814646 /* Pods-FayeSwift_Tests-Info.plist */, + 5408A92C70DD1D719AD288C51BA3EDE7 /* Pods-FayeSwift_Tests-umbrella.h */, + 92B45F50B2100AC6E199BE823EB478C5 /* Pods-FayeSwift_Tests.debug.xcconfig */, + 528FBBFFC84FFBEF0E7DDF0982562E0B /* Pods-FayeSwift_Tests.release.xcconfig */, ); + name = "Pods-FayeSwift_Tests"; + path = "Target Support Files/Pods-FayeSwift_Tests"; sourceTree = ""; }; - 8036FC47B43C006D2E5847AA468D6316 /* Sources */ = { + AADEC59BC2C46A2EB4239F071A12322F /* Targets Support Files */ = { isa = PBXGroup; children = ( - B3144C4726BB0EB476A794EEFC0B2F26 /* FayeClient.swift */, - C0DE0C357228154269715152013E357E /* FayeClient+Action.swift */, - 00691AB4D533EDE30C5370EEE0AE7074 /* FayeClient+Bayuex.swift */, - 040DEA860EC7FF25C6B8F9F0C5AE8073 /* FayeClient+Helper.swift */, - DD6E1ADC55716BEA0CA275460382B07D /* FayeClient+Parsing.swift */, - 0AC895133B34E9D0675395BA526347A6 /* FayeClient+Subscriptions.swift */, - DDECAEB5EE9FA1ABB438BF7BFA54A873 /* FayeClient+Transport.swift */, - 7C951632446E53D8608098AA9AE5EDEA /* FayeClientDelegate.swift */, - 4E2414E53B957CFF4E6F6E82CECEFA47 /* FayeSubscriptionModel.swift */, - 24295EB91477AACF5542D54C350C5715 /* NSError+Helper.swift */, - 6DA424137F7F26626CB88BD77A99423B /* StringExtensions.swift */, - C0700FD7F6575455C46E83723884C015 /* Transport.swift */, - 0DA092BAC435FAC54B26652A4967BBC2 /* WebsocketTransport.swift */, + 6563A60F5A5BF11CB0170B4878038DFF /* Pods-FayeSwift_Example */, + 85422BCB99D41B108592CBC36D07C319 /* Pods-FayeSwift_Tests */, ); - name = Sources; - path = Sources; + name = "Targets Support Files"; sourceTree = ""; }; - 9ACEECA4EA200705374D27971C0A3EAE /* Support Files */ = { + CD272A03C5BA2A49B245F2735E358B7D /* Frameworks */ = { isa = PBXGroup; children = ( - 9C1D30B972C48AC8BD0E88DA4DB9F743 /* FayeSwift.modulemap */, - 7B3AAC1CAA0FD33A1665A6CF0609129E /* FayeSwift.xcconfig */, - 6F23ED994CFBB0F9B07BF334EA7FF240 /* FayeSwift-dummy.m */, - 01718434A0A3E9C872093B738FC33F54 /* FayeSwift-prefix.pch */, - D3A7795CDA243AB07B1664FEE1544038 /* FayeSwift-umbrella.h */, - 5927E4C39F2970C28F9060D5EDF137B9 /* Info.plist */, + 3319CBE6BF16B5B2366BDE834B663B5E /* Starscream.framework */, + DB2C61061EC170240411C29EF6DD7C9D /* iOS */, ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/FayeSwift"; + name = Frameworks; sourceTree = ""; }; - 9BE8F84C840D474BB60E62D4A8259C63 /* Support Files */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - E6671F9532A947F40918CF9A0D44F70F /* Info.plist */, - 2A14E4E75C0921B8190FF7805BDB1994 /* SwiftyJSON.modulemap */, - 1EC0280E5CCCCD96F81E63B562E157DD /* SwiftyJSON.xcconfig */, - 6DCD25231745CBB7A0DE8AE144F32C35 /* SwiftyJSON-dummy.m */, - 0F0AD0445D068E37E1C8498A3BF6150D /* SwiftyJSON-prefix.pch */, - 6B923F40E09322629BC57536AFBDAB00 /* SwiftyJSON-umbrella.h */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + 738B7549EF52C82B3FD13C533D4241EC /* Development Pods */, + CD272A03C5BA2A49B245F2735E358B7D /* Frameworks */, + 00B2FEDCAC8A8BACE0F9A4E951E14F8C /* Pods */, + FBDA564B9FEB2D82399786B03A9C8580 /* Products */, + AADEC59BC2C46A2EB4239F071A12322F /* Targets Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/SwiftyJSON"; sourceTree = ""; }; - AEC58E9B2FE610C5D55CBB2FA4D34F2A /* Pods-FayeSwift_Example */ = { + DB2C61061EC170240411C29EF6DD7C9D /* iOS */ = { isa = PBXGroup; children = ( - 6E1FB52B709CB783F4109CA61174C28B /* Info.plist */, - 37D9B4C012C932EED434E89C515FA960 /* Pods-FayeSwift_Example.modulemap */, - 4471A15D81938B6C2CE6A161EC41FEED /* Pods-FayeSwift_Example-acknowledgements.markdown */, - B29C7FFE8D08A56E77C644C03000FC94 /* Pods-FayeSwift_Example-acknowledgements.plist */, - 2FE9E957D59ADA0A662E4B8C1A7BD7E2 /* Pods-FayeSwift_Example-dummy.m */, - 14B7C4FE824293ABEEF592A7E71C4AFC /* Pods-FayeSwift_Example-frameworks.sh */, - 4885D84AE492246F7B92A35D5F4C2787 /* Pods-FayeSwift_Example-resources.sh */, - 06B16C30B7CF62C246F4DD2B6BA325D2 /* Pods-FayeSwift_Example-umbrella.h */, - B661AAF1FC01F5B9EB53567F4990C215 /* Pods-FayeSwift_Example.debug.xcconfig */, - 2692C5A026D6876DF0B8ED238232F2E6 /* Pods-FayeSwift_Example.release.xcconfig */, + DBB895F616DD1C4C7C1587261E4EBE5D /* Foundation.framework */, ); - name = "Pods-FayeSwift_Example"; - path = "Target Support Files/Pods-FayeSwift_Example"; + name = iOS; sourceTree = ""; }; - B60722EF6A0F9DCD2D7C6D03F8B362CD /* Starscream */ = { + E6370DF0107D49FCA4E8B471A7B0E4BB /* Support Files */ = { isa = PBXGroup; children = ( - 38A444149F18F886FD0A1E23B45D6671 /* SSLSecurity.swift */, - 87D64F48FA18233694918281C87E0266 /* WebSocket.swift */, - 57072CFE2F97B4E7645A18D9267BA425 /* Support Files */, + 10AC67941C2C7C7F27D9DA8B3004B74E /* Starscream.modulemap */, + 60BE70F6A7CDA17431FDDC70D47EE478 /* Starscream.xcconfig */, + 2E51930C99B40B3CDCAE9033D4542611 /* Starscream-dummy.m */, + B5DF3ABE2E76234D0C9781F83F10D164 /* Starscream-Info.plist */, + AE81896D8E7307758095002E7E26C05C /* Starscream-prefix.pch */, + D19B7EC27FA15B2300013D7A82983442 /* Starscream-umbrella.h */, ); - name = Starscream; - path = Starscream; + name = "Support Files"; + path = "../Target Support Files/Starscream"; sourceTree = ""; }; - FD9348BF3D0247517870C91A35D015B9 /* iOS */ = { + FBDA564B9FEB2D82399786B03A9C8580 /* Products */ = { isa = PBXGroup; children = ( - AF83ABEF1A458CAE5372C3E2E46D918F /* Foundation.framework */, + 9CDA2A0B34EDB5063A8EBF3868D88867 /* FayeSwift.framework */, + 13F871721477871167420E510E6E3742 /* Pods_FayeSwift_Example.framework */, + 803B043628E27E9B05B3949999D24303 /* Pods_FayeSwift_Tests.framework */, + 891B2270823847ED23F2ECFC28F935EC /* Starscream.framework */, ); - name = iOS; + name = Products; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 2FC285EE7B23BCF4838AE10E22CF15F1 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 026017E12DAB48A922244C71A63253D0 /* Starscream-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5699FAC57A3070BF159F2901B70EBFDA /* Headers */ = { + 428074677B7AC963CEAA7ED66F5E1E15 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - AC29BC38767C449B4173F44C53632135 /* Pods-FayeSwift_Tests-umbrella.h in Headers */, + A94CEE7B00FB102284B14D280DCE8911 /* Pods-FayeSwift_Tests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5A448ADB59E0771F30851C17B3AC70A9 /* Headers */ = { + 534E59A3076AFF0C829B11999E65E8D2 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 12A2D6DEF558554F285FBB6A2196E202 /* Pods-FayeSwift_Example-umbrella.h in Headers */, + 6AB74EEBB2F512FBC6DA877C7229BF29 /* Pods-FayeSwift_Example-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - BD236EDC7B51F8AE166BA91FADC49449 /* Headers */ = { + 878C1E85D09F0B4C31F787D287CB6B03 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 630775D47B4762F060BF09A7AD3AD9F2 /* SwiftyJSON-umbrella.h in Headers */, + 0BE11EC491137918A9DF1EBF7F8DA330 /* FayeSwift-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - D21C478503F6EB3CC30702FFC62C1545 /* Headers */ = { + ACD08EE71174CB3CBD940A05243B3B75 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 5C79AABB8B872CDFC3596A03DA50F50F /* FayeSwift-umbrella.h in Headers */, + 4D17A29457AF97C39E46C715807B8FBB /* Starscream-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 5C1F57BFFCD92868AF3442E38186A537 /* SwiftyJSON */ = { + 46036F5F450724505F8F5A3535561A93 /* Pods-FayeSwift_Example */ = { isa = PBXNativeTarget; - buildConfigurationList = D7B51E188C37F41CEC46650465F4DA2E /* Build configuration list for PBXNativeTarget "SwiftyJSON" */; + buildConfigurationList = 36F39271BD362A96942CE4BF703446A3 /* Build configuration list for PBXNativeTarget "Pods-FayeSwift_Example" */; buildPhases = ( - 14562C9FE587649D1E1A8ECCC1121CB6 /* Sources */, - 9AE92D03ECEE8678AEF5195F0D5F65A7 /* Frameworks */, - BD236EDC7B51F8AE166BA91FADC49449 /* Headers */, + 534E59A3076AFF0C829B11999E65E8D2 /* Headers */, + 28461B175212164A121A39E409F9C9F2 /* Sources */, + 247880AD6A3E62A727063EA7E65AAE56 /* Frameworks */, + 11E47EC2F0F90BA2EB57031DB815800D /* Resources */, ); buildRules = ( ); dependencies = ( + 77347A0572CC274E70090A33B430E218 /* PBXTargetDependency */, + C863549D50E8816C5BE357A65FC2DFDC /* PBXTargetDependency */, ); - name = SwiftyJSON; - productName = SwiftyJSON; - productReference = B9AF00E1C38081852D6E23B7C286C779 /* SwiftyJSON.framework */; + name = "Pods-FayeSwift_Example"; + productName = "Pods-FayeSwift_Example"; + productReference = 13F871721477871167420E510E6E3742 /* Pods_FayeSwift_Example.framework */; productType = "com.apple.product-type.framework"; }; - 5C48D6CAB4FBFA5BB8EFCD0C0947DF9D /* FayeSwift */ = { + 5E551DD8B190AB276724C510971C365C /* FayeSwift */ = { isa = PBXNativeTarget; - buildConfigurationList = 3BC677F1AB4B06206649C8ADA8DD1440 /* Build configuration list for PBXNativeTarget "FayeSwift" */; + buildConfigurationList = C9057C70529CDB027B5841A3F869598E /* Build configuration list for PBXNativeTarget "FayeSwift" */; buildPhases = ( - 3DE001A80C8B89B645180EEA8628E7AC /* Sources */, - AC8BC9D4F3FD3DEC442EFCF527C2C4B2 /* Frameworks */, - D21C478503F6EB3CC30702FFC62C1545 /* Headers */, + 878C1E85D09F0B4C31F787D287CB6B03 /* Headers */, + 32DFF9A5EF659693ADD631109D7B2526 /* Sources */, + 0D6F0896AB86FF0FDC7C3A39AEEC79D3 /* Frameworks */, + 22E5ED0FA2867D366EC1B49D09985197 /* Resources */, ); buildRules = ( ); dependencies = ( - 1C30892F0FF517727036E27CDF81C663 /* PBXTargetDependency */, - 0B624098DDC63EDF2E66E333C47201F1 /* PBXTargetDependency */, + C723C663B511E787B10C5230BBE5ADB6 /* PBXTargetDependency */, ); name = FayeSwift; productName = FayeSwift; - productReference = BC51989923EA37E862F09C698F868947 /* FayeSwift.framework */; + productReference = 9CDA2A0B34EDB5063A8EBF3868D88867 /* FayeSwift.framework */; productType = "com.apple.product-type.framework"; }; - 90E7E0DDBF3230E4EE01FAA926FC8C1C /* Pods-FayeSwift_Example */ = { + 9B78EE4AF6AE03E79D88886319853FF7 /* Starscream */ = { isa = PBXNativeTarget; - buildConfigurationList = 2C37015467BCB2CAD2C5683C1D3C7897 /* Build configuration list for PBXNativeTarget "Pods-FayeSwift_Example" */; + buildConfigurationList = 661AAB7EF76102E76A33C8EB590798DA /* Build configuration list for PBXNativeTarget "Starscream" */; buildPhases = ( - A2EEF6DF48EB857F89E15025ADB08D0C /* Sources */, - 55482E57D69A6BEE3AB08D61E8D44F5A /* Frameworks */, - 5A448ADB59E0771F30851C17B3AC70A9 /* Headers */, + ACD08EE71174CB3CBD940A05243B3B75 /* Headers */, + 900B414EAE8FB78B4C84FE9046A731E2 /* Sources */, + E930A1421EDD62A9EFFE3F3DDD4EF76D /* Frameworks */, + B1E0C3E12C8B4613B8865FE89B05521D /* Resources */, ); buildRules = ( ); dependencies = ( - 513B4CE355F9033A8A9BBC57A2C7FFD1 /* PBXTargetDependency */, - 543AAD42A1D98CF875D74C50362FEC99 /* PBXTargetDependency */, - 2434201F5B0A7997E2922AE89413EEE1 /* PBXTargetDependency */, ); - name = "Pods-FayeSwift_Example"; - productName = "Pods-FayeSwift_Example"; - productReference = 6FA9ABBAFE65EA53C5AECD4FEF5902DE /* Pods_FayeSwift_Example.framework */; + name = Starscream; + productName = Starscream; + productReference = 891B2270823847ED23F2ECFC28F935EC /* Starscream.framework */; productType = "com.apple.product-type.framework"; }; - BC253BAFB43EC448547D4A2394ACD810 /* Pods-FayeSwift_Tests */ = { + D363A9BDF4C1ECA78CDF5B83FC9C13F0 /* Pods-FayeSwift_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = 81D03CD0D35971BA49F91CC378F0381D /* Build configuration list for PBXNativeTarget "Pods-FayeSwift_Tests" */; + buildConfigurationList = 19188E0605D4D143004C077EDED27B04 /* Build configuration list for PBXNativeTarget "Pods-FayeSwift_Tests" */; buildPhases = ( - 64B715524D7BA41EE9474DB446B5E935 /* Sources */, - C6EA43D132CFBD43EBC704B9E9E413DF /* Frameworks */, - 5699FAC57A3070BF159F2901B70EBFDA /* Headers */, + 428074677B7AC963CEAA7ED66F5E1E15 /* Headers */, + 16592D1C44D688EAC4981CD1EA683729 /* Sources */, + 537D3D1CF889546CC7E4EE8B054CE85B /* Frameworks */, + 4E55E7F372B9DAD1A6F3A064DADBCD48 /* Resources */, ); buildRules = ( ); dependencies = ( - 37304380EF1AE699643886697C6B633D /* PBXTargetDependency */, - E42065487BF3D5CC9F09CB18C7F14F01 /* PBXTargetDependency */, - 57B2902E0642C8E5BA1F9DADFE441377 /* PBXTargetDependency */, + D960B51C6B4703AE26A06BABC22BEDA9 /* PBXTargetDependency */, + BE9746A12C5B179BDD3020B2FBD1CD21 /* PBXTargetDependency */, ); name = "Pods-FayeSwift_Tests"; productName = "Pods-FayeSwift_Tests"; - productReference = 502DCC2B2A3C577BB0E225CE04E63571 /* Pods_FayeSwift_Tests.framework */; - productType = "com.apple.product-type.framework"; - }; - BCC8AE0600D381881B2B45F29D3A3294 /* Starscream */ = { - isa = PBXNativeTarget; - buildConfigurationList = E86FDF27E9DCFAAFE67D7E62F35E9AB0 /* Build configuration list for PBXNativeTarget "Starscream" */; - buildPhases = ( - E9E1339796C8B15F79531589B9E53575 /* Sources */, - 4EDDF933F2400C2E4D59159875DE4F19 /* Frameworks */, - 2FC285EE7B23BCF4838AE10E22CF15F1 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Starscream; - productName = Starscream; - productReference = 8617DDEB1D97E8945A823BA19722DD99 /* Starscream.framework */; + productReference = 803B043628E27E9B05B3949999D24303 /* Pods_FayeSwift_Tests.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0700; + LastSwiftUpdateCheck = 1100; + LastUpgradeCheck = 1100; }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 142346D50CBE4F37FCCAE9D64C36FDC1 /* Products */; + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = FBDA564B9FEB2D82399786B03A9C8580 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 5C48D6CAB4FBFA5BB8EFCD0C0947DF9D /* FayeSwift */, - 90E7E0DDBF3230E4EE01FAA926FC8C1C /* Pods-FayeSwift_Example */, - BC253BAFB43EC448547D4A2394ACD810 /* Pods-FayeSwift_Tests */, - BCC8AE0600D381881B2B45F29D3A3294 /* Starscream */, - 5C1F57BFFCD92868AF3442E38186A537 /* SwiftyJSON */, + 5E551DD8B190AB276724C510971C365C /* FayeSwift */, + 46036F5F450724505F8F5A3535561A93 /* Pods-FayeSwift_Example */, + D363A9BDF4C1ECA78CDF5B83FC9C13F0 /* Pods-FayeSwift_Tests */, + 9B78EE4AF6AE03E79D88886319853FF7 /* Starscream */, ); }; /* End PBXProject section */ -/* Begin PBXSourcesBuildPhase section */ - 14562C9FE587649D1E1A8ECCC1121CB6 /* Sources */ = { - isa = PBXSourcesBuildPhase; +/* Begin PBXResourcesBuildPhase section */ + 11E47EC2F0F90BA2EB57031DB815800D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 22E5ED0FA2867D366EC1B49D09985197 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4E55E7F372B9DAD1A6F3A064DADBCD48 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B1E0C3E12C8B4613B8865FE89B05521D /* Resources */ = { + isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 01491BBA557B2F18B2A77192743E3E55 /* SwiftyJSON-dummy.m in Sources */, - C96024BA34EFE5DFB81CAA301E6CBF9D /* SwiftyJSON.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3DE001A80C8B89B645180EEA8628E7AC /* Sources */ = { +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 16592D1C44D688EAC4981CD1EA683729 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EA58C7FB9E131FA20044D726C8634078 /* FayeClient+Action.swift in Sources */, - D82013AA00D169E2324113D1EA177494 /* FayeClient+Bayuex.swift in Sources */, - BD0EEEBB061534E4B0AA21C29937F7E9 /* FayeClient+Helper.swift in Sources */, - 1AF8A2644E64066D72B7AE1ED35E042E /* FayeClient+Parsing.swift in Sources */, - F9073136443690E223D545CD2FF138B0 /* FayeClient+Subscriptions.swift in Sources */, - 2641943D2AB25D845A907E751D0D4A0E /* FayeClient+Transport.swift in Sources */, - 9590095A7427348F72D50958E6DF569D /* FayeClient.swift in Sources */, - 372A1E8811704945874EB18F7BD1309F /* FayeClientDelegate.swift in Sources */, - DF00F790990FE2A87CACDD519DA5FAA2 /* FayeSubscriptionModel.swift in Sources */, - 97E28C082763F8A1B9DF116332FE45A5 /* FayeSwift-dummy.m in Sources */, - D7C3BD0F56BE895E0425738268F11494 /* NSError+Helper.swift in Sources */, - 4395CC6B51E36E7FA9DF24986CB85D58 /* StringExtensions.swift in Sources */, - F13620786093149885BC1C94F8AE9FB9 /* Transport.swift in Sources */, - B715F8A02147DC9AF882D4E8B8CA03A5 /* WebsocketTransport.swift in Sources */, + 11125B36965E6888DCB67E1D81AFF401 /* Pods-FayeSwift_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 64B715524D7BA41EE9474DB446B5E935 /* Sources */ = { + 28461B175212164A121A39E409F9C9F2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 603A236E27FDBCDDDC245C7949FAC4AB /* Pods-FayeSwift_Tests-dummy.m in Sources */, + B81097DEBCF361189800556FB949DBE9 /* Pods-FayeSwift_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A2EEF6DF48EB857F89E15025ADB08D0C /* Sources */ = { + 32DFF9A5EF659693ADD631109D7B2526 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 819CD987E43CF9B00A0BE165B3144C21 /* Pods-FayeSwift_Example-dummy.m in Sources */, + CC270E7D68EDF963C16A80ECD29ADA00 /* FayeClient+Action.swift in Sources */, + FBAE6EAE5BAE3504F0ADA0932176ECB9 /* FayeClient+Bayuex.swift in Sources */, + 852A24A518E75BBFBEA4AB477C7C7B20 /* FayeClient+Helper.swift in Sources */, + 0A3491AACF3B030E58B0D85DE94F9A77 /* FayeClient+Parsing.swift in Sources */, + EAEA2DA5EB9BEC82474ADDEF2595119E /* FayeClient+Subscriptions.swift in Sources */, + 707CCBA3E88283A2484AB89D01BB133F /* FayeClient+Transport.swift in Sources */, + B0B154E4BFA108C8EF088F0356A467CB /* FayeClient.swift in Sources */, + 3C9AE0D0989200C0F066380910A49B43 /* FayeClientDelegate.swift in Sources */, + 769822593034E557EE0F4BBDE348010C /* FayeSubscriptionModel.swift in Sources */, + FF4AB4E97F669DE6874684B3964E0F3C /* FayeSwift-dummy.m in Sources */, + 5AE8C8FFA58A98FB2EF5D929AD97CC48 /* NSError+Helper.swift in Sources */, + 4118BD130476632693D8D681D64C7BDD /* Transport.swift in Sources */, + FC1EDDEB048757B367BBDC4D82ECA408 /* WebsocketTransport.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - E9E1339796C8B15F79531589B9E53575 /* Sources */ = { + 900B414EAE8FB78B4C84FE9046A731E2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B4F045C4EB5BA94B75966419EB72662A /* SSLSecurity.swift in Sources */, - FED7F96749B4ACB6DAF206513C945CA9 /* Starscream-dummy.m in Sources */, - A3F622749F008AB61E99EF439E3B7551 /* WebSocket.swift in Sources */, + 4CFA72BC9AE59D1D28BEB9CF5B3B99CB /* Compression.swift in Sources */, + A1B3238EEF18EF8504E1A2B18B479930 /* Data+Extensions.swift in Sources */, + 7053B1CF926C531F5CB324BA89A17054 /* Engine.swift in Sources */, + EC1A78BDEFB0746B58A03929039A22DA /* FoundationHTTPHandler.swift in Sources */, + 409FFD09F7C2AB1A2E3022C29E47AEBC /* FoundationHTTPServerHandler.swift in Sources */, + F000BBEF6E0EAA1C58CD157003030497 /* FoundationSecurity.swift in Sources */, + 96B137446187D6B76049502165F9B255 /* FoundationTransport.swift in Sources */, + D283138A651C16A9FBA92A44351FA220 /* FrameCollector.swift in Sources */, + 17BA7C9EF8E08E7C72C31C2B0C050AD3 /* Framer.swift in Sources */, + F386CB7AD9FE43FE75F19B84E69B2C3F /* HTTPHandler.swift in Sources */, + B87DD765AA71CC66B9D882C0C2FF8C13 /* NativeEngine.swift in Sources */, + F93433CB404502EAD9D02592A76F26C2 /* Security.swift in Sources */, + 124C81DB033D760FF13720B7DAF7EB72 /* Server.swift in Sources */, + 78683E4E8860467F8B67989CDC76B0E5 /* Starscream-dummy.m in Sources */, + 4AACE513E124D555D1DAD606417C9752 /* StringHTTPHandler.swift in Sources */, + E8AA269278FDBCA618B4441AFC303B1C /* TCPTransport.swift in Sources */, + D91D98E11D6235C6729CF8A8A6CFCD4D /* Transport.swift in Sources */, + 36F8640866D196BA4554E1CF36C1C7C5 /* WebSocket.swift in Sources */, + EA939E57D1B2125ACFFA6FEBA0AE1C09 /* WebSocketServer.swift in Sources */, + 8672F7C0F34DA7E604A50E31C5BA74A9 /* WSCompression.swift in Sources */, + 7CE012168FD8F0965F8901B0029627FB /* WSEngine.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 0B624098DDC63EDF2E66E333C47201F1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftyJSON; - target = 5C1F57BFFCD92868AF3442E38186A537 /* SwiftyJSON */; - targetProxy = 0E2E944578DFD11725AE03E57A2F5E40 /* PBXContainerItemProxy */; - }; - 1C30892F0FF517727036E27CDF81C663 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Starscream; - target = BCC8AE0600D381881B2B45F29D3A3294 /* Starscream */; - targetProxy = 27129EF77D9CAC29F1151EC75DB48940 /* PBXContainerItemProxy */; - }; - 2434201F5B0A7997E2922AE89413EEE1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftyJSON; - target = 5C1F57BFFCD92868AF3442E38186A537 /* SwiftyJSON */; - targetProxy = EF2196CF5D21430C9E4A6BAD3F790A0F /* PBXContainerItemProxy */; - }; - 37304380EF1AE699643886697C6B633D /* PBXTargetDependency */ = { + 77347A0572CC274E70090A33B430E218 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FayeSwift; - target = 5C48D6CAB4FBFA5BB8EFCD0C0947DF9D /* FayeSwift */; - targetProxy = 663722FA80FCCEA51B761DBCF6962820 /* PBXContainerItemProxy */; + target = 5E551DD8B190AB276724C510971C365C /* FayeSwift */; + targetProxy = F7EA3396C573BC562B28BC4ADDC208F6 /* PBXContainerItemProxy */; }; - 513B4CE355F9033A8A9BBC57A2C7FFD1 /* PBXTargetDependency */ = { + BE9746A12C5B179BDD3020B2FBD1CD21 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FayeSwift; - target = 5C48D6CAB4FBFA5BB8EFCD0C0947DF9D /* FayeSwift */; - targetProxy = 5C2824D1A9A59FC7E0807982E563883C /* PBXContainerItemProxy */; + name = Starscream; + target = 9B78EE4AF6AE03E79D88886319853FF7 /* Starscream */; + targetProxy = CC77485CCDFF17D37F20593A8AAEE8E1 /* PBXContainerItemProxy */; }; - 543AAD42A1D98CF875D74C50362FEC99 /* PBXTargetDependency */ = { + C723C663B511E787B10C5230BBE5ADB6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Starscream; - target = BCC8AE0600D381881B2B45F29D3A3294 /* Starscream */; - targetProxy = B4F58B425B8A192B0B43228D5BBD2FEF /* PBXContainerItemProxy */; + target = 9B78EE4AF6AE03E79D88886319853FF7 /* Starscream */; + targetProxy = 7C8192EF2F05D91E3A42F22B15B2717A /* PBXContainerItemProxy */; }; - 57B2902E0642C8E5BA1F9DADFE441377 /* PBXTargetDependency */ = { + C863549D50E8816C5BE357A65FC2DFDC /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SwiftyJSON; - target = 5C1F57BFFCD92868AF3442E38186A537 /* SwiftyJSON */; - targetProxy = 906B0FC7D35C414F5BBE0F7DB11C519B /* PBXContainerItemProxy */; + name = Starscream; + target = 9B78EE4AF6AE03E79D88886319853FF7 /* Starscream */; + targetProxy = 2775B3BFD89D2BD3E8C8F5EC2FC6E606 /* PBXContainerItemProxy */; }; - E42065487BF3D5CC9F09CB18C7F14F01 /* PBXTargetDependency */ = { + D960B51C6B4703AE26A06BABC22BEDA9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Starscream; - target = BCC8AE0600D381881B2B45F29D3A3294 /* Starscream */; - targetProxy = 42672EE0E914C25799C038C3FFE417CC /* PBXContainerItemProxy */; + name = FayeSwift; + target = 5E551DD8B190AB276724C510971C365C /* FayeSwift */; + targetProxy = 6F1058A8B60352EF523473FC4637C180 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 015A368F878AC3E2CEAE21DDE8026304 /* Debug */ = { + 0280F92693D419278F6D1A4CA2D73F50 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = FB3947B8055ACC7D7C6AAF0280B8DD6F /* FayeSwift.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - ONLY_ACTIVE_ARCH = YES; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 1EAF7F917199C4FBC38B65DAB4BC2900 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7B3AAC1CAA0FD33A1665A6CF0609129E /* FayeSwift.xcconfig */; - buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; GCC_PREFIX_HEADER = "Target Support Files/FayeSwift/FayeSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/FayeSwift/Info.plist"; + INFOPLIST_FILE = "Target Support Files/FayeSwift/FayeSwift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/FayeSwift/FayeSwift.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_MODULE_NAME = FayeSwift; PRODUCT_NAME = FayeSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - 1FB72A1CE25626A8C0F847E37D5CAEA1 /* Release */ = { + 0603D52AE825EDD540E877878C67FC36 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4AB2D41C9043F185BD735AC2476F72C6 /* Pods-FayeSwift_Tests.release.xcconfig */; + baseConfigurationReference = 60BE70F6A7CDA17431FDDC70D47EE478 /* Starscream.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-FayeSwift_Tests/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Starscream/Starscream-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Starscream/Starscream-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_FayeSwift_Tests; + MODULEMAP_FILE = "Target Support Files/Starscream/Starscream.modulemap"; + PRODUCT_MODULE_NAME = Starscream; + PRODUCT_NAME = Starscream; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 2F218157924BD15F7EDCAD60E257E3F3 /* Release */ = { + 21DF956BB12C9FB73346E26E686A11B8 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2692C5A026D6876DF0B8ED238232F2E6 /* Pods-FayeSwift_Example.release.xcconfig */; + baseConfigurationReference = FB3947B8055ACC7D7C6AAF0280B8DD6F /* FayeSwift.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-FayeSwift_Example/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/FayeSwift/FayeSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/FayeSwift/FayeSwift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_FayeSwift_Example; + MODULEMAP_FILE = "Target Support Files/FayeSwift/FayeSwift.modulemap"; + PRODUCT_MODULE_NAME = FayeSwift; + PRODUCT_NAME = FayeSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 35CC6BCA2C91027EB00E1B38C61BE55A /* Release */ = { + 345DB24FC8F45E3C9AFA50FF59689F70 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 47C81FB96686C0BE581D0FC3090AFC0D /* Starscream.xcconfig */; + baseConfigurationReference = 92B45F50B2100AC6E199BE823EB478C5 /* Pods-FayeSwift_Tests.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Starscream/Starscream-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Starscream/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Starscream/Starscream.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Starscream; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 44CDBB6D11DE06DB64D6268622BDC47E /* Release */ = { + 4BE66A09A74FD25164AAB3C2645B9B93 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "POD_CONFIGURATION_RELEASE=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; }; name = Release; }; - 51444351DF47F3A9B3368A0D010596D9 /* Debug */ = { + 7EF7227D9B20A1D549000096ACCB23D7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1EC0280E5CCCCD96F81E63B562E157DD /* SwiftyJSON.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftyJSON/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SwiftyJSON; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; }; name = Debug; }; - 731F8E987F620E8D5A676D57ECEEC97C /* Debug */ = { + 87A6D088BA333634B8E16B9325946B0E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D26B5E2282A330BE919FE4EFDFB738B3 /* Pods-FayeSwift_Tests.debug.xcconfig */; + baseConfigurationReference = 528FBBFFC84FFBEF0E7DDF0982562E0B /* Pods-FayeSwift_Tests.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-FayeSwift_Tests/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_FayeSwift_Tests; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 8C427F0ABBE6E76366CAB4B4A39A33B9 /* Debug */ = { + A9700DB7F5654CE964808D05017DA4BE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B661AAF1FC01F5B9EB53567F4990C215 /* Pods-FayeSwift_Example.debug.xcconfig */; + baseConfigurationReference = CC09C6A1CD1691C8FE27E54FC92DC1A1 /* Pods-FayeSwift_Example.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-FayeSwift_Example/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_FayeSwift_Example; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - AA7BBD4CAC0EB5774B764450AF1AC6D9 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7B3AAC1CAA0FD33A1665A6CF0609129E /* FayeSwift.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/FayeSwift/FayeSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/FayeSwift/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/FayeSwift/FayeSwift.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = FayeSwift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - C822BE7915F9D2024FBC9D66464DC56B /* Release */ = { + B4824A9AA429D439C79C7CF378DF2F71 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1EC0280E5CCCCD96F81E63B562E157DD /* SwiftyJSON.xcconfig */; + baseConfigurationReference = 60BE70F6A7CDA17431FDDC70D47EE478 /* Starscream.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftyJSON/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Starscream/Starscream-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Starscream/Starscream-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SwiftyJSON; + MODULEMAP_FILE = "Target Support Files/Starscream/Starscream.modulemap"; + PRODUCT_MODULE_NAME = Starscream; + PRODUCT_NAME = Starscream; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - FD1B0D8FE2F7865658C8D3B65402A2D4 /* Debug */ = { + F65356282C3BDB7A0F5CA5474C8E2DAC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 47C81FB96686C0BE581D0FC3090AFC0D /* Starscream.xcconfig */; + baseConfigurationReference = A35C786F187E0EDCF9002FFF106F6C57 /* Pods-FayeSwift_Example.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Starscream/Starscream-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Starscream/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Starscream/Starscream.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Starscream; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1115,61 +1056,52 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 2C37015467BCB2CAD2C5683C1D3C7897 /* Build configuration list for PBXNativeTarget "Pods-FayeSwift_Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8C427F0ABBE6E76366CAB4B4A39A33B9 /* Debug */, - 2F218157924BD15F7EDCAD60E257E3F3 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 19188E0605D4D143004C077EDED27B04 /* Build configuration list for PBXNativeTarget "Pods-FayeSwift_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 015A368F878AC3E2CEAE21DDE8026304 /* Debug */, - 44CDBB6D11DE06DB64D6268622BDC47E /* Release */, + 345DB24FC8F45E3C9AFA50FF59689F70 /* Debug */, + 87A6D088BA333634B8E16B9325946B0E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3BC677F1AB4B06206649C8ADA8DD1440 /* Build configuration list for PBXNativeTarget "FayeSwift" */ = { + 36F39271BD362A96942CE4BF703446A3 /* Build configuration list for PBXNativeTarget "Pods-FayeSwift_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - AA7BBD4CAC0EB5774B764450AF1AC6D9 /* Debug */, - 1EAF7F917199C4FBC38B65DAB4BC2900 /* Release */, + F65356282C3BDB7A0F5CA5474C8E2DAC /* Debug */, + A9700DB7F5654CE964808D05017DA4BE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 81D03CD0D35971BA49F91CC378F0381D /* Build configuration list for PBXNativeTarget "Pods-FayeSwift_Tests" */ = { + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 731F8E987F620E8D5A676D57ECEEC97C /* Debug */, - 1FB72A1CE25626A8C0F847E37D5CAEA1 /* Release */, + 7EF7227D9B20A1D549000096ACCB23D7 /* Debug */, + 4BE66A09A74FD25164AAB3C2645B9B93 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D7B51E188C37F41CEC46650465F4DA2E /* Build configuration list for PBXNativeTarget "SwiftyJSON" */ = { + 661AAB7EF76102E76A33C8EB590798DA /* Build configuration list for PBXNativeTarget "Starscream" */ = { isa = XCConfigurationList; buildConfigurations = ( - 51444351DF47F3A9B3368A0D010596D9 /* Debug */, - C822BE7915F9D2024FBC9D66464DC56B /* Release */, + 0603D52AE825EDD540E877878C67FC36 /* Debug */, + B4824A9AA429D439C79C7CF378DF2F71 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E86FDF27E9DCFAAFE67D7E62F35E9AB0 /* Build configuration list for PBXNativeTarget "Starscream" */ = { + C9057C70529CDB027B5841A3F869598E /* Build configuration list for PBXNativeTarget "FayeSwift" */ = { isa = XCConfigurationList; buildConfigurations = ( - FD1B0D8FE2F7865658C8D3B65402A2D4 /* Debug */, - 35CC6BCA2C91027EB00E1B38C61BE55A /* Release */, + 21DF956BB12C9FB73346E26E686A11B8 /* Debug */, + 0280F92693D419278F6D1A4CA2D73F50 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; } diff --git a/Example/Pods/Starscream/README.md b/Example/Pods/Starscream/README.md index bda69c5..a98767e 100644 --- a/Example/Pods/Starscream/README.md +++ b/Example/Pods/Starscream/README.md @@ -1,21 +1,15 @@ ![starscream](https://raw.githubusercontent.com/daltoniam/starscream/assets/starscream.jpg) -Starscream is a conforming WebSocket ([RFC 6455](http://tools.ietf.org/html/rfc6455)) client library in Swift for iOS and OSX. - -It's Objective-C counter part can be found here: [Jetfire](https://github.com/acmacalister/jetfire) +Starscream is a conforming WebSocket ([RFC 6455](http://tools.ietf.org/html/rfc6455)) library in Swift. ## Features - Conforms to all of the base [Autobahn test suite](http://autobahn.ws/testsuite/). - Nonblocking. Everything happens in the background, thanks to GCD. - TLS/WSS support. -- Simple concise codebase at just a few hundred LOC. - -## Swift 2.3 - -See release/tag 1.1.4 for Swift 2.3 support. +- Compression Extensions support ([RFC 7692](https://tools.ietf.org/html/rfc7692)) -## Example +### Import the framework First thing is to import the framework. See the Installation instructions on how to add the framework to your project. @@ -23,6 +17,8 @@ First thing is to import the framework. See the Installation instructions on how import Starscream ``` +### Connect to the WebSocket Server + Once imported, you can open a connection to your WebSocket server. Note that `socket` is probably best as a property, so it doesn't get deallocated right after being setup. ```swift @@ -31,86 +27,53 @@ socket.delegate = self socket.connect() ``` -After you are connected, there are some delegate methods that we need to implement. +After you are connected, there is either a delegate or closure you can use for process WebSocket events. -### websocketDidConnect +### Receiving data from a WebSocket -websocketDidConnect is called as soon as the client connects to the server. +`didReceive` receives all the WebSocket events in a single easy to handle enum. ```swift -func websocketDidConnect(socket: WebSocket) { - print("websocket is connected") +func didReceive(event: WebSocketEvent, client: WebSocket) { + switch event { + case .connected(let headers): + isConnected = true + print("websocket is connected: \(headers)") + case .disconnected(let reason, let code): + isConnected = false + print("websocket is disconnected: \(reason) with code: \(code)") + case .text(let string): + print("Received text: \(string)") + case .binary(let data): + print("Received data: \(data.count)") + case .ping(_): + break + case .pong(_): + break + case .viablityChanged(_): + break + case .reconnectSuggested(_): + break + case .cancelled: + isConnected = false + case .error(let error): + isConnected = false + handleError(error) + } } ``` -### websocketDidDisconnect - -websocketDidDisconnect is called as soon as the client is disconnected from the server. +The closure of this would be: ```swift -func websocketDidDisconnect(socket: WebSocket, error: NSError?) { - print("websocket is disconnected: \(error?.localizedDescription)") +socket.onEvent = { event in + switch event { + // handle events just like above... + } } ``` -### websocketDidReceiveMessage - -websocketDidReceiveMessage is called when the client gets a text frame from the connection. - -```swift -func websocketDidReceiveMessage(socket: WebSocket, text: String) { - print("got some text: \(text)") -} -``` - -### websocketDidReceiveData - -websocketDidReceiveData is called when the client gets a binary frame from the connection. - -```swift -func websocketDidReceiveData(socket: WebSocket, data: Data) { - print("got some data: \(data.count)") -} -``` - -### Optional: websocketDidReceivePong *(required protocol: WebSocketPongDelegate)* - -websocketDidReceivePong is called when the client gets a pong response from the connection. You need to implement the WebSocketPongDelegate protocol and set an additional delegate, eg: ` socket.pongDelegate = self` - -```swift -func websocketDidReceivePong(socket: WebSocket, data: Data?) { - print("Got pong! Maybe some data: \(data?.count)") -} -``` - -Or you can use closures. - -```swift -socket = WebSocket(url: URL(string: "ws://localhost:8080/")!) -//websocketDidConnect -socket.onConnect = { - print("websocket is connected") -} -//websocketDidDisconnect -socket.onDisconnect = { (error: NSError?) in - print("websocket is disconnected: \(error?.localizedDescription)") -} -//websocketDidReceiveMessage -socket.onText = { (text: String) in - print("got some text: \(text)") -} -//websocketDidReceiveData -socket.onData = { (data: Data) in - print("got some data: \(data.count)") -} -//you could do onPong as well. -socket.connect() -``` - -One more: you can listen to socket connection and disconnection via notifications. Starscream posts `WebsocketDidConnectNotification` and `WebsocketDidDisconnectNotification`. You can find an `NSError` that caused the disconection by accessing `WebsocketDisconnectionErrorKeyName` on notification `userInfo`. - - -## The delegate methods give you a simple way to handle data from the server, but how do you send data? +### Writing to a WebSocket ### write a binary frame @@ -136,70 +99,69 @@ The writePing method is the same as write, but sends a ping control frame. socket.write(ping: Data()) //example on how to write a ping control frame over the socket! ``` -### disconnect +### write a pong frame -The disconnect method does what you would expect and closes the socket. + +the writePong method is the same as writePing, but sends a pong control frame. ```swift -socket.disconnect() +socket.write(pong: Data()) //example on how to write a pong control frame over the socket! ``` -### isConnected +Starscream will automatically respond to incoming `ping` control frames so you do not need to manually send `pong`s. -Returns if the socket is connected or not. +However if for some reason you need to control this process you can turn off the automatic `ping` response by disabling `respondToPingWithPong`. ```swift -if socket.isConnected { - // do cool stuff. -} +socket.respondToPingWithPong = false //Do not automaticaly respond to incoming pings with pongs. ``` -### Custom Headers +In most cases you will not need to do this. + +### disconnect -You can also override the default websocket headers with your own custom ones like so: +The disconnect method does what you would expect and closes the socket. ```swift -socket.headers["Sec-WebSocket-Protocol"] = "someother protocols" -socket.headers["Sec-WebSocket-Version"] = "14" -socket.headers["My-Awesome-Header"] = "Everything is Awesome!" +socket.disconnect() ``` -### Protocols - -If you need to specify a protocol, simple add it to the init: +The disconnect method can also send a custom close code if desired. ```swift -//chat and superchat are the example protocols here -socket = WebSocket(url: URL(string: "ws://localhost:8080/")!, protocols: ["chat","superchat"]) -socket.delegate = self -socket.connect() +socket.disconnect(closeCode: CloseCode.normal.rawValue) ``` -### Self Signed SSL and VOIP +### Custom Headers, Protocols and Timeout -There are a couple of other properties that modify the stream: +You can override the default websocket headers, add your own custom ones and set a timeout: ```swift -socket = WebSocket(url: URL(string: "ws://localhost:8080/")!, protocols: ["chat","superchat"]) - -//set this if you are planning on using the socket in a VOIP background setting (using the background VOIP service). -socket.voipEnabled = true - -//set this you want to ignore SSL cert validation, so a self signed SSL certificate can be used. -socket.disableSSLCertValidation = true +var request = URLRequest(url: URL(string: "ws://localhost:8080/")!) +request.timeoutInterval = 5 // Sets the timeout for the connection +request.setValue("someother protocols", forHTTPHeaderField: "Sec-WebSocket-Protocol") +request.setValue("14", forHTTPHeaderField: "Sec-WebSocket-Version") +request.setValue("chat,superchat", forHTTPHeaderField: "Sec-WebSocket-Protocol") +request.setValue("Everything is Awesome!", forHTTPHeaderField: "My-Awesome-Header") +let socket = WebSocket(request: request) ``` ### SSL Pinning -SSL Pinning is also supported in Starscream. +SSL Pinning is also supported in Starscream. + +TODO: Update docs on how to load certificates and public keys into an app bundle, use the builtin pinner and TrustKit. + +### Compression Extensions + +Compression Extensions ([RFC 7692](https://tools.ietf.org/html/rfc7692)) is supported in Starscream. Compression is enabled by default, however compression will only be used if it is supported by the server as well. You may enable or disable compression via the `.enableCompression` property: ```swift -socket = WebSocket(url: URL(string: "ws://localhost:8080/")!, protocols: ["chat","superchat"]) -let data = ... //load your certificate from disk -socket.security = SSLSecurity(certs: [SSLCert(data: data)], usePublicKeys: true) -//socket.security = SSLSecurity() //uses the .cer files in your app's bundle +socket = WebSocket(url: URL(string: "ws://localhost:8080/")!) +socket.enableCompression = false ``` -You load either a `Data` blob of your certificate or you can use a `SecKeyRef` if you have a public key you want to use. The `usePublicKeys` bool is whether to use the certificates for validation or the public keys. The public keys will be extracted from the certificates automatically if `usePublicKeys` is choosen. + +Compression should be disabled if your application is transmitting already-compressed, random, or other uncompressable data. ### Custom Queue @@ -217,7 +179,7 @@ Check out the SimpleTest project in the examples directory to see how to setup a ## Requirements -Starscream works with iOS 7/OSX 10.9 or above. It is recommended to use iOS 8/10.10 or above for CocoaPods/framework support. To use Starscream with a project targeting iOS 7, you must include all Swift files directly in your project. +Starscream works with iOS 8/10.10 or above for CocoaPods/framework support. To use Starscream with a project targeting iOS 7, you must include all Swift files directly in your project. ## Installation @@ -231,7 +193,7 @@ To use Starscream in your project add the following 'Podfile' to your project platform :ios, '9.0' use_frameworks! - pod 'Starscream', '~> 2.0.0' + pod 'Starscream', '~> 4.0.0' Then run: @@ -253,9 +215,32 @@ $ brew install carthage To integrate Starscream into your Xcode project using Carthage, specify it in your `Cartfile`: ``` -github "daltoniam/Starscream" >= 2.0.0 +github "daltoniam/Starscream" >= 4.0.0 +``` + +### Accio + +Check out the [Accio](https://github.com/JamitLabs/Accio) docs on how to add a install. + +Add the following to your Package.swift: + +```swift +.package(url: "https://github.com/daltoniam/Starscream.git", .upToNextMajor(from: "4.0.0")), +``` + +Next, add `Starscream` to your App targets dependencies like so: + +```swift +.target( + name: "App", + dependencies: [ + "Starscream", + ] +), ``` +Then run `accio update`. + ### Rogue First see the [installation docs](https://github.com/acmacalister/Rogue) for how to install Rogue. @@ -263,11 +248,23 @@ First see the [installation docs](https://github.com/acmacalister/Rogue) for how To install Starscream run the command below in the directory you created the rogue file. ``` -rogue add https://github.com/daltoniam/starscream +rogue add https://github.com/daltoniam/Starscream ``` Next open the `libs` folder and add the `Starscream.xcodeproj` to your Xcode project. Once that is complete, in your "Build Phases" add the `Starscream.framework` to your "Link Binary with Libraries" phase. Make sure to add the `libs` folder to your `.gitignore` file. +### Swift Package Manager + +The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. + +Once you have your Swift package set up, adding Starscream as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`. + +```swift +dependencies: [ + .Package(url: "https://github.com/daltoniam/Starscream.git", majorVersion: 4) +] +``` + ### Other Simply grab the framework (either via git submodule or another package manager). @@ -280,9 +277,7 @@ If you are running this in an OSX app or on a physical iOS device you will need ## TODOs -- [ ] WatchOS? -- [ ] Linux Support? -- [ ] Add Unit Tests - Local Swift websocket server +- [ ] Proxy support ## License diff --git a/Example/Pods/Starscream/Source/SSLSecurity.swift b/Example/Pods/Starscream/Source/SSLSecurity.swift deleted file mode 100644 index 4c7f1d2..0000000 --- a/Example/Pods/Starscream/Source/SSLSecurity.swift +++ /dev/null @@ -1,260 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////////////////////// -// -// SSLSecurity.swift -// Starscream -// -// Created by Dalton Cherry on 5/16/15. -// Copyright (c) 2014-2016 Dalton Cherry. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -////////////////////////////////////////////////////////////////////////////////////////////////// - -import Foundation -import Security - -public protocol SSLTrustValidator { - func isValid(_ trust: SecTrust, domain: String?) -> Bool -} - -open class SSLCert { - var certData: Data? - var key: SecKey? - - /** - Designated init for certificates - - - parameter data: is the binary data of the certificate - - - returns: a representation security object to be used with - */ - public init(data: Data) { - self.certData = data - } - - /** - Designated init for public keys - - - parameter key: is the public key to be used - - - returns: a representation security object to be used with - */ - public init(key: SecKey) { - self.key = key - } -} - -open class SSLSecurity : SSLTrustValidator { - public var validatedDN = true //should the domain name be validated? - - var isReady = false //is the key processing done? - var certificates: [Data]? //the certificates - var pubKeys: [SecKey]? //the public keys - var usePublicKeys = false //use public keys or certificate validation? - - /** - Use certs from main app bundle - - - parameter usePublicKeys: is to specific if the publicKeys or certificates should be used for SSL pinning validation - - - returns: a representation security object to be used with - */ - public convenience init(usePublicKeys: Bool = false) { - let paths = Bundle.main.paths(forResourcesOfType: "cer", inDirectory: ".") - - let certs = paths.reduce([SSLCert]()) { (certs: [SSLCert], path: String) -> [SSLCert] in - var certs = certs - if let data = NSData(contentsOfFile: path) { - certs.append(SSLCert(data: data as Data)) - } - return certs - } - - self.init(certs: certs, usePublicKeys: usePublicKeys) - } - - /** - Designated init - - - parameter certs: is the certificates or public keys to use - - parameter usePublicKeys: is to specific if the publicKeys or certificates should be used for SSL pinning validation - - - returns: a representation security object to be used with - */ - public init(certs: [SSLCert], usePublicKeys: Bool) { - self.usePublicKeys = usePublicKeys - - if self.usePublicKeys { - DispatchQueue.global(qos: .default).async { - let pubKeys = certs.reduce([SecKey]()) { (pubKeys: [SecKey], cert: SSLCert) -> [SecKey] in - var pubKeys = pubKeys - if let data = cert.certData, cert.key == nil { - cert.key = self.extractPublicKey(data) - } - if let key = cert.key { - pubKeys.append(key) - } - return pubKeys - } - - self.pubKeys = pubKeys - self.isReady = true - } - } else { - let certificates = certs.reduce([Data]()) { (certificates: [Data], cert: SSLCert) -> [Data] in - var certificates = certificates - if let data = cert.certData { - certificates.append(data) - } - return certificates - } - self.certificates = certificates - self.isReady = true - } - } - - /** - Valid the trust and domain name. - - - parameter trust: is the serverTrust to validate - - parameter domain: is the CN domain to validate - - - returns: if the key was successfully validated - */ - public func isValid(_ trust: SecTrust, domain: String?) -> Bool { - - var tries = 0 - while !self.isReady { - usleep(1000) - tries += 1 - if tries > 5 { - return false //doesn't appear it is going to ever be ready... - } - } - var policy: SecPolicy - if self.validatedDN { - policy = SecPolicyCreateSSL(true, domain as NSString?) - } else { - policy = SecPolicyCreateBasicX509() - } - SecTrustSetPolicies(trust,policy) - if self.usePublicKeys { - if let keys = self.pubKeys { - let serverPubKeys = publicKeyChain(trust) - for serverKey in serverPubKeys as [AnyObject] { - for key in keys as [AnyObject] { - if serverKey.isEqual(key) { - return true - } - } - } - } - } else if let certs = self.certificates { - let serverCerts = certificateChain(trust) - var collect = [SecCertificate]() - for cert in certs { - collect.append(SecCertificateCreateWithData(nil,cert as CFData)!) - } - SecTrustSetAnchorCertificates(trust,collect as NSArray) - var result: SecTrustResultType = .unspecified - SecTrustEvaluate(trust,&result) - if result == .unspecified || result == .proceed { - var trustedCount = 0 - for serverCert in serverCerts { - for cert in certs { - if cert == serverCert { - trustedCount += 1 - break - } - } - } - if trustedCount == serverCerts.count { - return true - } - } - } - return false - } - - /** - Get the public key from a certificate data - - - parameter data: is the certificate to pull the public key from - - - returns: a public key - */ - func extractPublicKey(_ data: Data) -> SecKey? { - guard let cert = SecCertificateCreateWithData(nil, data as CFData) else { return nil } - - return extractPublicKey(cert, policy: SecPolicyCreateBasicX509()) - } - - /** - Get the public key from a certificate - - - parameter data: is the certificate to pull the public key from - - - returns: a public key - */ - func extractPublicKey(_ cert: SecCertificate, policy: SecPolicy) -> SecKey? { - var possibleTrust: SecTrust? - SecTrustCreateWithCertificates(cert, policy, &possibleTrust) - - guard let trust = possibleTrust else { return nil } - var result: SecTrustResultType = .unspecified - SecTrustEvaluate(trust, &result) - return SecTrustCopyPublicKey(trust) - } - - /** - Get the certificate chain for the trust - - - parameter trust: is the trust to lookup the certificate chain for - - - returns: the certificate chain for the trust - */ - func certificateChain(_ trust: SecTrust) -> [Data] { - let certificates = (0.. [Data] in - var certificates = certificates - let cert = SecTrustGetCertificateAtIndex(trust, index) - certificates.append(SecCertificateCopyData(cert!) as Data) - return certificates - } - - return certificates - } - - /** - Get the public key chain for the trust - - - parameter trust: is the trust to lookup the certificate chain and extract the public keys - - - returns: the public keys from the certifcate chain for the trust - */ - func publicKeyChain(_ trust: SecTrust) -> [SecKey] { - let policy = SecPolicyCreateBasicX509() - let keys = (0.. [SecKey] in - var keys = keys - let cert = SecTrustGetCertificateAtIndex(trust, index) - if let key = extractPublicKey(cert!, policy: policy) { - keys.append(key) - } - - return keys - } - - return keys - } - - -} diff --git a/Example/Pods/Starscream/Source/WebSocket.swift b/Example/Pods/Starscream/Source/WebSocket.swift deleted file mode 100644 index 3b85b50..0000000 --- a/Example/Pods/Starscream/Source/WebSocket.swift +++ /dev/null @@ -1,942 +0,0 @@ -////////////////////////////////////////////////////////////////////////////////////////////////// -// -// Websocket.swift -// -// Created by Dalton Cherry on 7/16/14. -// Copyright (c) 2014-2016 Dalton Cherry. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -////////////////////////////////////////////////////////////////////////////////////////////////// - -import Foundation -import CoreFoundation -import Security - -public let WebsocketDidConnectNotification = "WebsocketDidConnectNotification" -public let WebsocketDidDisconnectNotification = "WebsocketDidDisconnectNotification" -public let WebsocketDisconnectionErrorKeyName = "WebsocketDisconnectionErrorKeyName" - -public protocol WebSocketDelegate: class { - func websocketDidConnect(socket: WebSocket) - func websocketDidDisconnect(socket: WebSocket, error: NSError?) - func websocketDidReceiveMessage(socket: WebSocket, text: String) - func websocketDidReceiveData(socket: WebSocket, data: Data) -} - -public protocol WebSocketPongDelegate: class { - func websocketDidReceivePong(socket: WebSocket, data: Data?) -} - -open class WebSocket : NSObject, StreamDelegate { - - enum OpCode : UInt8 { - case continueFrame = 0x0 - case textFrame = 0x1 - case binaryFrame = 0x2 - // 3-7 are reserved. - case connectionClose = 0x8 - case ping = 0x9 - case pong = 0xA - // B-F reserved. - } - - public enum CloseCode : UInt16 { - case normal = 1000 - case goingAway = 1001 - case protocolError = 1002 - case protocolUnhandledType = 1003 - // 1004 reserved. - case noStatusReceived = 1005 - //1006 reserved. - case encoding = 1007 - case policyViolated = 1008 - case messageTooBig = 1009 - } - - public static let ErrorDomain = "WebSocket" - - enum InternalErrorCode: UInt16 { - // 0-999 WebSocket status codes not used - case outputStreamWriteError = 1 - } - - // Where the callback is executed. It defaults to the main UI thread queue. - public var callbackQueue = DispatchQueue.main - - var optionalProtocols: [String]? - - // MARK: - Constants - - let headerWSUpgradeName = "Upgrade" - let headerWSUpgradeValue = "websocket" - let headerWSHostName = "Host" - let headerWSConnectionName = "Connection" - let headerWSConnectionValue = "Upgrade" - let headerWSProtocolName = "Sec-WebSocket-Protocol" - let headerWSVersionName = "Sec-WebSocket-Version" - let headerWSVersionValue = "13" - let headerWSKeyName = "Sec-WebSocket-Key" - let headerOriginName = "Origin" - let headerWSAcceptName = "Sec-WebSocket-Accept" - let BUFFER_MAX = 4096 - let FinMask: UInt8 = 0x80 - let OpCodeMask: UInt8 = 0x0F - let RSVMask: UInt8 = 0x70 - let MaskMask: UInt8 = 0x80 - let PayloadLenMask: UInt8 = 0x7F - let MaxFrameSize: Int = 32 - let httpSwitchProtocolCode = 101 - let supportedSSLSchemes = ["wss", "https"] - - class WSResponse { - var isFin = false - var code: OpCode = .continueFrame - var bytesLeft = 0 - var frameCount = 0 - var buffer: NSMutableData? - } - - // MARK: - Delegates - - /// Responds to callback about new messages coming in over the WebSocket - /// and also connection/disconnect messages. - public weak var delegate: WebSocketDelegate? - - /// Receives a callback for each pong message recived. - public weak var pongDelegate: WebSocketPongDelegate? - - - // MARK: - Block based API. - - public var onConnect: ((Void) -> Void)? - public var onDisconnect: ((NSError?) -> Void)? - public var onText: ((String) -> Void)? - public var onData: ((Data) -> Void)? - public var onPong: ((Data?) -> Void)? - - public var headers = [String: String]() - public var voipEnabled = false - public var disableSSLCertValidation = false - public var security: SSLTrustValidator? - public var enabledSSLCipherSuites: [SSLCipherSuite]? - public var origin: String? - public var timeout = 5 - public var isConnected: Bool { - return connected - } - - public var currentURL: URL { return url } - - // MARK: - Private - - private var url: URL - private var inputStream: InputStream? - private var outputStream: OutputStream? - private var connected = false - private var isConnecting = false - private var writeQueue = OperationQueue() - private var readStack = [WSResponse]() - private var inputQueue = [Data]() - private var fragBuffer: Data? - private var certValidated = false - private var didDisconnect = false - private var readyToWrite = false - private let mutex = NSLock() - private let notificationCenter = NotificationCenter.default - private var canDispatch: Bool { - mutex.lock() - let canWork = readyToWrite - mutex.unlock() - return canWork - } - /// The shared processing queue used for all WebSocket. - private static let sharedWorkQueue = DispatchQueue(label: "com.vluxe.starscream.websocket", attributes: []) - - /// Used for setting protocols. - public init(url: URL, protocols: [String]? = nil) { - self.url = url - self.origin = url.absoluteString - writeQueue.maxConcurrentOperationCount = 1 - optionalProtocols = protocols - } - - // Used for specifically setting the QOS for the write queue. - public convenience init(url: URL, writeQueueQOS: QualityOfService, protocols: [String]? = nil) { - self.init(url: url, protocols: protocols) - writeQueue.qualityOfService = writeQueueQOS - } - - /** - Connect to the WebSocket server on a background thread. - */ - public func connect() { - guard !isConnecting else { return } - didDisconnect = false - isConnecting = true - createHTTPRequest() - isConnecting = false - } - - /** - Disconnect from the server. I send a Close control frame to the server, then expect the server to respond with a Close control frame and close the socket from its end. I notify my delegate once the socket has been closed. - - If you supply a non-nil `forceTimeout`, I wait at most that long (in seconds) for the server to close the socket. After the timeout expires, I close the socket and notify my delegate. - - If you supply a zero (or negative) `forceTimeout`, I immediately close the socket (without sending a Close control frame) and notify my delegate. - - - Parameter forceTimeout: Maximum time to wait for the server to close the socket. - - Parameter closeCode: The code to send on disconnect. The default is the normal close code for cleanly disconnecting a webSocket. - */ - public func disconnect(forceTimeout: TimeInterval? = nil, closeCode: UInt16 = CloseCode.normal.rawValue) { - switch forceTimeout { - case .some(let seconds) where seconds > 0: - let milliseconds = Int(seconds * 1_000) - callbackQueue.asyncAfter(deadline: .now() + .milliseconds(milliseconds)) { [weak self] in - self?.disconnectStream(nil) - } - fallthrough - case .none: - writeError(closeCode) - default: - disconnectStream(nil) - break - } - } - - /** - Write a string to the websocket. This sends it as a text frame. - - If you supply a non-nil completion block, I will perform it when the write completes. - - - parameter string: The string to write. - - parameter completion: The (optional) completion handler. - */ - public func write(string: String, completion: (() -> ())? = nil) { - guard isConnected else { return } - dequeueWrite(string.data(using: String.Encoding.utf8)!, code: .textFrame, writeCompletion: completion) - } - - /** - Write binary data to the websocket. This sends it as a binary frame. - - If you supply a non-nil completion block, I will perform it when the write completes. - - - parameter data: The data to write. - - parameter completion: The (optional) completion handler. - */ - public func write(data: Data, completion: (() -> ())? = nil) { - guard isConnected else { return } - dequeueWrite(data, code: .binaryFrame, writeCompletion: completion) - } - - /** - Write a ping to the websocket. This sends it as a control frame. - Yodel a sound to the planet. This sends it as an astroid. http://youtu.be/Eu5ZJELRiJ8?t=42s - */ - public func write(ping: Data, completion: (() -> ())? = nil) { - guard isConnected else { return } - dequeueWrite(ping, code: .ping, writeCompletion: completion) - } - - /** - Private method that starts the connection. - */ - private func createHTTPRequest() { - - let urlRequest = CFHTTPMessageCreateRequest(kCFAllocatorDefault, "GET" as CFString, - url as CFURL, kCFHTTPVersion1_1).takeRetainedValue() - - var port = url.port - if port == nil { - if supportedSSLSchemes.contains(url.scheme!) { - port = 443 - } else { - port = 80 - } - } - addHeader(urlRequest, key: headerWSUpgradeName, val: headerWSUpgradeValue) - addHeader(urlRequest, key: headerWSConnectionName, val: headerWSConnectionValue) - if let protocols = optionalProtocols { - addHeader(urlRequest, key: headerWSProtocolName, val: protocols.joined(separator: ",")) - } - addHeader(urlRequest, key: headerWSVersionName, val: headerWSVersionValue) - addHeader(urlRequest, key: headerWSKeyName, val: generateWebSocketKey()) - if let origin = origin { - addHeader(urlRequest, key: headerOriginName, val: origin) - } - addHeader(urlRequest, key: headerWSHostName, val: "\(url.host!):\(port!)") - for (key, value) in headers { - addHeader(urlRequest, key: key, val: value) - } - if let cfHTTPMessage = CFHTTPMessageCopySerializedMessage(urlRequest) { - let serializedRequest = cfHTTPMessage.takeRetainedValue() - initStreamsWithData(serializedRequest as Data, Int(port!)) - } - } - - /** - Add a header to the CFHTTPMessage by using the NSString bridges to CFString - */ - private func addHeader(_ urlRequest: CFHTTPMessage, key: String, val: String) { - CFHTTPMessageSetHeaderFieldValue(urlRequest, key as CFString, val as CFString) - } - - /** - Generate a WebSocket key as needed in RFC. - */ - private func generateWebSocketKey() -> String { - var key = "" - let seed = 16 - for _ in 0..? - var writeStream: Unmanaged? - let h = url.host! as NSString - CFStreamCreatePairWithSocketToHost(nil, h, UInt32(port), &readStream, &writeStream) - inputStream = readStream!.takeRetainedValue() - outputStream = writeStream!.takeRetainedValue() - guard let inStream = inputStream, let outStream = outputStream else { return } - inStream.delegate = self - outStream.delegate = self - if supportedSSLSchemes.contains(url.scheme!) { - inStream.setProperty(StreamSocketSecurityLevel.negotiatedSSL as AnyObject, forKey: Stream.PropertyKey.socketSecurityLevelKey) - outStream.setProperty(StreamSocketSecurityLevel.negotiatedSSL as AnyObject, forKey: Stream.PropertyKey.socketSecurityLevelKey) - if disableSSLCertValidation { - let settings: [NSObject: NSObject] = [kCFStreamSSLValidatesCertificateChain: NSNumber(value: false), kCFStreamSSLPeerName: kCFNull] - inStream.setProperty(settings, forKey: kCFStreamPropertySSLSettings as Stream.PropertyKey) - outStream.setProperty(settings, forKey: kCFStreamPropertySSLSettings as Stream.PropertyKey) - } - if let cipherSuites = self.enabledSSLCipherSuites { - if let sslContextIn = CFReadStreamCopyProperty(inputStream, CFStreamPropertyKey(rawValue: kCFStreamPropertySSLContext)) as! SSLContext?, - let sslContextOut = CFWriteStreamCopyProperty(outputStream, CFStreamPropertyKey(rawValue: kCFStreamPropertySSLContext)) as! SSLContext? { - let resIn = SSLSetEnabledCiphers(sslContextIn, cipherSuites, cipherSuites.count) - let resOut = SSLSetEnabledCiphers(sslContextOut, cipherSuites, cipherSuites.count) - if resIn != errSecSuccess { - let error = self.errorWithDetail("Error setting ingoing cypher suites", code: UInt16(resIn)) - disconnectStream(error) - return - } - if resOut != errSecSuccess { - let error = self.errorWithDetail("Error setting outgoing cypher suites", code: UInt16(resOut)) - disconnectStream(error) - return - } - } - } - } else { - certValidated = true //not a https session, so no need to check SSL pinning - } - if voipEnabled { - inStream.setProperty(StreamNetworkServiceTypeValue.voIP as AnyObject, forKey: Stream.PropertyKey.networkServiceType) - outStream.setProperty(StreamNetworkServiceTypeValue.voIP as AnyObject, forKey: Stream.PropertyKey.networkServiceType) - } - - CFReadStreamSetDispatchQueue(inStream, WebSocket.sharedWorkQueue) - CFWriteStreamSetDispatchQueue(outStream, WebSocket.sharedWorkQueue) - inStream.open() - outStream.open() - - self.mutex.lock() - self.readyToWrite = true - self.mutex.unlock() - - let bytes = UnsafeRawPointer((data as NSData).bytes).assumingMemoryBound(to: UInt8.self) - var out = timeout * 1_000_000 // wait 5 seconds before giving up - writeQueue.addOperation { [weak self] in - while !outStream.hasSpaceAvailable { - usleep(100) // wait until the socket is ready - out -= 100 - if out < 0 { - self?.cleanupStream() - self?.doDisconnect(self?.errorWithDetail("write wait timed out", code: 2)) - return - } else if outStream.streamError != nil { - return // disconnectStream will be called. - } - } - outStream.write(bytes, maxLength: data.count) - } - } - - /** - Delegate for the stream methods. Processes incoming bytes - */ - public func stream(_ aStream: Stream, handle eventCode: Stream.Event) { - if let sec = security, !certValidated && [.hasBytesAvailable, .hasSpaceAvailable].contains(eventCode) { - let trust = aStream.property(forKey: kCFStreamPropertySSLPeerTrust as Stream.PropertyKey) as! SecTrust - let domain = aStream.property(forKey: kCFStreamSSLPeerName as Stream.PropertyKey) as? String - if sec.isValid(trust, domain: domain) { - certValidated = true - } else { - let error = errorWithDetail("Invalid SSL certificate", code: 1) - disconnectStream(error) - return - } - } - if eventCode == .hasBytesAvailable { - if aStream == inputStream { - processInputStream() - } - } else if eventCode == .errorOccurred { - disconnectStream(aStream.streamError as NSError?) - } else if eventCode == .endEncountered { - disconnectStream(nil) - } - } - - /** - Disconnect the stream object and notifies the delegate. - */ - private func disconnectStream(_ error: NSError?) { - if error == nil { - writeQueue.waitUntilAllOperationsAreFinished() - } else { - writeQueue.cancelAllOperations() - } - cleanupStream() - doDisconnect(error) - } - - /** - cleanup the streams. - */ - private func cleanupStream() { - outputStream?.delegate = nil - inputStream?.delegate = nil - if let stream = inputStream { - CFReadStreamSetDispatchQueue(stream, nil) - stream.close() - } - if let stream = outputStream { - CFWriteStreamSetDispatchQueue(stream, nil) - stream.close() - } - outputStream = nil - inputStream = nil - } - - /** - Handles the incoming bytes and sending them to the proper processing method. - */ - private func processInputStream() { - let buf = NSMutableData(capacity: BUFFER_MAX) - let buffer = UnsafeMutableRawPointer(mutating: buf!.bytes).assumingMemoryBound(to: UInt8.self) - let length = inputStream!.read(buffer, maxLength: BUFFER_MAX) - guard length > 0 else { return } - var process = false - if inputQueue.count == 0 { - process = true - } - inputQueue.append(Data(bytes: buffer, count: length)) - if process { - dequeueInput() - } - } - - /** - Dequeue the incoming input so it is processed in order. - */ - private func dequeueInput() { - while !inputQueue.isEmpty { - let data = inputQueue[0] - var work = data - if let fragBuffer = fragBuffer { - var combine = NSData(data: fragBuffer) as Data - combine.append(data) - work = combine - self.fragBuffer = nil - } - let buffer = UnsafeRawPointer((work as NSData).bytes).assumingMemoryBound(to: UInt8.self) - let length = work.count - if !connected { - processTCPHandshake(buffer, bufferLen: length) - } else { - processRawMessagesInBuffer(buffer, bufferLen: length) - } - inputQueue = inputQueue.filter{ $0 != data } - } - } - - /** - Handle checking the inital connection status - */ - private func processTCPHandshake(_ buffer: UnsafePointer, bufferLen: Int) { - let code = processHTTP(buffer, bufferLen: bufferLen) - switch code { - case 0: - connected = true - guard canDispatch else {return} - callbackQueue.async { [weak self] in - guard let s = self else { return } - s.onConnect?() - s.delegate?.websocketDidConnect(socket: s) - s.notificationCenter.post(name: NSNotification.Name(WebsocketDidConnectNotification), object: self) - } - case -1: - fragBuffer = Data(bytes: buffer, count: bufferLen) - break // do nothing, we are going to collect more data - default: - doDisconnect(errorWithDetail("Invalid HTTP upgrade", code: UInt16(code))) - } - } - - /** - Finds the HTTP Packet in the TCP stream, by looking for the CRLF. - */ - private func processHTTP(_ buffer: UnsafePointer, bufferLen: Int) -> Int { - let CRLFBytes = [UInt8(ascii: "\r"), UInt8(ascii: "\n"), UInt8(ascii: "\r"), UInt8(ascii: "\n")] - var k = 0 - var totalSize = 0 - for i in 0.. 0 { - let code = validateResponse(buffer, bufferLen: totalSize) - if code != 0 { - return code - } - totalSize += 1 //skip the last \n - let restSize = bufferLen - totalSize - if restSize > 0 { - processRawMessagesInBuffer(buffer + totalSize, bufferLen: restSize) - } - return 0 //success - } - return -1 // Was unable to find the full TCP header. - } - - /** - Validates the HTTP is a 101 as per the RFC spec. - */ - private func validateResponse(_ buffer: UnsafePointer, bufferLen: Int) -> Int { - let response = CFHTTPMessageCreateEmpty(kCFAllocatorDefault, false).takeRetainedValue() - CFHTTPMessageAppendBytes(response, buffer, bufferLen) - let code = CFHTTPMessageGetResponseStatusCode(response) - if code != httpSwitchProtocolCode { - return code - } - if let cfHeaders = CFHTTPMessageCopyAllHeaderFields(response) { - let headers = cfHeaders.takeRetainedValue() as NSDictionary - if let acceptKey = headers[headerWSAcceptName as NSString] as? NSString { - if acceptKey.length > 0 { - return 0 - } - } - } - return -1 - } - - /** - Read a 16 bit big endian value from a buffer - */ - private static func readUint16(_ buffer: UnsafePointer, offset: Int) -> UInt16 { - return (UInt16(buffer[offset + 0]) << 8) | UInt16(buffer[offset + 1]) - } - - /** - Read a 64 bit big endian value from a buffer - */ - private static func readUint64(_ buffer: UnsafePointer, offset: Int) -> UInt64 { - var value = UInt64(0) - for i in 0...7 { - value = (value << 8) | UInt64(buffer[offset + i]) - } - return value - } - - /** - Write a 16-bit big endian value to a buffer. - */ - private static func writeUint16(_ buffer: UnsafeMutablePointer, offset: Int, value: UInt16) { - buffer[offset + 0] = UInt8(value >> 8) - buffer[offset + 1] = UInt8(value & 0xff) - } - - /** - Write a 64-bit big endian value to a buffer. - */ - private static func writeUint64(_ buffer: UnsafeMutablePointer, offset: Int, value: UInt64) { - for i in 0...7 { - buffer[offset + i] = UInt8((value >> (8*UInt64(7 - i))) & 0xff) - } - } - - /** - Process one message at the start of `buffer`. Return another buffer (sharing storage) that contains the leftover contents of `buffer` that I didn't process. - */ - private func processOneRawMessage(inBuffer buffer: UnsafeBufferPointer) -> UnsafeBufferPointer { - let response = readStack.last - guard let baseAddress = buffer.baseAddress else {return emptyBuffer} - let bufferLen = buffer.count - if response != nil && bufferLen < 2 { - fragBuffer = Data(buffer: buffer) - return emptyBuffer - } - if let response = response, response.bytesLeft > 0 { - var len = response.bytesLeft - var extra = bufferLen - response.bytesLeft - if response.bytesLeft > bufferLen { - len = bufferLen - extra = 0 - } - response.bytesLeft -= len - response.buffer?.append(Data(bytes: baseAddress, count: len)) - _ = processResponse(response) - return buffer.fromOffset(bufferLen - extra) - } else { - let isFin = (FinMask & baseAddress[0]) - let receivedOpcode = OpCode(rawValue: (OpCodeMask & baseAddress[0])) - let isMasked = (MaskMask & baseAddress[1]) - let payloadLen = (PayloadLenMask & baseAddress[1]) - var offset = 2 - if (isMasked > 0 || (RSVMask & baseAddress[0]) > 0) && receivedOpcode != .pong { - let errCode = CloseCode.protocolError.rawValue - doDisconnect(errorWithDetail("masked and rsv data is not currently supported", code: errCode)) - writeError(errCode) - return emptyBuffer - } - let isControlFrame = (receivedOpcode == .connectionClose || receivedOpcode == .ping) - if !isControlFrame && (receivedOpcode != .binaryFrame && receivedOpcode != .continueFrame && - receivedOpcode != .textFrame && receivedOpcode != .pong) { - let errCode = CloseCode.protocolError.rawValue - doDisconnect(errorWithDetail("unknown opcode: \(receivedOpcode)", code: errCode)) - writeError(errCode) - return emptyBuffer - } - if isControlFrame && isFin == 0 { - let errCode = CloseCode.protocolError.rawValue - doDisconnect(errorWithDetail("control frames can't be fragmented", code: errCode)) - writeError(errCode) - return emptyBuffer - } - var closeCode = CloseCode.normal.rawValue - if receivedOpcode == .connectionClose { - if payloadLen == 1 { - closeCode = CloseCode.protocolError.rawValue - } else if payloadLen > 1 { - closeCode = WebSocket.readUint16(baseAddress, offset: offset) - if closeCode < 1000 || (closeCode > 1003 && closeCode < 1007) || (closeCode > 1011 && closeCode < 3000) { - closeCode = CloseCode.protocolError.rawValue - } - } - if payloadLen < 2 { - doDisconnect(errorWithDetail("connection closed by server", code: closeCode)) - writeError(closeCode) - return emptyBuffer - } - } else if isControlFrame && payloadLen > 125 { - writeError(CloseCode.protocolError.rawValue) - return emptyBuffer - } - var dataLength = UInt64(payloadLen) - if dataLength == 127 { - dataLength = WebSocket.readUint64(baseAddress, offset: offset) - offset += MemoryLayout.size - } else if dataLength == 126 { - dataLength = UInt64(WebSocket.readUint16(baseAddress, offset: offset)) - offset += MemoryLayout.size - } - if bufferLen < offset || UInt64(bufferLen - offset) < dataLength { - fragBuffer = Data(bytes: baseAddress, count: bufferLen) - return emptyBuffer - } - var len = dataLength - if dataLength > UInt64(bufferLen) { - len = UInt64(bufferLen-offset) - } - let data: Data - if len < 0 { - len = 0 - data = Data() - } else { - if receivedOpcode == .connectionClose && len > 0 { - let size = MemoryLayout.size - offset += size - len -= UInt64(size) - } - data = Data(bytes: baseAddress+offset, count: Int(len)) - } - if receivedOpcode == .connectionClose { - var closeReason = "connection closed by server" - if let customCloseReason = String(data: data, encoding: .utf8) { - closeReason = customCloseReason - } else { - closeCode = CloseCode.protocolError.rawValue - } - doDisconnect(errorWithDetail(closeReason, code: closeCode)) - writeError(closeCode) - return emptyBuffer - } - if receivedOpcode == .pong { - if canDispatch { - callbackQueue.async { [weak self] in - guard let s = self else { return } - let pongData: Data? = data.count > 0 ? data : nil - s.onPong?(pongData) - s.pongDelegate?.websocketDidReceivePong(socket: s, data: pongData) - } - } - return buffer.fromOffset(offset + Int(len)) - } - var response = readStack.last - if isControlFrame { - response = nil // Don't append pings. - } - if isFin == 0 && receivedOpcode == .continueFrame && response == nil { - let errCode = CloseCode.protocolError.rawValue - doDisconnect(errorWithDetail("continue frame before a binary or text frame", code: errCode)) - writeError(errCode) - return emptyBuffer - } - var isNew = false - if response == nil { - if receivedOpcode == .continueFrame { - let errCode = CloseCode.protocolError.rawValue - doDisconnect(errorWithDetail("first frame can't be a continue frame", - code: errCode)) - writeError(errCode) - return emptyBuffer - } - isNew = true - response = WSResponse() - response!.code = receivedOpcode! - response!.bytesLeft = Int(dataLength) - response!.buffer = NSMutableData(data: data) - } else { - if receivedOpcode == .continueFrame { - response!.bytesLeft = Int(dataLength) - } else { - let errCode = CloseCode.protocolError.rawValue - doDisconnect(errorWithDetail("second and beyond of fragment message must be a continue frame", - code: errCode)) - writeError(errCode) - return emptyBuffer - } - response!.buffer!.append(data) - } - if let response = response { - response.bytesLeft -= Int(len) - response.frameCount += 1 - response.isFin = isFin > 0 ? true : false - if isNew { - readStack.append(response) - } - _ = processResponse(response) - } - - let step = Int(offset + numericCast(len)) - return buffer.fromOffset(step) - } - } - - /** - Process all messages in the buffer if possible. - */ - private func processRawMessagesInBuffer(_ pointer: UnsafePointer, bufferLen: Int) { - var buffer = UnsafeBufferPointer(start: pointer, count: bufferLen) - repeat { - buffer = processOneRawMessage(inBuffer: buffer) - } while buffer.count >= 2 - if buffer.count > 0 { - fragBuffer = Data(buffer: buffer) - } - } - - /** - Process the finished response of a buffer. - */ - private func processResponse(_ response: WSResponse) -> Bool { - if response.isFin && response.bytesLeft <= 0 { - if response.code == .ping { - let data = response.buffer! // local copy so it is perverse for writing - dequeueWrite(data as Data, code: .pong) - } else if response.code == .textFrame { - let str: NSString? = NSString(data: response.buffer! as Data, encoding: String.Encoding.utf8.rawValue) - if str == nil { - writeError(CloseCode.encoding.rawValue) - return false - } - if canDispatch { - callbackQueue.async { [weak self] in - guard let s = self else { return } - s.onText?(str! as String) - s.delegate?.websocketDidReceiveMessage(socket: s, text: str! as String) - } - } - } else if response.code == .binaryFrame { - if canDispatch { - let data = response.buffer! // local copy so it is perverse for writing - callbackQueue.async { [weak self] in - guard let s = self else { return } - s.onData?(data as Data) - s.delegate?.websocketDidReceiveData(socket: s, data: data as Data) - } - } - } - readStack.removeLast() - return true - } - return false - } - - /** - Create an error - */ - private func errorWithDetail(_ detail: String, code: UInt16) -> NSError { - var details = [String: String]() - details[NSLocalizedDescriptionKey] = detail - return NSError(domain: WebSocket.ErrorDomain, code: Int(code), userInfo: details) - } - - /** - Write an error to the socket - */ - private func writeError(_ code: UInt16) { - let buf = NSMutableData(capacity: MemoryLayout.size) - let buffer = UnsafeMutableRawPointer(mutating: buf!.bytes).assumingMemoryBound(to: UInt8.self) - WebSocket.writeUint16(buffer, offset: 0, value: code) - dequeueWrite(Data(bytes: buffer, count: MemoryLayout.size), code: .connectionClose) - } - - /** - Used to write things to the stream - */ - private func dequeueWrite(_ data: Data, code: OpCode, writeCompletion: (() -> ())? = nil) { - writeQueue.addOperation { [weak self] in - //stream isn't ready, let's wait - guard let s = self else { return } - var offset = 2 - let dataLength = data.count - let frame = NSMutableData(capacity: dataLength + s.MaxFrameSize) - let buffer = UnsafeMutableRawPointer(frame!.mutableBytes).assumingMemoryBound(to: UInt8.self) - buffer[0] = s.FinMask | code.rawValue - if dataLength < 126 { - buffer[1] = CUnsignedChar(dataLength) - } else if dataLength <= Int(UInt16.max) { - buffer[1] = 126 - WebSocket.writeUint16(buffer, offset: offset, value: UInt16(dataLength)) - offset += MemoryLayout.size - } else { - buffer[1] = 127 - WebSocket.writeUint64(buffer, offset: offset, value: UInt64(dataLength)) - offset += MemoryLayout.size - } - buffer[1] |= s.MaskMask - let maskKey = UnsafeMutablePointer(buffer + offset) - _ = SecRandomCopyBytes(kSecRandomDefault, Int(MemoryLayout.size), maskKey) - offset += MemoryLayout.size - - for i in 0...size] - offset += 1 - } - var total = 0 - while true { - guard let outStream = s.outputStream else { break } - let writeBuffer = UnsafeRawPointer(frame!.bytes+total).assumingMemoryBound(to: UInt8.self) - let len = outStream.write(writeBuffer, maxLength: offset-total) - if len < 0 { - var error: Error? - if let streamError = outStream.streamError { - error = streamError - } else { - let errCode = InternalErrorCode.outputStreamWriteError.rawValue - error = s.errorWithDetail("output stream error during write", code: errCode) - } - s.doDisconnect(error as NSError?) - break - } else { - total += len - } - if total >= offset { - if let queue = self?.callbackQueue, let callback = writeCompletion { - queue.async { - callback() - } - } - - break - } - } - - } - } - - /** - Used to preform the disconnect delegate - */ - private func doDisconnect(_ error: NSError?) { - guard !didDisconnect else { return } - didDisconnect = true - connected = false - guard canDispatch else {return} - callbackQueue.async { [weak self] in - guard let s = self else { return } - s.onDisconnect?(error) - s.delegate?.websocketDidDisconnect(socket: s, error: error) - let userInfo = error.map{ [WebsocketDisconnectionErrorKeyName: $0] } - s.notificationCenter.post(name: NSNotification.Name(WebsocketDidDisconnectNotification), object: self, userInfo: userInfo) - } - } - - // MARK: - Deinit - - deinit { - mutex.lock() - readyToWrite = false - mutex.unlock() - cleanupStream() - } - -} - -private extension Data { - - init(buffer: UnsafeBufferPointer) { - self.init(bytes: buffer.baseAddress!, count: buffer.count) - } - -} - -private extension UnsafeBufferPointer { - - func fromOffset(_ offset: Int) -> UnsafeBufferPointer { - return UnsafeBufferPointer(start: baseAddress?.advanced(by: offset), count: count - offset) - } - -} - -private let emptyBuffer = UnsafeBufferPointer(start: nil, count: 0) diff --git a/Example/Pods/SwiftyJSON/LICENSE b/Example/Pods/SwiftyJSON/LICENSE deleted file mode 100644 index 916a0ac..0000000 --- a/Example/Pods/SwiftyJSON/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Ruoyu Fu - -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. diff --git a/Example/Pods/SwiftyJSON/README.md b/Example/Pods/SwiftyJSON/README.md deleted file mode 100644 index 0f29db0..0000000 --- a/Example/Pods/SwiftyJSON/README.md +++ /dev/null @@ -1,459 +0,0 @@ -# SwiftyJSON - -[![Travis CI](https://travis-ci.org/SwiftyJSON/SwiftyJSON.svg?branch=master)](https://travis-ci.org/SwiftyJSON/SwiftyJSON) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) ![CocoaPods](https://img.shields.io/cocoapods/v/SwiftyJSON.svg) ![Platform](https://img.shields.io/badge/platforms-iOS%208.0+%20%7C%20macOS%2010.10+%20%7C%20tvOS%209.0+%20%7C%20watchOS%202.0+-333333.svg) - -SwiftyJSON makes it easy to deal with JSON data in Swift. - -1. [Why is the typical JSON handling in Swift NOT good](#why-is-the-typical-json-handling-in-swift-not-good) -2. [Requirements](#requirements) -3. [Integration](#integration) -4. [Usage](#usage) - - [Initialization](#initialization) - - [Subscript](#subscript) - - [Loop](#loop) - - [Error](#error) - - [Optional getter](#optional-getter) - - [Non-optional getter](#non-optional-getter) - - [Setter](#setter) - - [Raw object](#raw-object) - - [Literal convertibles](#literal-convertibles) -5. [Work with Alamofire](#work-with-alamofire) - -> For Legacy Swift support, take a look at the [swift2 branch](https://github.com/SwiftyJSON/SwiftyJSON/tree/swift2) - -> [中文介绍](http://tangplin.github.io/swiftyjson/) - - -## Why is the typical JSON handling in Swift NOT good? - -Swift is very strict about types. But although explicit typing is good for saving us from mistakes, it becomes painful when dealing with JSON and other areas that are, by nature, implicit about types. - -Take the Twitter API for example. Say we want to retrieve a user's "name" value of some tweet in Swift (according to Twitter's API https://dev.twitter.com/docs/api/1.1/get/statuses/home_timeline). - -The code would look like this: - -```swift -if let statusesArray = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: Any]], - let user = statusesArray[0]["user"] as? [String: Any], - let username = user["name"] as? String { - // Finally we got the username -} -``` - -It's not good. - -Even if we use optional chaining, it would be messy: - -```swift -if let JSONObject = try JSONSerialization.jsonObject(with: data,, options: .allowFragments) as? [[String: Any]], - let username = (JSONObject[0]["user"] as? [String: Any])?["name"] as? String { - // There's our username -} -``` - -An unreadable mess--for something that should really be simple! - -With SwiftyJSON all you have to do is: - -```swift -let json = JSON(data: dataFromNetworking) -if let userName = json[0]["user"]["name"].string { - //Now you got your value -} -``` - -And don't worry about the Optional Wrapping thing. It's done for you automatically. - -```swift -let json = JSON(data: dataFromNetworking) -if let userName = json[999999]["wrong_key"]["wrong_name"].string { - //Calm down, take it easy, the ".string" property still produces the correct Optional String type with safety -} else { - //Print the error - print(json[999999]["wrong_key"]["wrong_name"]) -} -``` - -## Requirements - -- iOS 8.0+ | macOS 10.10+ | tvOS 9.0+ | watchOS 2.0+ -- Xcode 8 - -## Integration - -#### CocoaPods (iOS 8+, OS X 10.9+) - -You can use [CocoaPods](http://cocoapods.org/) to install `SwiftyJSON`by adding it to your `Podfile`: - -```ruby -platform :ios, '8.0' -use_frameworks! - -target 'MyApp' do - pod 'SwiftyJSON' -end -``` - -Note that this requires CocoaPods version 36, and your iOS deployment target to be at least 8.0: - - -#### Carthage (iOS 8+, OS X 10.9+) - -You can use [Carthage](https://github.com/Carthage/Carthage) to install `SwiftyJSON` by adding it to your `Cartfile`: - -``` -github "SwiftyJSON/SwiftyJSON" -``` - -#### Swift Package Manager - -You can use [The Swift Package Manager](https://swift.org/package-manager) to install `SwiftyJSON` by adding the proper description to your `Package.swift` file: - -```swift -import PackageDescription - -let package = Package( - name: "YOUR_PROJECT_NAME", - targets: [], - dependencies: [ - .Package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", versions: Version(1,0,0).. = json["list"].arrayValue -``` - -```swift -//If not a Dictionary or nil, return [:] -let user: Dictionary = json["user"].dictionaryValue -``` - -#### Setter - -```swift -json["name"] = JSON("new-name") -json[0] = JSON(1) -``` - -```swift -json["id"].int = 1234567890 -json["coordinate"].double = 8766.766 -json["name"].string = "Jack" -json.arrayObject = [1,2,3,4] -json.dictionaryObject = ["name":"Jack", "age":25] -``` - -#### Raw object - -```swift -let jsonObject: Any = json.object -``` - -```swift -if let jsonObject: Any = json.rawValue -``` - -```swift -//convert the JSON to raw NSData -if let data = json.rawData() { - //Do something you want -} -``` - -```swift -//convert the JSON to a raw String -if let string = json.rawString() { - //Do something you want -} -``` - -#### Existence - -```swift -//shows you whether value specified in JSON or not -if json["name"].exists() -``` - -#### Literal convertibles - -For more info about literal convertibles: [Swift Literal Convertibles](http://nshipster.com/swift-literal-convertible/) - -```swift -//StringLiteralConvertible -let json: JSON = "I'm a json" -``` - -```swift -//IntegerLiteralConvertible -let json: JSON = 12345 -``` - -```swift -//BooleanLiteralConvertible -let json: JSON = true -``` - -```swift -//FloatLiteralConvertible -let json: JSON = 2.8765 -``` - -```swift -//DictionaryLiteralConvertible -let json: JSON = ["I":"am", "a":"json"] -``` - -```swift -//ArrayLiteralConvertible -let json: JSON = ["I", "am", "a", "json"] -``` - -```swift -//NilLiteralConvertible -let json: JSON = nil -``` - -```swift -//With subscript in array -var json: JSON = [1,2,3] -json[0] = 100 -json[1] = 200 -json[2] = 300 -json[999] = 300 //Don't worry, nothing will happen -``` - -```swift -//With subscript in dictionary -var json: JSON = ["name": "Jack", "age": 25] -json["name"] = "Mike" -json["age"] = "25" //It's OK to set String -json["address"] = "L.A." // Add the "address": "L.A." in json -``` - -```swift -//Array & Dictionary -var json: JSON = ["name": "Jack", "age": 25, "list": ["a", "b", "c", ["what": "this"]]] -json["list"][3]["what"] = "that" -json["list",3,"what"] = "that" -let path: [JSONSubscriptType] = ["list",3,"what"] -json[path] = "that" -``` - -```swift -//With other JSON objects -let user: JSON = ["username" : "Steve", "password": "supersecurepassword"] -let auth: JSON = [ - "user": user.object //use user.object instead of just user - "apikey": "supersecretapitoken" -] -``` - -## Work with Alamofire - -SwiftyJSON nicely wraps the result of the Alamofire JSON response handler: - -```swift -Alamofire.request(.GET, url).validate().responseJSON { response in - switch response.result { - case .success(let value): - let json = JSON(value) - print("JSON: \(json)") - case .failure(let error): - print(error) - } -} -``` diff --git a/Example/Pods/SwiftyJSON/Source/SwiftyJSON.swift b/Example/Pods/SwiftyJSON/Source/SwiftyJSON.swift deleted file mode 100644 index 3cf9e00..0000000 --- a/Example/Pods/SwiftyJSON/Source/SwiftyJSON.swift +++ /dev/null @@ -1,1344 +0,0 @@ -// SwiftyJSON.swift -// -// Copyright (c) 2014 - 2016 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://www.json.org - */ -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: The NSErrorPointer used to return the error. `nil` by default. - - - returns: The created JSON - */ - public init(data:Data, options opt: JSONSerialization.ReadingOptions = .allowFragments, error: NSErrorPointer = nil) { - do { - let object: Any = try JSONSerialization.jsonObject(with: data, options: opt) - self.init(object) - } catch let aError as NSError { - if error != nil { - error?.pointee = aError - } - self.init(NSNull()) - } - } - - /** - Creates a JSON from JSON string - - parameter string: Normal json string like '{"a":"b"}' - - - returns: The created JSON - */ - public static func parse(_ string:String) -> JSON { - return string.data(using: String.Encoding.utf8) - .flatMap{ JSON(data: $0) } ?? JSON(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: Any) { - 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: Any](minimumCapacity: jsonDictionary.count) - for (key, json) in jsonDictionary { - dictionary[key] = json.object - } - self.init(dictionary) - } - - /// Private object - fileprivate var rawArray: [Any] = [] - fileprivate var rawDictionary: [String : Any] = [:] - fileprivate var rawString: String = "" - fileprivate var rawNumber: NSNumber = 0 - fileprivate var rawNull: NSNull = NSNull() - fileprivate var rawBool: Bool = false - /// Private type - fileprivate var _type: Type = .null - /// prviate error - fileprivate var _error: NSError? = nil - - /// Object in JSON - public var object: Any { - 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.rawBool - default: - return self.rawNull - } - } - set { - _error = nil - switch newValue { - case let number as NSNumber: - if number.isBool { - _type = .bool - self.rawBool = number.boolValue - } 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 [JSON]: - _type = .array - self.rawArray = array.map { $0.object } - case let array as [Any]: - _type = .array - self.rawArray = array - case let dictionary as [String : Any]: - _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()) } } -} - -public enum JSONIndex:Comparable -{ - case array(Int) - case dictionary(DictionaryIndex) - case null - - static public func ==(lhs: JSONIndex, rhs: JSONIndex) -> Bool - { - switch (lhs, rhs) - { - case (.array(let left), .array(let right)): - return left == right - case (.dictionary(let left), .dictionary(let right)): - return left == right - case (.null, .null): return true - default: - return false - } - } - - static public func <(lhs: JSONIndex, rhs: JSONIndex) -> Bool - { - switch (lhs, rhs) - { - case (.array(let left), .array(let right)): - return left < right - case (.dictionary(let left), .dictionary(let right)): - return left < right - default: - return false - } - } - -} - -public enum JSONRawIndex: Comparable -{ - case array(Int) - case dictionary(DictionaryIndex) - case null - - static public func ==(lhs: JSONRawIndex, rhs: JSONRawIndex) -> Bool - { - switch (lhs, rhs) - { - case (.array(let left), .array(let right)): - return left == right - case (.dictionary(let left), .dictionary(let right)): - return left == right - case (.null, .null): return true - default: - return false - } - } - - static public func <(lhs: JSONRawIndex, rhs: JSONRawIndex) -> Bool - { - switch (lhs, rhs) - { - case (.array(let left), .array(let right)): - return left < right - case (.dictionary(let left), .dictionary(let right)): - return left < right - default: - return false - } - } - - -} - -extension JSON: Collection -{ - - public typealias Index = JSONRawIndex - - public var startIndex: Index - { - switch type - { - case .array: - return .array(rawArray.startIndex) - case .dictionary: - return .dictionary(rawDictionary.startIndex) - default: - return .null - } - } - - public var endIndex: Index - { - switch type - { - case .array: - return .array(rawArray.endIndex) - case .dictionary: - return .dictionary(rawDictionary.endIndex) - default: - return .null - } - } - - public func index(after i: Index) -> Index - { - switch i - { - case .array(let idx): - return .array(rawArray.index(after: idx)) - case .dictionary(let idx): - return .dictionary(rawDictionary.index(after: idx)) - default: - return .null - } - - } - - public subscript (position: Index) -> (String, JSON) - { - switch position - { - case .array(let idx): - return (String(idx), JSON(self.rawArray[idx])) - case .dictionary(let idx): - let (key, value) = self.rawDictionary[idx] - return (key, JSON(value)) - default: - return ("", JSON.null) - } - } - - -} - -// MARK: - Subscript - -/** - * To mark both String and Int can be used in subscript. - */ -public enum JSONKey -{ - case index(Int) - case key(String) -} - -public protocol JSONSubscriptType { - var jsonKey:JSONKey { get } -} - -extension Int: JSONSubscriptType { - public var jsonKey:JSONKey { - return JSONKey.index(self) - } -} - -extension String: JSONSubscriptType { - public var jsonKey:JSONKey { - return JSONKey.key(self) - } -} - -extension JSON { - - /// If `type` is `.Array`, return json whose object is `array[index]`, otherwise return null json with error. - fileprivate 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 whose object is `dictionary[key]` , otherwise return null json with error. - fileprivate 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:)`. - fileprivate subscript(sub sub: JSONSubscriptType) -> JSON { - get { - switch sub.jsonKey { - case .index(let index): return self[index: index] - case .key(let key): return self[key: key] - } - } - set { - switch sub.jsonKey { - case .index(let index): self[index: index] = newValue - case .key(let key): self[key: key] = newValue - } - } - } - - /** - Find a json in the complex data structures by using array of Int and/or String as path. - - - 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.remove(at: 0) - var nextJSON = self[sub: path[0]] - nextJSON[aPath] = newValue - self[sub: path[0]] = nextJSON - } - } - } - - /** - Find a json in the complex data structures by using array of Int and/or String as path. - - - 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.ExpressibleByStringLiteral { - - public init(stringLiteral value: StringLiteralType) { - self.init(value as Any) - } - - public init(extendedGraphemeClusterLiteral value: StringLiteralType) { - self.init(value as Any) - } - - public init(unicodeScalarLiteral value: StringLiteralType) { - self.init(value as Any) - } -} - -extension JSON: Swift.ExpressibleByIntegerLiteral { - - public init(integerLiteral value: IntegerLiteralType) { - self.init(value as Any) - } -} - -extension JSON: Swift.ExpressibleByBooleanLiteral { - - public init(booleanLiteral value: BooleanLiteralType) { - self.init(value as Any) - } -} - -extension JSON: Swift.ExpressibleByFloatLiteral { - - public init(floatLiteral value: FloatLiteralType) { - self.init(value as Any) - } -} - -extension JSON: Swift.ExpressibleByDictionaryLiteral { - public init(dictionaryLiteral elements: (String, Any)...) { - let array = elements - self.init(dictionaryLiteral: array) - } - - public init(dictionaryLiteral elements: [(String, Any)]) { - let jsonFromDictionaryLiteral: ([String : Any]) -> JSON = { dictionary in - let initializeElement = Array(dictionary.keys).flatMap { key -> (String, Any)? in - if let value = dictionary[key] { - return (key, value) - } - return nil - } - return JSON(dictionaryLiteral: initializeElement) - } - - var dict = [String : Any](minimumCapacity: elements.count) - - for element in elements { - let elementToSet: Any - if let json = element.1 as? JSON { - elementToSet = json.object - } else if let jsonArray = element.1 as? [JSON] { - elementToSet = JSON(jsonArray).object - } else if let dictionary = element.1 as? [String : Any] { - elementToSet = jsonFromDictionaryLiteral(dictionary).object - } else if let dictArray = element.1 as? [[String : Any]] { - let jsonArray = dictArray.map { jsonFromDictionaryLiteral($0) } - elementToSet = JSON(jsonArray).object - } else { - elementToSet = element.1 - } - dict[element.0] = elementToSet - } - - self.init(dict) - } -} - -extension JSON: Swift.ExpressibleByArrayLiteral { - - public init(arrayLiteral elements: Any...) { - self.init(elements as Any) - } -} - -extension JSON: Swift.ExpressibleByNilLiteral { - - @available(*, deprecated, message: "use JSON.null instead. Will be removed in future versions") - public init(nilLiteral: ()) { - self.init(NSNull() as Any) - } -} - -// MARK: - Raw - -extension JSON: Swift.RawRepresentable { - - public init?(rawValue: Any) { - if JSON(rawValue).type == .unknown { - return nil - } else { - self.init(rawValue) - } - } - - public var rawValue: Any { - return self.object - } - - public func rawData(options opt: JSONSerialization.WritingOptions = JSONSerialization.WritingOptions(rawValue: 0)) throws -> Data { - guard JSONSerialization.isValidJSONObject(self.object) else { - throw NSError(domain: ErrorDomain, code: ErrorInvalidJSON, userInfo: [NSLocalizedDescriptionKey: "JSON is invalid"]) - } - - return try JSONSerialization.data(withJSONObject: self.object, options: opt) - } - - public func rawString(_ encoding: String.Encoding = String.Encoding.utf8, options opt: JSONSerialization.WritingOptions = .prettyPrinted) -> String? { - switch self.type { - case .array, .dictionary: - do { - let data = try self.rawData(options: opt) - return String(data: data, encoding: encoding) - } catch _ { - return nil - } - case .string: - return self.rawString - case .number: - return self.rawNumber.stringValue - case .bool: - return self.rawBool.description - case .null: - return "null" - default: - return nil - } - } -} - -// MARK: - Printable, DebugPrintable - -extension JSON: Swift.CustomStringConvertible, Swift.CustomDebugStringConvertible { - - 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 [Any] - public var arrayObject: [Any]? { - get { - switch self.type { - case .array: - return self.rawArray - default: - return nil - } - } - set { - if let array = newValue { - self.object = array as Any - } else { - self.object = NSNull() - } - } - } -} - -// MARK: - Dictionary - -extension JSON { - - //Optional [String : JSON] - public var dictionary: [String : JSON]? { - if self.type == .dictionary { - var d = [String : JSON](minimumCapacity: rawDictionary.count) - for (key, value) in rawDictionary { - d[key] = JSON(value) - } - return d - } else { - return nil - } - } - - //Non-optional [String : JSON] - public var dictionaryValue: [String : JSON] { - return self.dictionary ?? [:] - } - - //Optional [String : Any] - - public var dictionaryObject: [String : Any]? { - get { - switch self.type { - case .dictionary: - return self.rawDictionary - default: - return nil - } - } - set { - if let v = newValue { - self.object = v as Any - } else { - self.object = NSNull() - } - } - } -} - -// MARK: - Bool - -extension JSON { // : Swift.Bool - - //Optional bool - public var bool: Bool? { - get { - switch self.type { - case .bool: - return self.rawBool - default: - return nil - } - } - set { - if let newValue = newValue { - self.object = newValue as Bool - } else { - self.object = NSNull() - } - } - } - - //Non-optional bool - public var boolValue: Bool { - get { - switch self.type { - case .bool: - return self.rawBool - case .number: - return self.rawNumber.boolValue - case .string: - return ["true", "y", "t"].contains() { (truthyString) in - return self.rawString.caseInsensitiveCompare(truthyString) == .orderedSame - } - default: - return false - } - } - set { - self.object = 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 let newValue = newValue { - 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.rawNumber.stringValue - case .bool: - return (self.object as? Bool).map { String($0) } ?? "" - default: - return "" - } - } - set { - self.object = NSString(string:newValue) - } - } -} - -// MARK: - Number -extension JSON { - - //Optional number - public var number: NSNumber? { - get { - switch self.type { - case .number: - return self.rawNumber - case .bool: - return NSNumber(value: self.rawBool ? 1 : 0) - 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: - return self.object as? NSNumber ?? NSNumber(value: 0) - case .bool: - return NSNumber(value: self.rawBool ? 1 : 0) - default: - return NSNumber(value: 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 exists() -> Bool{ - if let errorValue = error, errorValue.code == ErrorNotExist || - errorValue.code == ErrorIndexOutOfBounds || - errorValue.code == ErrorWrongType { - return false - } - return true - } -} - -//MARK: - URL -extension JSON { - - //Optional URL - public var URL: URL? { - get { - switch self.type { - case .string: - if let encodedString_ = self.rawString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed) { - // We have to use `Foundation.URL` otherwise it conflicts with the variable name. - return Foundation.URL(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 let newValue = newValue { - self.object = NSNumber(value: newValue) - } else { - self.object = NSNull() - } - } - } - - public var doubleValue: Double { - get { - return self.numberValue.doubleValue - } - set { - self.object = NSNumber(value: newValue) - } - } - - public var float: Float? { - get { - return self.number?.floatValue - } - set { - if let newValue = newValue { - self.object = NSNumber(value: newValue) - } else { - self.object = NSNull() - } - } - } - - public var floatValue: Float { - get { - return self.numberValue.floatValue - } - set { - self.object = NSNumber(value: newValue) - } - } - - public var int: Int? - { - get - { - return self.number?.intValue - } - set - { - if let newValue = newValue - { - self.object = NSNumber(value: newValue) - } else - { - self.object = NSNull() - } - } - } - - public var intValue: Int { - get { - return self.numberValue.intValue - } - set { - self.object = NSNumber(value: newValue) - } - } - - public var uInt: UInt? { - get { - return self.number?.uintValue - } - set { - if let newValue = newValue { - self.object = NSNumber(value: newValue) - } else { - self.object = NSNull() - } - } - } - - public var uIntValue: UInt { - get { - return self.numberValue.uintValue - } - set { - self.object = NSNumber(value: newValue) - } - } - - public var int8: Int8? { - get { - return self.number?.int8Value - } - set { - if let newValue = newValue { - self.object = NSNumber(value: newValue) - } else { - self.object = NSNull() - } - } - } - - public var int8Value: Int8 { - get { - return self.numberValue.int8Value - } - set { - self.object = NSNumber(value: newValue) - } - } - - public var uInt8: UInt8? { - get { - return self.number?.uint8Value - } - set { - if let newValue = newValue { - self.object = NSNumber(value: newValue) - } else { - self.object = NSNull() - } - } - } - - public var uInt8Value: UInt8 { - get { - return self.numberValue.uint8Value - } - set { - self.object = NSNumber(value: newValue) - } - } - - public var int16: Int16? { - get { - return self.number?.int16Value - } - set { - if let newValue = newValue { - self.object = NSNumber(value: newValue) - } else { - self.object = NSNull() - } - } - } - - public var int16Value: Int16 { - get { - return self.numberValue.int16Value - } - set { - self.object = NSNumber(value: newValue) - } - } - - public var uInt16: UInt16? { - get { - return self.number?.uint16Value - } - set { - if let newValue = newValue { - self.object = NSNumber(value: newValue) - } else { - self.object = NSNull() - } - } - } - - public var uInt16Value: UInt16 { - get { - return self.numberValue.uint16Value - } - set { - self.object = NSNumber(value: newValue) - } - } - - public var int32: Int32? { - get { - return self.number?.int32Value - } - set { - if let newValue = newValue { - self.object = NSNumber(value: newValue) - } else { - self.object = NSNull() - } - } - } - - public var int32Value: Int32 { - get { - return self.numberValue.int32Value - } - set { - self.object = NSNumber(value: newValue) - } - } - - public var uInt32: UInt32? { - get { - return self.number?.uint32Value - } - set { - if let newValue = newValue { - self.object = NSNumber(value: newValue) - } else { - self.object = NSNull() - } - } - } - - public var uInt32Value: UInt32 { - get { - return self.numberValue.uint32Value - } - set { - self.object = NSNumber(value: newValue) - } - } - - public var int64: Int64? { - get { - return self.number?.int64Value - } - set { - if let newValue = newValue { - self.object = NSNumber(value: newValue) - } else { - self.object = NSNull() - } - } - } - - public var int64Value: Int64 { - get { - return self.numberValue.int64Value - } - set { - self.object = NSNumber(value: newValue) - } - } - - public var uInt64: UInt64? { - get { - return self.number?.uint64Value - } - set { - if let newValue = newValue { - self.object = NSNumber(value: newValue) - } else { - self.object = NSNull() - } - } - } - - public var uInt64Value: UInt64 { - get { - return self.numberValue.uint64Value - } - set { - self.object = NSNumber(value: 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.rawBool == rhs.rawBool - 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.rawBool == rhs.rawBool - 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.rawBool == rhs.rawBool - 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(value: true) -private let falseNumber = NSNumber(value: false) -private let trueObjCType = String(cString: trueNumber.objCType) -private let falseObjCType = String(cString: falseNumber.objCType) - -// MARK: - NSNumber: Comparable - -extension NSNumber { - var isBool:Bool { - get { - let objCType = String(cString: self.objCType) - if (self.compare(trueNumber) == .orderedSame && objCType == trueObjCType) || (self.compare(falseNumber) == .orderedSame && objCType == falseObjCType){ - return true - } else { - return false - } - } - } -} - -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) == .orderedSame - } -} - -func !=(lhs: NSNumber, rhs: NSNumber) -> Bool { - return !(lhs == rhs) -} - -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) == .orderedAscending - } -} - -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) == ComparisonResult.orderedDescending - } -} - -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) != .orderedDescending - } -} - -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) != .orderedAscending - } -} diff --git a/Example/Pods/Target Support Files/FayeSwift/FayeSwift-prefix.pch b/Example/Pods/Target Support Files/FayeSwift/FayeSwift-prefix.pch index aa992a4..beb2a24 100644 --- a/Example/Pods/Target Support Files/FayeSwift/FayeSwift-prefix.pch +++ b/Example/Pods/Target Support Files/FayeSwift/FayeSwift-prefix.pch @@ -1,4 +1,12 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/Example/Pods/Target Support Files/FayeSwift/FayeSwift-umbrella.h b/Example/Pods/Target Support Files/FayeSwift/FayeSwift-umbrella.h index 66dbc4c..a53d068 100644 --- a/Example/Pods/Target Support Files/FayeSwift/FayeSwift-umbrella.h +++ b/Example/Pods/Target Support Files/FayeSwift/FayeSwift-umbrella.h @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/Example/Pods/Target Support Files/FayeSwift/FayeSwift.xcconfig b/Example/Pods/Target Support Files/FayeSwift/FayeSwift.xcconfig index a0741be..99bbdae 100644 --- a/Example/Pods/Target Support Files/FayeSwift/FayeSwift.xcconfig +++ b/Example/Pods/Target Support Files/FayeSwift/FayeSwift.xcconfig @@ -1,10 +1,11 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/FayeSwift -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Starscream" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" "-suppress-warnings" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-acknowledgements.markdown index 23b60d7..7a5d91b 100644 --- a/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-acknowledgements.markdown +++ b/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-acknowledgements.markdown @@ -202,29 +202,4 @@ THE SOFTWARE. defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -## SwiftyJSON - -The MIT License (MIT) - -Copyright (c) 2016 Ruoyu Fu - -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. - Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-acknowledgements.plist index c8419dd..2e350b7 100644 --- a/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-acknowledgements.plist @@ -226,37 +226,6 @@ THE SOFTWARE. Type PSGroupSpecifier - - FooterText - The MIT License (MIT) - -Copyright (c) 2016 Ruoyu Fu - -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. - - License - MIT - Title - SwiftyJSON - Type - PSGroupSpecifier - FooterText Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-frameworks.sh index 9dfadae..9a8cb17 100755 --- a/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-frameworks.sh @@ -1,11 +1,33 @@ #!/bin/sh set -e +set -u +set -o pipefail + +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -19,19 +41,24 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink "${source}")" fi - # use filter instead of exclude so missing patterns dont' throw errors - echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device @@ -45,7 +72,7 @@ install_framework() # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" @@ -54,42 +81,93 @@ install_framework() fi } +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi + fi +} + +# Copies the bcsymbolmap files of a vendored framework +install_bcsymbolmap() { + local bcsymbolmap_path="$1" + local destination="${BUILT_PRODUCTS_DIR}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" +} + # Signs a framework with the provided identity code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" - /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" fi } # Strip invalid architectures strip_invalid_archs() { binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi stripped="" - for arch in $archs; do - if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi + STRIP_BINARY_RETVAL=1 } if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/FayeSwift/FayeSwift.framework" - install_framework "$BUILT_PRODUCTS_DIR/Starscream/Starscream.framework" - install_framework "$BUILT_PRODUCTS_DIR/SwiftyJSON/SwiftyJSON.framework" + install_framework "${BUILT_PRODUCTS_DIR}/FayeSwift/FayeSwift.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Starscream/Starscream.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/FayeSwift/FayeSwift.framework" - install_framework "$BUILT_PRODUCTS_DIR/Starscream/Starscream.framework" - install_framework "$BUILT_PRODUCTS_DIR/SwiftyJSON/SwiftyJSON.framework" + install_framework "${BUILT_PRODUCTS_DIR}/FayeSwift/FayeSwift.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Starscream/Starscream.framework" +fi +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait fi diff --git a/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-umbrella.h b/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-umbrella.h index 6c81454..e43036b 100644 --- a/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-umbrella.h +++ b/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example-umbrella.h @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example.debug.xcconfig index 94ce487..71905a3 100644 --- a/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example.debug.xcconfig @@ -1,11 +1,13 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -EMBEDDED_CONTENT_CONTAINS_SWIFT = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/FayeSwift" "$PODS_CONFIGURATION_BUILD_DIR/Starscream" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift/FayeSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/FayeSwift/FayeSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Starscream/Starscream.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "FayeSwift" -framework "Starscream" -framework "SwiftyJSON" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift/FayeSwift.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" +OTHER_LDFLAGS = $(inherited) -framework "FayeSwift" -framework "Starscream" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example.release.xcconfig index 94ce487..71905a3 100644 --- a/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-FayeSwift_Example/Pods-FayeSwift_Example.release.xcconfig @@ -1,11 +1,13 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -EMBEDDED_CONTENT_CONTAINS_SWIFT = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/FayeSwift" "$PODS_CONFIGURATION_BUILD_DIR/Starscream" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift/FayeSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/FayeSwift/FayeSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Starscream/Starscream.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "FayeSwift" -framework "Starscream" -framework "SwiftyJSON" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift/FayeSwift.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" +OTHER_LDFLAGS = $(inherited) -framework "FayeSwift" -framework "Starscream" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-acknowledgements.markdown index 23b60d7..7a5d91b 100644 --- a/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-acknowledgements.markdown +++ b/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-acknowledgements.markdown @@ -202,29 +202,4 @@ THE SOFTWARE. defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -## SwiftyJSON - -The MIT License (MIT) - -Copyright (c) 2016 Ruoyu Fu - -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. - Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-acknowledgements.plist index c8419dd..2e350b7 100644 --- a/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-acknowledgements.plist @@ -226,37 +226,6 @@ THE SOFTWARE. Type PSGroupSpecifier - - FooterText - The MIT License (MIT) - -Copyright (c) 2016 Ruoyu Fu - -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. - - License - MIT - Title - SwiftyJSON - Type - PSGroupSpecifier - FooterText Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-frameworks.sh index 9dfadae..9a8cb17 100755 --- a/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-frameworks.sh @@ -1,11 +1,33 @@ #!/bin/sh set -e +set -u +set -o pipefail + +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -19,19 +41,24 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink "${source}")" fi - # use filter instead of exclude so missing patterns dont' throw errors - echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device @@ -45,7 +72,7 @@ install_framework() # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" @@ -54,42 +81,93 @@ install_framework() fi } +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi + fi +} + +# Copies the bcsymbolmap files of a vendored framework +install_bcsymbolmap() { + local bcsymbolmap_path="$1" + local destination="${BUILT_PRODUCTS_DIR}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" +} + # Signs a framework with the provided identity code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" - /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" fi } # Strip invalid architectures strip_invalid_archs() { binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi stripped="" - for arch in $archs; do - if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi + STRIP_BINARY_RETVAL=1 } if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/FayeSwift/FayeSwift.framework" - install_framework "$BUILT_PRODUCTS_DIR/Starscream/Starscream.framework" - install_framework "$BUILT_PRODUCTS_DIR/SwiftyJSON/SwiftyJSON.framework" + install_framework "${BUILT_PRODUCTS_DIR}/FayeSwift/FayeSwift.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Starscream/Starscream.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/FayeSwift/FayeSwift.framework" - install_framework "$BUILT_PRODUCTS_DIR/Starscream/Starscream.framework" - install_framework "$BUILT_PRODUCTS_DIR/SwiftyJSON/SwiftyJSON.framework" + install_framework "${BUILT_PRODUCTS_DIR}/FayeSwift/FayeSwift.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Starscream/Starscream.framework" +fi +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait fi diff --git a/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-umbrella.h b/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-umbrella.h index 2d8b84f..3ea03a3 100644 --- a/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-umbrella.h +++ b/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests-umbrella.h @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests.debug.xcconfig index 94ce487..71905a3 100644 --- a/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests.debug.xcconfig @@ -1,11 +1,13 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -EMBEDDED_CONTENT_CONTAINS_SWIFT = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/FayeSwift" "$PODS_CONFIGURATION_BUILD_DIR/Starscream" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift/FayeSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/FayeSwift/FayeSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Starscream/Starscream.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "FayeSwift" -framework "Starscream" -framework "SwiftyJSON" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift/FayeSwift.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" +OTHER_LDFLAGS = $(inherited) -framework "FayeSwift" -framework "Starscream" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests.release.xcconfig index 94ce487..71905a3 100644 --- a/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-FayeSwift_Tests/Pods-FayeSwift_Tests.release.xcconfig @@ -1,11 +1,13 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -EMBEDDED_CONTENT_CONTAINS_SWIFT = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/FayeSwift" "$PODS_CONFIGURATION_BUILD_DIR/Starscream" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift/FayeSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/FayeSwift/FayeSwift.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/Starscream/Starscream.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON/SwiftyJSON.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "FayeSwift" -framework "Starscream" -framework "SwiftyJSON" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift/FayeSwift.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/Starscream/Starscream.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/FayeSwift" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/Starscream" +OTHER_LDFLAGS = $(inherited) -framework "FayeSwift" -framework "Starscream" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Starscream/Starscream-prefix.pch b/Example/Pods/Target Support Files/Starscream/Starscream-prefix.pch index aa992a4..beb2a24 100644 --- a/Example/Pods/Target Support Files/Starscream/Starscream-prefix.pch +++ b/Example/Pods/Target Support Files/Starscream/Starscream-prefix.pch @@ -1,4 +1,12 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/Example/Pods/Target Support Files/Starscream/Starscream-umbrella.h b/Example/Pods/Target Support Files/Starscream/Starscream-umbrella.h index 734a071..7bffee0 100644 --- a/Example/Pods/Target Support Files/Starscream/Starscream-umbrella.h +++ b/Example/Pods/Target Support Files/Starscream/Starscream-umbrella.h @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/Example/Pods/Target Support Files/Starscream/Starscream.xcconfig b/Example/Pods/Target Support Files/Starscream/Starscream.xcconfig index 802b06c..7360f22 100644 --- a/Example/Pods/Target Support Files/Starscream/Starscream.xcconfig +++ b/Example/Pods/Target Support Files/Starscream/Starscream.xcconfig @@ -1,9 +1,10 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Starscream +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Starscream GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" "-suppress-warnings" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/Starscream PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/SwiftyJSON/Info.plist b/Example/Pods/Target Support Files/SwiftyJSON/Info.plist deleted file mode 100644 index 8b511bb..0000000 --- a/Example/Pods/Target Support Files/SwiftyJSON/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 3.1.3 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-dummy.m b/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-dummy.m deleted file mode 100644 index 3159bec..0000000 --- a/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_SwiftyJSON : NSObject -@end -@implementation PodsDummy_SwiftyJSON -@end diff --git a/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch b/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch deleted file mode 100644 index aa992a4..0000000 --- a/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - diff --git a/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-umbrella.h b/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-umbrella.h deleted file mode 100644 index e0b0f40..0000000 --- a/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON-umbrella.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - - -FOUNDATION_EXPORT double SwiftyJSONVersionNumber; -FOUNDATION_EXPORT const unsigned char SwiftyJSONVersionString[]; - diff --git a/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.modulemap b/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.modulemap deleted file mode 100644 index 6f41751..0000000 --- a/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module SwiftyJSON { - umbrella header "SwiftyJSON-umbrella.h" - - export * - module * { export * } -} diff --git a/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.xcconfig b/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.xcconfig deleted file mode 100644 index 96d1de4..0000000 --- a/Example/Pods/Target Support Files/SwiftyJSON/SwiftyJSON.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" "-suppress-warnings" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_VERSION = 3.0 diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/DerivedSources/Pods_FayeSwift_Example_vers.c b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/DerivedSources/Pods_FayeSwift_Example_vers.c deleted file mode 100644 index 85e4ea2..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/DerivedSources/Pods_FayeSwift_Example_vers.c +++ /dev/null @@ -1 +0,0 @@ - const unsigned char Pods_FayeSwift_ExampleVersionString[] __attribute__ ((used)) = "@(#)PROGRAM:Pods_FayeSwift_Example PROJECT:Pods-1" "\n"; const double Pods_FayeSwift_ExampleVersionNumber __attribute__ ((used)) = (double)1.; diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Objects-normal/arm64/Pods_FayeSwift_Example.LinkFileList b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Objects-normal/arm64/Pods_FayeSwift_Example.LinkFileList deleted file mode 100644 index 1e61d9c..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Objects-normal/arm64/Pods_FayeSwift_Example.LinkFileList +++ /dev/null @@ -1,2 +0,0 @@ -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Objects-normal/arm64/Pods-FayeSwift_Example-dummy.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Objects-normal/arm64/Pods_FayeSwift_Example_vers.o diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Objects-normal/armv7/Pods_FayeSwift_Example.LinkFileList b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Objects-normal/armv7/Pods_FayeSwift_Example.LinkFileList deleted file mode 100644 index 9830f0b..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Objects-normal/armv7/Pods_FayeSwift_Example.LinkFileList +++ /dev/null @@ -1,2 +0,0 @@ -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Objects-normal/armv7/Pods-FayeSwift_Example-dummy.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Objects-normal/armv7/Pods_FayeSwift_Example_vers.o diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-all-non-framework-target-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-all-non-framework-target-headers.hmap deleted file mode 100644 index b3bd957..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-all-non-framework-target-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-all-target-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-all-target-headers.hmap deleted file mode 100644 index b3bd957..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-all-target-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-generated-files.hmap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-generated-files.hmap deleted file mode 100644 index e1421ae..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-generated-files.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-own-target-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-own-target-headers.hmap deleted file mode 100644 index f26bef6..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-own-target-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-project-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-project-headers.hmap deleted file mode 100644 index f1cba86..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example-project-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example.hmap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example.hmap deleted file mode 100644 index 4830ebd..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/Pods_FayeSwift_Example.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/dgph b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/dgph deleted file mode 100644 index 51b9e80..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/dgph and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/module.modulemap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/module.modulemap deleted file mode 100644 index 971cfd0..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Example.build/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_FayeSwift_Example { - umbrella header "Pods-FayeSwift_Example-umbrella.h" - - export * - module * { export * } -} diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/DerivedSources/Pods_FayeSwift_Tests_vers.c b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/DerivedSources/Pods_FayeSwift_Tests_vers.c deleted file mode 100644 index 790c7bd..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/DerivedSources/Pods_FayeSwift_Tests_vers.c +++ /dev/null @@ -1 +0,0 @@ - const unsigned char Pods_FayeSwift_TestsVersionString[] __attribute__ ((used)) = "@(#)PROGRAM:Pods_FayeSwift_Tests PROJECT:Pods-1" "\n"; const double Pods_FayeSwift_TestsVersionNumber __attribute__ ((used)) = (double)1.; diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Objects-normal/arm64/Pods_FayeSwift_Tests.LinkFileList b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Objects-normal/arm64/Pods_FayeSwift_Tests.LinkFileList deleted file mode 100644 index 430cf3e..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Objects-normal/arm64/Pods_FayeSwift_Tests.LinkFileList +++ /dev/null @@ -1,2 +0,0 @@ -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Objects-normal/arm64/Pods-FayeSwift_Tests-dummy.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Objects-normal/arm64/Pods_FayeSwift_Tests_vers.o diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Objects-normal/armv7/Pods_FayeSwift_Tests.LinkFileList b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Objects-normal/armv7/Pods_FayeSwift_Tests.LinkFileList deleted file mode 100644 index adc34de..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Objects-normal/armv7/Pods_FayeSwift_Tests.LinkFileList +++ /dev/null @@ -1,2 +0,0 @@ -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Objects-normal/armv7/Pods-FayeSwift_Tests-dummy.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Objects-normal/armv7/Pods_FayeSwift_Tests_vers.o diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-all-non-framework-target-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-all-non-framework-target-headers.hmap deleted file mode 100644 index 7849f3a..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-all-non-framework-target-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-all-target-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-all-target-headers.hmap deleted file mode 100644 index 7849f3a..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-all-target-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-generated-files.hmap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-generated-files.hmap deleted file mode 100644 index b10c1ea..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-generated-files.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-own-target-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-own-target-headers.hmap deleted file mode 100644 index e7ecd26..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-own-target-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-project-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-project-headers.hmap deleted file mode 100644 index f1cba86..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests-project-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests.hmap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests.hmap deleted file mode 100644 index 3da7685..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/Pods_FayeSwift_Tests.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/dgph b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/dgph deleted file mode 100644 index 51b9e80..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/dgph and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/module.modulemap b/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/module.modulemap deleted file mode 100644 index b23270e..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Pods-FayeSwift_Tests.build/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_FayeSwift_Tests { - umbrella header "Pods-FayeSwift_Tests-umbrella.h" - - export * - module * { export * } -} diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/DerivedSources/Starscream_vers.c b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/DerivedSources/Starscream_vers.c deleted file mode 100644 index ff4d691..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/DerivedSources/Starscream_vers.c +++ /dev/null @@ -1 +0,0 @@ - const unsigned char StarscreamVersionString[] __attribute__ ((used)) = "@(#)PROGRAM:Starscream PROJECT:Pods-1" "\n"; const double StarscreamVersionNumber __attribute__ ((used)) = (double)1.; diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/arm64/Starscream-OutputFileMap.json b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/arm64/Starscream-OutputFileMap.json deleted file mode 100644 index aa94f68..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/arm64/Starscream-OutputFileMap.json +++ /dev/null @@ -1 +0,0 @@ -{"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/Pods\/Starscream\/Source\/SSLSecurity.swift":{"swiftmodule":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/arm64\/SSLSecurity~partial.swiftmodule","object":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/arm64\/SSLSecurity.o","llvm-bc":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/arm64\/SSLSecurity.bc","diagnostics":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/arm64\/SSLSecurity.dia","dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/arm64\/SSLSecurity.d","swift-dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/arm64\/SSLSecurity.swiftdeps"},"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/Pods\/Starscream\/Source\/WebSocket.swift":{"swiftmodule":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/arm64\/WebSocket~partial.swiftmodule","object":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/arm64\/WebSocket.o","llvm-bc":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/arm64\/WebSocket.bc","diagnostics":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/arm64\/WebSocket.dia","dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/arm64\/WebSocket.d","swift-dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/arm64\/WebSocket.swiftdeps"},"":{"swift-dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/arm64\/Starscream-master.swiftdeps"}} \ No newline at end of file diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/arm64/Starscream.LinkFileList b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/arm64/Starscream.LinkFileList deleted file mode 100644 index a943404..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/arm64/Starscream.LinkFileList +++ /dev/null @@ -1,4 +0,0 @@ -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/arm64/Starscream-dummy.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/arm64/SSLSecurity.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/arm64/WebSocket.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/arm64/Starscream_vers.o diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/armv7/Starscream-OutputFileMap.json b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/armv7/Starscream-OutputFileMap.json deleted file mode 100644 index 2fad39e..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/armv7/Starscream-OutputFileMap.json +++ /dev/null @@ -1 +0,0 @@ -{"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/Pods\/Starscream\/Source\/SSLSecurity.swift":{"swiftmodule":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/armv7\/SSLSecurity~partial.swiftmodule","object":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/armv7\/SSLSecurity.o","llvm-bc":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/armv7\/SSLSecurity.bc","diagnostics":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/armv7\/SSLSecurity.dia","dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/armv7\/SSLSecurity.d","swift-dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/armv7\/SSLSecurity.swiftdeps"},"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/Pods\/Starscream\/Source\/WebSocket.swift":{"swiftmodule":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/armv7\/WebSocket~partial.swiftmodule","object":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/armv7\/WebSocket.o","llvm-bc":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/armv7\/WebSocket.bc","diagnostics":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/armv7\/WebSocket.dia","dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/armv7\/WebSocket.d","swift-dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/armv7\/WebSocket.swiftdeps"},"":{"swift-dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/Starscream.build\/Objects-normal\/armv7\/Starscream-master.swiftdeps"}} \ No newline at end of file diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/armv7/Starscream.LinkFileList b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/armv7/Starscream.LinkFileList deleted file mode 100644 index b75af9f..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/armv7/Starscream.LinkFileList +++ /dev/null @@ -1,4 +0,0 @@ -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/armv7/Starscream-dummy.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/armv7/SSLSecurity.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/armv7/WebSocket.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Objects-normal/armv7/Starscream_vers.o diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-all-non-framework-target-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-all-non-framework-target-headers.hmap deleted file mode 100644 index 836f9d4..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-all-non-framework-target-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-all-target-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-all-target-headers.hmap deleted file mode 100644 index 836f9d4..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-all-target-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-generated-files.hmap b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-generated-files.hmap deleted file mode 100644 index 45aad19..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-generated-files.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-own-target-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-own-target-headers.hmap deleted file mode 100644 index f58f1c3..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-own-target-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-project-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-project-headers.hmap deleted file mode 100644 index f1cba86..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream-project-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream.hmap b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream.hmap deleted file mode 100644 index 65c0546..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/Starscream.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/dgph b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/dgph deleted file mode 100644 index 51b9e80..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/dgph and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/module.modulemap b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/module.modulemap deleted file mode 100644 index b3a9cec..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/module.modulemap +++ /dev/null @@ -1,10 +0,0 @@ -framework module Starscream { - umbrella header "Starscream-umbrella.h" - - export * - module * { export * } -} - -module Starscream.Swift { - header "Starscream-Swift.h" -} diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/swift-overrides.hmap b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/swift-overrides.hmap deleted file mode 100644 index cccb8ab..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/swift-overrides.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/unextended-module-overlay.yaml b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/unextended-module-overlay.yaml deleted file mode 100644 index b142e57..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/unextended-module-overlay.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{ - 'version': 0, - 'case-sensitive': 'false', - 'roots': [{ - 'type': 'directory', - 'name': '/Users/haris/workspace/casa/FayeSwift/Example/build/Debug-iphoneos/Starscream.framework/Modules' - 'contents': [{ - 'type': 'file', - 'name': 'module.modulemap', - 'external-contents': '/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/Starscream.build/unextended-module.modulemap', - }] - }] -} diff --git a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/unextended-module.modulemap b/Example/build/Pods.build/Debug-iphoneos/Starscream.build/unextended-module.modulemap deleted file mode 100644 index 80f343e..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/Starscream.build/unextended-module.modulemap +++ /dev/null @@ -1,10 +0,0 @@ -framework module Starscream { - umbrella header "Starscream-umbrella.h" - - export * - module * { export * } -} - -module Starscream.__Swift { - exclude header "Starscream-Swift.h" -} diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/DerivedSources/SwiftyJSON_vers.c b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/DerivedSources/SwiftyJSON_vers.c deleted file mode 100644 index 9b00c03..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/DerivedSources/SwiftyJSON_vers.c +++ /dev/null @@ -1 +0,0 @@ - const unsigned char SwiftyJSONVersionString[] __attribute__ ((used)) = "@(#)PROGRAM:SwiftyJSON PROJECT:Pods-1" "\n"; const double SwiftyJSONVersionNumber __attribute__ ((used)) = (double)1.; diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/arm64/SwiftyJSON-OutputFileMap.json b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/arm64/SwiftyJSON-OutputFileMap.json deleted file mode 100644 index dff8cd7..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/arm64/SwiftyJSON-OutputFileMap.json +++ /dev/null @@ -1 +0,0 @@ -{"":{"swift-dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/arm64\/SwiftyJSON-master.swiftdeps"},"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/Pods\/SwiftyJSON\/Source\/SwiftyJSON.swift":{"swiftmodule":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/arm64\/SwiftyJSON~partial.swiftmodule","object":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/arm64\/SwiftyJSON.o","llvm-bc":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/arm64\/SwiftyJSON.bc","diagnostics":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/arm64\/SwiftyJSON.dia","dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/arm64\/SwiftyJSON.d","swift-dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/arm64\/SwiftyJSON.swiftdeps"}} \ No newline at end of file diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/arm64/SwiftyJSON.LinkFileList b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/arm64/SwiftyJSON.LinkFileList deleted file mode 100644 index 6a82f7d..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/arm64/SwiftyJSON.LinkFileList +++ /dev/null @@ -1,3 +0,0 @@ -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/arm64/SwiftyJSON-dummy.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/arm64/SwiftyJSON.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/arm64/SwiftyJSON_vers.o diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/armv7/SwiftyJSON-OutputFileMap.json b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/armv7/SwiftyJSON-OutputFileMap.json deleted file mode 100644 index da0ab9d..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/armv7/SwiftyJSON-OutputFileMap.json +++ /dev/null @@ -1 +0,0 @@ -{"":{"swift-dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/armv7\/SwiftyJSON-master.swiftdeps"},"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/Pods\/SwiftyJSON\/Source\/SwiftyJSON.swift":{"swiftmodule":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/armv7\/SwiftyJSON~partial.swiftmodule","object":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/armv7\/SwiftyJSON.o","llvm-bc":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/armv7\/SwiftyJSON.bc","diagnostics":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/armv7\/SwiftyJSON.dia","dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/armv7\/SwiftyJSON.d","swift-dependencies":"\/Users\/haris\/workspace\/casa\/FayeSwift\/Example\/build\/Pods.build\/Debug-iphoneos\/SwiftyJSON.build\/Objects-normal\/armv7\/SwiftyJSON.swiftdeps"}} \ No newline at end of file diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/armv7/SwiftyJSON.LinkFileList b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/armv7/SwiftyJSON.LinkFileList deleted file mode 100644 index 6eaa273..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/armv7/SwiftyJSON.LinkFileList +++ /dev/null @@ -1,3 +0,0 @@ -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/armv7/SwiftyJSON-dummy.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/armv7/SwiftyJSON.o -/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/Objects-normal/armv7/SwiftyJSON_vers.o diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-all-non-framework-target-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-all-non-framework-target-headers.hmap deleted file mode 100644 index ae50239..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-all-non-framework-target-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-all-target-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-all-target-headers.hmap deleted file mode 100644 index ae50239..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-all-target-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-generated-files.hmap b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-generated-files.hmap deleted file mode 100644 index 2a6660b..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-generated-files.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-own-target-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-own-target-headers.hmap deleted file mode 100644 index 13ff3eb..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-own-target-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-project-headers.hmap b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-project-headers.hmap deleted file mode 100644 index f1cba86..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON-project-headers.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON.hmap b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON.hmap deleted file mode 100644 index 7bddf7b..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/SwiftyJSON.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/dgph b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/dgph deleted file mode 100644 index 51b9e80..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/dgph and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/module.modulemap b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/module.modulemap deleted file mode 100644 index dfedb28..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/module.modulemap +++ /dev/null @@ -1,10 +0,0 @@ -framework module SwiftyJSON { - umbrella header "SwiftyJSON-umbrella.h" - - export * - module * { export * } -} - -module SwiftyJSON.Swift { - header "SwiftyJSON-Swift.h" -} diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/swift-overrides.hmap b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/swift-overrides.hmap deleted file mode 100644 index 019874f..0000000 Binary files a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/swift-overrides.hmap and /dev/null differ diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/unextended-module-overlay.yaml b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/unextended-module-overlay.yaml deleted file mode 100644 index 48dd012..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/unextended-module-overlay.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{ - 'version': 0, - 'case-sensitive': 'false', - 'roots': [{ - 'type': 'directory', - 'name': '/Users/haris/workspace/casa/FayeSwift/Example/build/Debug-iphoneos/SwiftyJSON.framework/Modules' - 'contents': [{ - 'type': 'file', - 'name': 'module.modulemap', - 'external-contents': '/Users/haris/workspace/casa/FayeSwift/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/unextended-module.modulemap', - }] - }] -} diff --git a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/unextended-module.modulemap b/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/unextended-module.modulemap deleted file mode 100644 index 25e69c3..0000000 --- a/Example/build/Pods.build/Debug-iphoneos/SwiftyJSON.build/unextended-module.modulemap +++ /dev/null @@ -1,10 +0,0 @@ -framework module SwiftyJSON { - umbrella header "SwiftyJSON-umbrella.h" - - export * - module * { export * } -} - -module SwiftyJSON.__Swift { - exclude header "SwiftyJSON-Swift.h" -} diff --git a/FayeSwift.podspec b/FayeSwift.podspec index b17d555..9055970 100644 --- a/FayeSwift.podspec +++ b/FayeSwift.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "FayeSwift" - s.version = "0.3.0" + s.version = "0.4.0" s.summary = "A pure Swift Faye (Bayeux) Client" s.description = <<-DESC A Pure Swift Client Library for the Faye (Bayeux/Comet) Pub-Sub messaging server. @@ -17,6 +17,5 @@ Pod::Spec.new do |s| s.ios.deployment_target = "8.0" s.tvos.deployment_target = "9.0" s.source_files = "Sources/*.swift" - s.dependency "Starscream", '~> 2.0' - s.dependency "SwiftyJSON", '~> 3.1' + s.dependency "Starscream", '~> 4.0.0' end diff --git a/Package.resolved b/Package.resolved new file mode 100644 index 0000000..1d3df5d --- /dev/null +++ b/Package.resolved @@ -0,0 +1,25 @@ +{ + "object": { + "pins": [ + { + "package": "Starscream", + "repositoryURL": "https://github.com/daltoniam/Starscream.git", + "state": { + "branch": null, + "revision": "850f6204411cde04d16c129b70a2b9d1beba3a95", + "version": "4.0.0" + } + }, + { + "package": "swift-nio-zlib-support", + "repositoryURL": "https://github.com/apple/swift-nio-zlib-support.git", + "state": { + "branch": null, + "revision": "37760e9a52030bb9011972c5213c3350fa9d41fd", + "version": "1.0.0" + } + } + ] + }, + "version": 1 +} diff --git a/Package.swift b/Package.swift index a9712d5..f1a1a7e 100644 --- a/Package.swift +++ b/Package.swift @@ -1,10 +1,15 @@ +// swift-tools-version:5.0 import PackageDescription let package = Package( name: "FayeSwift", - targets: [], + products: [ + .library(name: "FayeSwift", targets: ["FayeSwift"]), + ], dependencies: [ - .Package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", versions: "2.3.3" ..< Version.max), - .Package(url: "https://github.com/daltoniam/Starscream.git", versions: "1.1.3" ..< Version.max) + .package(url: "https://github.com/daltoniam/Starscream.git", from: "4.0.0") + ], + targets: [ + .target(name: "FayeSwift", dependencies: [._byNameItem(name: "Starscream")], path: "Sources") ] ) diff --git a/Sources/FayeClient+Bayuex.swift b/Sources/FayeClient+Bayuex.swift index 5480f1d..880917d 100644 --- a/Sources/FayeClient+Bayuex.swift +++ b/Sources/FayeClient+Bayuex.swift @@ -7,7 +7,8 @@ // import Foundation -import SwiftyJSON + + // FIXME: comparison operators with optionals were removed from the Swift Standard Libary. // Consider refactoring the code to use the non-optional operators. fileprivate func < (lhs: T?, rhs: T?) -> Bool { @@ -42,7 +43,7 @@ public enum BayeuxConnection: String { } // MARK: BayuexChannel Messages -public enum BayeuxChannel: String { +public enum BayeuxChannel: String, Encodable, Equatable{ case Handshake = "/meta/handshake" case Connect = "/meta/connect" case Disconnect = "/meta/disconnect" @@ -80,17 +81,17 @@ extension FayeClient { // "supportedConnectionTypes": ["long-polling", "callback-polling", "iframe", "websocket] func handshake() { writeOperationQueue.sync { [unowned self] in - let connTypes:NSArray = [BayeuxConnection.LongPolling.rawValue, BayeuxConnection.Callback.rawValue, BayeuxConnection.iFrame.rawValue, BayeuxConnection.WebSocket.rawValue] + let connTypes = [BayeuxConnection.LongPolling.rawValue, + BayeuxConnection.Callback.rawValue, + BayeuxConnection.iFrame.rawValue, + BayeuxConnection.WebSocket.rawValue] var dict = [String: AnyObject]() dict[Bayeux.Channel.rawValue] = BayeuxChannel.Handshake.rawValue as AnyObject? dict[Bayeux.Version.rawValue] = "1.0" as AnyObject? dict[Bayeux.MinimumVersion.rawValue] = "1.0beta" as AnyObject? - dict[Bayeux.SupportedConnectionTypes.rawValue] = connTypes - - if let string = JSON(dict).rawString() { - self.transport?.writeString(string) - } + dict[Bayeux.SupportedConnectionTypes.rawValue] = connTypes as? AnyObject + send(dict) } } @@ -106,10 +107,7 @@ extension FayeClient { Bayeux.ConnectionType.rawValue: BayeuxConnection.WebSocket.rawValue as AnyObject, Bayeux.Advice.rawValue: ["timeout": self.timeOut] as AnyObject ] - - if let string = JSON(dict).rawString() { - self.transport?.writeString(string) - } + send(dict) } } @@ -118,13 +116,15 @@ extension FayeClient { // "clientId": "Un1q31d3nt1f13r" func disconnect() { writeOperationQueue.sync { [unowned self] in - let dict:[String:AnyObject] = [Bayeux.Channel.rawValue: BayeuxChannel.Disconnect.rawValue as AnyObject, Bayeux.ClientId.rawValue: self.fayeClientId! as AnyObject, Bayeux.ConnectionType.rawValue: BayeuxConnection.WebSocket.rawValue as AnyObject] - if let string = JSON(dict).rawString() { - self.transport?.writeString(string) - } + guard let clientId = self.fayeClientId else { return } + let dict:[String:AnyObject] = [Bayeux.Channel.rawValue: BayeuxChannel.Disconnect.rawValue as AnyObject, + Bayeux.ClientId.rawValue: clientId as AnyObject, + Bayeux.ConnectionType.rawValue: BayeuxConnection.WebSocket.rawValue as AnyObject] + + send(dict) } } - + // Bayeux Subscribe // "channel": "/meta/subscribe", // "clientId": "Un1q31d3nt1f13r", @@ -132,19 +132,16 @@ extension FayeClient { func subscribe(_ model:FayeSubscriptionModel) { writeOperationQueue.sync { [unowned self] in do { - let json = try model.jsonString() + var newModel = model + if newModel.clientId == nil { newModel.clientId = self.fayeClientId } + let json = try JSONEncoder().encode(newModel) + guard let string = String(data: json, encoding: .utf8) else { return } - self.transport?.writeString(json) + self.transport?.writeString(string) self.pendingSubscriptions.append(model) - } catch FayeSubscriptionModelError.conversationError { - - } catch FayeSubscriptionModelError.clientIdNotValid - where self.fayeClientId?.characters.count > 0 { - var model = model - model.clientId = self.fayeClientId - self.subscribe(model) + } catch { - + // TODO: catch this error } } } @@ -157,13 +154,11 @@ extension FayeClient { // } func unsubscribe(_ channel:String) { writeOperationQueue.sync { [unowned self] in - if let clientId = self.fayeClientId { - let dict:[String:AnyObject] = [Bayeux.Channel.rawValue: BayeuxChannel.Unsubscibe.rawValue as AnyObject, Bayeux.ClientId.rawValue: clientId as AnyObject, Bayeux.Subscription.rawValue: channel as AnyObject] - - if let string = JSON(dict).rawString() { - self.transport?.writeString(string) - } - } + guard let clientId = self.fayeClientId else { return } + let dict:[String:AnyObject] = [Bayeux.Channel.rawValue: BayeuxChannel.Unsubscibe.rawValue as AnyObject, + Bayeux.ClientId.rawValue: clientId as AnyObject, + Bayeux.Subscription.rawValue: channel as AnyObject] + send(dict) } } @@ -177,17 +172,12 @@ extension FayeClient { func publish(_ data:[String:AnyObject], channel:String) { writeOperationQueue.sync { [weak self] in if let clientId = self?.fayeClientId, let messageId = self?.nextMessageId(), self?.fayeConnected == true { - let dict:[String:AnyObject] = [ - Bayeux.Channel.rawValue: channel as AnyObject, - Bayeux.ClientId.rawValue: clientId as AnyObject, - Bayeux.Id.rawValue: messageId as AnyObject, - Bayeux.Data.rawValue: data as AnyObject - ] + let dict:[String:AnyObject] = [Bayeux.Channel.rawValue: channel as AnyObject, + Bayeux.ClientId.rawValue: clientId as AnyObject, + Bayeux.Id.rawValue: messageId as AnyObject, + Bayeux.Data.rawValue: data as AnyObject] - if let string = JSON(dict).rawString() { - print("Faye: Publish string: \(string)") - self?.transport?.writeString(string) - } + send(dict) } } } diff --git a/Sources/FayeClient+Helper.swift b/Sources/FayeClient+Helper.swift index f17049c..37cd255 100644 --- a/Sources/FayeClient+Helper.swift +++ b/Sources/FayeClient+Helper.swift @@ -19,6 +19,6 @@ public extension FayeClient { /// Validate faye transport is connected public func isTransportConnected() -> Bool { - return self.transport!.isConnected() + return self.transport?.isConnected ?? false } } diff --git a/Sources/FayeClient+Parsing.swift b/Sources/FayeClient+Parsing.swift index 17f90f6..a9f3492 100644 --- a/Sources/FayeClient+Parsing.swift +++ b/Sources/FayeClient+Parsing.swift @@ -7,23 +7,20 @@ // import Foundation -import SwiftyJSON extension FayeClient { - - // MARK: + // MARK: Parsing + func parseFayeJsonDictionaryMessage(_ message: [String: Any]) { + let messageDict = message + if let channel = messageDict[Bayeux.Channel.rawValue] as? String { - func parseFayeMessage(_ messageJSON:JSON) { - let messageDict = messageJSON[0] - if let channel = messageDict[Bayeux.Channel.rawValue].string { - // Handle Meta Channels if let metaChannel = BayeuxChannel(rawValue: channel) { switch(metaChannel) { case .Handshake: - self.fayeClientId = messageDict[Bayeux.ClientId.rawValue].stringValue - if messageDict[Bayeux.Successful.rawValue].int == 1 { + self.fayeClientId = messageDict[Bayeux.ClientId.rawValue] as? String + if (messageDict[Bayeux.Successful.rawValue] as? Int) == 1 { self.delegate?.connectedToServer(self) self.fayeConnected = true; self.connect() @@ -33,14 +30,14 @@ extension FayeClient { // OOPS } case .Connect: - if messageDict[Bayeux.Successful.rawValue].int == 1 { + if (messageDict[Bayeux.Successful.rawValue] as? Int) == 1 { self.fayeConnected = true; self.connect() } else { // OOPS } case .Disconnect: - if messageDict[Bayeux.Successful.rawValue].int == 1 { + if (messageDict[Bayeux.Successful.rawValue] as? Int) == 1 { self.fayeConnected = false; self.transport?.closeConnection() self.delegate?.disconnectedFromServer(self) @@ -48,21 +45,21 @@ extension FayeClient { // OOPS } case .Subscribe: - if let success = messageJSON[0][Bayeux.Successful.rawValue].int, success == 1 { - if let subscription = messageJSON[0][Bayeux.Subscription.rawValue].string { + if let success = messageDict[Bayeux.Successful.rawValue] as? Int, success == 1 { + if let subscription = messageDict[Bayeux.Subscription.rawValue] as? String { _ = removeChannelFromPendingSubscriptions(subscription) - - self.openSubscriptions.append(FayeSubscriptionModel(subscription: subscription, clientId: fayeClientId)) + + self.openSubscriptions.append(FayeSubscriptionModel(subscription: subscription, channel: .Subscribe, clientId: fayeClientId)) self.delegate?.didSubscribeToChannel(self, channel: subscription) } else { print("Faye: Missing subscription for Subscribe") } } else { // Subscribe Failed - if let error = messageJSON[0][Bayeux.Error.rawValue].string, - let subscription = messageJSON[0][Bayeux.Subscription.rawValue].string { + if let error = messageDict[Bayeux.Error.rawValue] as? String, + let subscription = messageDict[Bayeux.Subscription.rawValue] as? String { _ = removeChannelFromPendingSubscriptions(subscription) - + self.delegate?.subscriptionFailedWithError( self, error: subscriptionError.error(subscription: subscription, error: error) @@ -70,7 +67,7 @@ extension FayeClient { } } case .Unsubscibe: - if let subscription = messageJSON[0][Bayeux.Subscription.rawValue].string { + if let subscription = messageDict[Bayeux.Subscription.rawValue] as? String { _ = removeChannelFromOpenSubscriptions(subscription) self.delegate?.didUnsubscribeFromChannel(self, channel: subscription) } else { @@ -79,30 +76,35 @@ extension FayeClient { } } else { // Handle Client Channel - if self.isSubscribedToChannel(channel) { - if messageJSON[0][Bayeux.Data.rawValue] != JSON.null { - let data: AnyObject = messageJSON[0][Bayeux.Data.rawValue].object as AnyObject - - if let channelBlock = self.channelSubscriptionBlocks[channel] { - channelBlock(data as! NSDictionary) - } else { - print("Faye: Failed to get channel block for : \(channel)") - } - - self.delegate?.messageReceived( - self, - messageDict: data as! NSDictionary, - channel: channel - ) - } else { - print("Faye: For some reason data is nil for channel: \(channel)") - } + handleMessageReceived(messageDict, channel: channel) + } + } else { + print("Faye: Missing channel for \(messageDict)") + } + } + + private func handleMessageReceived(_ messageDict: [String: Any], channel: String) { + // Handle Client Channel + if self.isSubscribedToChannel(channel) { + if messageDict[Bayeux.Data.rawValue] != nil { + let data = messageDict[Bayeux.Data.rawValue] as AnyObject + + if let channelBlock = self.channelSubscriptionBlocks[channel] { + channelBlock(data as! NSDictionary) } else { - print("Faye: Weird channel that not been set to subscribed: \(channel)") + print("Faye: Failed to get channel block for : \(channel)") } + + self.delegate?.messageReceived( + self, + messageDict: data as! NSDictionary, + channel: channel + ) + } else { + print("Faye: For some reason data is nil for channel: \(channel)") } } else { - print("Faye: Missing channel for \(messageDict)") + print("Faye: Weird channel that not been set to subscribed: \(channel)") } } } diff --git a/Sources/FayeClient+Subscriptions.swift b/Sources/FayeClient+Subscriptions.swift index 38b43f6..edbec86 100644 --- a/Sources/FayeClient+Subscriptions.swift +++ b/Sources/FayeClient+Subscriptions.swift @@ -7,7 +7,6 @@ // import Foundation -import SwiftyJSON // MARK: Private Internal methods extension FayeClient { @@ -40,9 +39,10 @@ extension FayeClient { // MARK: // MARK: Send/Receive - func send(_ message: NSDictionary) { + func send(_ message: [String: Any]) { writeOperationQueue.async { [unowned self] in - if let string = JSON(message).rawString() { + if let data = try? JSONSerialization.data(withJSONObject: message, options: .prettyPrinted), + let string = String(data: data, encoding: .utf8) { self.transport?.writeString(string) } } @@ -50,10 +50,25 @@ extension FayeClient { func receive(_ message: String) { readOperationQueue.sync { [unowned self] in - if let jsonData = message.data(using: String.Encoding.utf8, allowLossyConversion: false) { - let json = JSON(data: jsonData) - - self.parseFayeMessage(json) + do { + let jsonData = Data(message.utf8) + let jsonDictArray = try JSONSerialization.jsonObject(with: jsonData, options: .fragmentsAllowed) as? [Any] + guard let jsonDict = jsonDictArray?.first as? [String: Any] else { return } + parseFayeJsonDictionaryMessage(jsonDict) + } catch { + // TODO: Add an error here to forward on for failed to decode + } + } + } + + func receive(_ data: Data) { + readOperationQueue.sync { [unowned self] in + do { + let jsonDictArray = try JSONSerialization.jsonObject(with: data, options: .fragmentsAllowed) as? [Any] + guard let jsonDict = jsonDictArray?.first as? [String: Any] else { return } + parseFayeJsonDictionaryMessage(jsonDict) + } catch { + // TODO: Add an error here to forward on for failed to decode } } } @@ -65,10 +80,9 @@ extension FayeClient { messageNumber = 0 } - return "\(self.messageNumber)".encodedString() + return "\(self.messageNumber)".encodeToBase64() } - // MARK: // MARK: Subscriptions func removeChannelFromQueuedSubscriptions(_ channel: String) -> Bool { @@ -116,3 +130,9 @@ extension FayeClient { return result } } + +extension String { + func encodeToBase64() -> String { + return Data(self.utf8).base64EncodedString() + } +} diff --git a/Sources/FayeClient+Transport.swift b/Sources/FayeClient+Transport.swift index 0559aaa..deeff54 100644 --- a/Sources/FayeClient+Transport.swift +++ b/Sources/FayeClient+Transport.swift @@ -9,18 +9,12 @@ import Foundation // MARK: Transport Delegate -extension FayeClient { +extension FayeClient: TransportDelegate { public func didConnect() { self.connectionInitiated = false; self.handshake() } - public func didDisconnect(_ error: NSError?) { - self.delegate?.disconnectedFromServer(self) - self.connectionInitiated = false - self.fayeConnected = false - } - public func didFailConnection(_ error: NSError?) { self.delegate?.connectionFailed(self) self.connectionInitiated = false @@ -38,4 +32,18 @@ extension FayeClient { public func didReceivePong() { self.delegate?.pongReceived(self) } + + public func didDisconnect(_ type: DisconnectionType?) { + self.delegate?.disconnectedFromServer(self) + self.connectionInitiated = false + self.fayeConnected = false + } + + public func didReceiveData(_ data: Data) { + self.receive(data) + } + + public func didReceivePing() { + self.delegate?.pingReceived(self) + } } diff --git a/Sources/FayeClient.swift b/Sources/FayeClient.swift index d2246aa..9fb33c7 100644 --- a/Sources/FayeClient.swift +++ b/Sources/FayeClient.swift @@ -7,7 +7,6 @@ // import Foundation -import SwiftyJSON // MARK: Subscription State public enum FayeSubscriptionState { @@ -23,7 +22,7 @@ public typealias ChannelSubscriptionBlock = (NSDictionary) -> Void // MARK: FayeClient -open class FayeClient : TransportDelegate { +open class FayeClient { open var fayeURLString:String { didSet { if let transport = self.transport { @@ -91,7 +90,7 @@ open class FayeClient : TransportDelegate { self.transport!.delegate = self; if let channel = channel { - self.queuedSubscriptions.append(FayeSubscriptionModel(subscription: channel, clientId: fayeClientId)) + self.queuedSubscriptions.append(FayeSubscriptionModel(subscription: channel, channel: .Subscribe, clientId: fayeClientId)) } } @@ -124,7 +123,7 @@ open class FayeClient : TransportDelegate { self.publish(messageDict as! Dictionary, channel: channel) } - open func sendMessage(_ messageDict:[String:AnyObject], channel:String) { + open func sendMessage(_ messageDict: [String:AnyObject], channel:String) { self.publish(messageDict, channel: channel) } @@ -160,7 +159,7 @@ open class FayeClient : TransportDelegate { open func subscribeToChannel(_ channel:String, block:ChannelSubscriptionBlock?=nil) -> FayeSubscriptionState { return subscribeToChannel( - FayeSubscriptionModel(subscription: channel, clientId: fayeClientId), + FayeSubscriptionModel(subscription: channel, channel: .Subscribe, clientId: fayeClientId), block: block ) } diff --git a/Sources/FayeClientDelegate.swift b/Sources/FayeClientDelegate.swift index fce9fbd..c55abf1 100644 --- a/Sources/FayeClientDelegate.swift +++ b/Sources/FayeClientDelegate.swift @@ -14,25 +14,14 @@ public enum subscriptionError: Error { // MARK: FayeClientDelegate Protocol public protocol FayeClientDelegate: NSObjectProtocol { - func messageReceived(_ client:FayeClient, messageDict: NSDictionary, channel: String) - func pongReceived(_ client:FayeClient) - func connectedToServer(_ client:FayeClient) - func disconnectedFromServer(_ client:FayeClient) - func connectionFailed(_ client:FayeClient) - func didSubscribeToChannel(_ client:FayeClient, channel:String) - func didUnsubscribeFromChannel(_ client:FayeClient, channel:String) - func subscriptionFailedWithError(_ client:FayeClient, error:subscriptionError) - func fayeClientError(_ client:FayeClient, error:NSError) -} - -public extension FayeClientDelegate { - func messageReceived(_ client:FayeClient, messageDict: NSDictionary, channel: String){} - func pongReceived(_ client:FayeClient){} - func connectedToServer(_ client:FayeClient){} - func disconnectedFromServer(_ client:FayeClient){} - func connectionFailed(_ client:FayeClient){} - func didSubscribeToChannel(_ client:FayeClient, channel:String){} - func didUnsubscribeFromChannel(_ client:FayeClient, channel:String){} - func subscriptionFailedWithError(_ client:FayeClient, error:subscriptionError){} - func fayeClientError(_ client:FayeClient, error:NSError){} + func messageReceived(_ client:FayeClient, messageDict: NSDictionary, channel: String) + func pongReceived(_ client:FayeClient) + func pingReceived(_ client:FayeClient) + func connectedToServer(_ client:FayeClient) + func disconnectedFromServer(_ client:FayeClient) + func connectionFailed(_ client:FayeClient) + func didSubscribeToChannel(_ client:FayeClient, channel:String) + func didUnsubscribeFromChannel(_ client:FayeClient, channel:String) + func subscriptionFailedWithError(_ client:FayeClient, error:subscriptionError) + func fayeClientError(_ client:FayeClient, error:NSError) } diff --git a/Sources/FayeSubscriptionModel.swift b/Sources/FayeSubscriptionModel.swift index 5856b40..a9ee320 100644 --- a/Sources/FayeSubscriptionModel.swift +++ b/Sources/FayeSubscriptionModel.swift @@ -7,86 +7,26 @@ // import Foundation -import SwiftyJSON -public enum FayeSubscriptionModelError: Error { - case conversationError - case clientIdNotValid -} - -// MARK: -// MARK: FayeSubscriptionModel +public struct FayeSubscriptionModel: Encodable, Equatable { -/// Subscription Model -open class FayeSubscriptionModel { - /// Subscription URL - open let subscription: String - + let subscription: String + /// Channel type for request - open let channel: BayeuxChannel - + let channel: BayeuxChannel + /// Uniqle client id for socket - open var clientId: String? - + var clientId: String? + /// Model must conform to Hashable - open var hashValue: Int { + var hashValue: Int { return subscription.hashValue } - - // MARK: - // MARK: Init - - public init(subscription: String, channel: BayeuxChannel=BayeuxChannel.Subscribe, clientId: String?) { + + public init(subscription: String, channel: BayeuxChannel, clientId: String?) { self.subscription = subscription self.channel = channel self.clientId = clientId } - - // MARK: - // MARK: JSON - - /// Return Json string from model - open func jsonString() throws -> String { - do { - guard let model = try JSON(toDictionary()).rawString() else { - throw FayeSubscriptionModelError.conversationError - } - - return model - } catch { - throw FayeSubscriptionModelError.clientIdNotValid - } - } - - // MARK: - // MARK: Helper - - /// Create dictionary of model object, Subclasses should override method to return custom model - open func toDictionary() throws -> [String: AnyObject] { - guard let clientId = clientId else { - throw FayeSubscriptionModelError.clientIdNotValid - } - - return [Bayeux.Channel.rawValue: channel.rawValue as AnyObject, - Bayeux.ClientId.rawValue: clientId as AnyObject, - Bayeux.Subscription.rawValue: subscription as AnyObject] - } -} - -// MARK: -// MARK: Description - -extension FayeSubscriptionModel: CustomStringConvertible { - - public var description: String { - return "FayeSubscriptionModel: \(try? self.toDictionary())" - } -} - -// MARK: -// MARK: Equatable - -public func ==(lhs: FayeSubscriptionModel, rhs: FayeSubscriptionModel) -> Bool { - return lhs.hashValue == rhs.hashValue } diff --git a/Sources/StringExtensions.swift b/Sources/StringExtensions.swift deleted file mode 100644 index 9b9f5ae..0000000 --- a/Sources/StringExtensions.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// StringExtensions.swift -// Pods -// -// Created by Haris Amin on 2/20/16. -// -// - -// MARK: Custom Extensions -extension String { - subscript (i: Int) -> String { - return String(Array(self.characters)[i]) - } - - // http://iosdevelopertips.com/swift-code/base64-encode-decode-swift.html - func encodedString() -> String { - // UTF 8 str from original - // NSData! type returned (optional) - guard let utf8str = self.data(using: String.Encoding.utf8) else { - return "" - } - - // Base64 encode UTF 8 string - // fromRaw(0) is equivalent to objc 'base64EncodedStringWithOptions:0' - // Notice the unwrapping given the NSData! optional - // NSString! returned (optional) - let base64Encoded = utf8str.base64EncodedString(options: NSData.Base64EncodingOptions()) - - // Base64 Decode (go back the other way) - // Notice the unwrapping given the NSString! optional - // NSData returned - guard let data = Data( - base64Encoded: base64Encoded, - options: NSData.Base64DecodingOptions()), - let base64Decoded = NSString(data: data, encoding: String.Encoding.utf8.rawValue) else { - return "" - } - - return base64Decoded as String - } -} diff --git a/Sources/Transport.swift b/Sources/Transport.swift index 99c318f..85fc909 100644 --- a/Sources/Transport.swift +++ b/Sources/Transport.swift @@ -5,19 +5,26 @@ // Created by Haris Amin on 2/20/16. // // +import Foundation + +public enum DisconnectionType { + case connectionLost(reason: String, code: UInt16) + case connectionDisconnected +} public protocol Transport { - func writeString(_ aString:String) - func openConnection() - func closeConnection() - func isConnected() -> (Bool) + func writeString(_ aString:String) + func openConnection() + func closeConnection() + var isConnected: Bool { get } } public protocol TransportDelegate: class { - func didConnect() - func didFailConnection(_ error:NSError?) - func didDisconnect(_ error: NSError?) - func didWriteError(_ error:NSError?) - func didReceiveMessage(_ text:String) - func didReceivePong() + func didConnect() + func didDisconnect(_ type: DisconnectionType?) + func didWriteError(_ error: NSError?) + func didReceiveMessage(_ text: String) + func didReceiveData(_ data: Data) + func didReceivePong() + func didReceivePing() } diff --git a/Sources/WebsocketTransport.swift b/Sources/WebsocketTransport.swift index dfc7e67..84ca4d0 100644 --- a/Sources/WebsocketTransport.swift +++ b/Sources/WebsocketTransport.swift @@ -9,88 +9,103 @@ import Foundation import Starscream -internal class WebsocketTransport: Transport, WebSocketDelegate, WebSocketPongDelegate { - var urlString:String? - var webSocket:WebSocket? - var headers: [String: String]? = nil - internal weak var delegate:TransportDelegate? - - convenience required internal init(url: String) { - self.init() - - self.urlString = url - } - - func openConnection() { - self.closeConnection() - self.webSocket = WebSocket(url: URL(string:self.urlString!)!) - - if let webSocket = self.webSocket { - webSocket.delegate = self - webSocket.pongDelegate = self - if let headers = self.headers { - for (key, value) in headers { - webSocket.headers[key] = headers[value] +class WebsocketTransport: Transport { + var urlString:String? + var webSocket:WebSocket? + var headers: [String: String]? = nil + weak var delegate:TransportDelegate? + private var socketConnected: Bool = false + + var isConnected: Bool { + return socketConnected + } + + convenience required internal init(url: String) { + self.init() + + self.urlString = url + } + + func openConnection() { + self.closeConnection() + guard let urlString = urlString, + let url = URL(string: urlString) else { + print("Faye: Invalid url") + return } - } - webSocket.connect() + var urlRequest = URLRequest(url: url) + if let headers = self.headers { + urlRequest.allHTTPHeaderFields = headers + } + self.webSocket = WebSocket(request: urlRequest) - print("Faye: Opening connection with \(self.urlString)") + if let webSocket = self.webSocket { + webSocket.delegate = self + webSocket.connect() + print("Faye: Opening connection with \(self.urlString)") + } } - } - - func closeConnection() { - if let webSocket = self.webSocket { - print("Faye: Closing connection") - - webSocket.delegate = nil - webSocket.disconnect(forceTimeout: 0) - - self.webSocket = nil + + func closeConnection() { + if let webSocket = self.webSocket { + print("Faye: Closing connection") + + webSocket.delegate = nil + webSocket.disconnect() + + self.webSocket = nil + } + } + + func writeString(_ aString:String) { + self.webSocket?.write(string: aString) + } + + func sendPing(_ data: Data, completion: (() -> ())? = nil) { + self.webSocket?.write(ping: data, completion: completion) } - } - - func writeString(_ aString:String) { - self.webSocket?.write(string: aString) - } - - func sendPing(_ data: Data, completion: (() -> ())? = nil) { - self.webSocket?.write(ping: data, completion: completion) - } - - func isConnected() -> (Bool) { - return self.webSocket?.isConnected ?? false - } - - // MARK: Websocket Delegate - internal func websocketDidConnect(socket: WebSocket) { - self.delegate?.didConnect() - } - - internal func websocketDidDisconnect(socket: WebSocket, error: NSError?) { - if error == nil { - self.delegate?.didDisconnect(NSError(error: .lostConnection)) - } else { - self.delegate?.didFailConnection(error) + + func websocketDidDisconnect(withReason reason: String?, andCode code: UInt16?) { + if let reason = reason, + let code = code { + self.delegate?.didDisconnect(.connectionLost(reason: reason, code: code)) + } else { + self.delegate?.didDisconnect(.connectionDisconnected) + } } - } - - internal func websocketDidReceiveMessage(socket: WebSocket, text: String) { - self.delegate?.didReceiveMessage(text) - } - - // MARK: TODO - internal func websocketDidReceiveData(socket: WebSocket, data: Data) { - print("Faye: Received data: \(data.count)") - //self.socket.writeData(data) - } +} - // MARK: WebSocket Pong Delegate - internal func websocketDidReceivePong(_ socket: WebSocket) { - self.delegate?.didReceivePong() - } - - func websocketDidReceivePong(socket: WebSocket, data: Data?) { - self.delegate?.didReceivePong() - } +extension WebsocketTransport: WebSocketDelegate { + func didReceive(event: WebSocketEvent, client: WebSocket) { + switch event { + case .connected(let headers): + print("websocket is connected: \(headers)") + socketConnected = true + self.delegate?.didConnect() + case .disconnected(let reason, let code): + socketConnected = false + print("websocket is disconnected for reason: \(reason) /n with code: \(code)") + websocketDidDisconnect(withReason: reason, andCode: code) + case .text(let text): + self.delegate?.didReceiveMessage(text) + case .binary(let data): + print("Faye: Received data: \(data.count)") + self.delegate?.didReceiveData(data) + case .pong(let data): + // FIXME: Data should be forwarded on + self.delegate?.didReceivePong() + case .ping(let data): + self.delegate?.didReceivePing() + case .error(let error): + break + case .viablityChanged(_): + break + case .reconnectSuggested(_): + break + case .cancelled: + break + @unknown default: + break + } + } } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..75762d8 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,119 @@ +{ + "name": "fayeswift-demo", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + }, + "csprng": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/csprng/-/csprng-0.1.2.tgz", + "integrity": "sha1-S8aPEvo2jSUqWYQcusqXSxirReI=", + "requires": { + "sequin": "*" + } + }, + "faye": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/faye/-/faye-1.0.3.tgz", + "integrity": "sha1-5lk8H2HhkqhaOx8iHjF7hVBfXx8=", + "requires": { + "concat-stream": "^2.0.0", + "cookiejar": "^2.1.2", + "csprng": "^0.1.2", + "faye-websocket": ">=0.7.0" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, + "sequin": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sequin/-/sequin-0.1.1.tgz", + "integrity": "sha1-XC04nWajg3NOqvvEXt6ywcsb5wE=" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + } + } +} diff --git a/package.json b/package.json index 76aaf25..7d3e6bf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name" : "fayeswift-demo", - "version" : "1.0.0", - "dependencies" : { - "faye" : "1.0.3" + "name": "fayeswift-demo", + "version": "1.0.0", + "dependencies": { + "faye": "1.0.3" } }