From 3c749103aff3f4405ea0c76eeb3f03d855a254ce Mon Sep 17 00:00:00 2001 From: ellinakuznetcova Date: Sat, 12 Nov 2016 16:22:33 +0300 Subject: [PATCH] added iMessages app example --- .../Assets.xcassets/Contents.json | 6 + .../Contents.json | 58 ++ .../poll.imageset/Contents.json | 23 + .../poll.imageset/poll-hands1-1.png | Bin 0 -> 108233 bytes .../poll.imageset/poll-hands1-2.png | Bin 0 -> 108233 bytes .../poll.imageset/poll-hands1.png | Bin 0 -> 108233 bytes .../Base.lproj/MainInterface.storyboard | 166 ++++ .../CompactViewController.swift | 36 + .../ExpandedViewController.swift | 71 ++ iMessagesExample/MessagesExtension/Info.plist | 31 + .../MessagesViewController.swift | 123 +++ .../MessagesExtension/PollEntity.swift | 88 ++ iMessagesExample/Podfile | 26 + iMessagesExample/Podfile.lock | 12 + iMessagesExample/Pods/Manifest.lock | 12 + iMessagesExample/Pods/ObjectMapper/LICENSE | 8 + .../ObjectMapper/Core/FromJSON.swift | 181 ++++ .../ObjectMapper/Core/ImmutableMappble.swift | 193 +++++ .../ObjectMapper/ObjectMapper/Core/Map.swift | 158 ++++ .../ObjectMapper/Core/MapError.swift | 68 ++ .../ObjectMapper/Core/Mappable.swift | 139 ++++ .../ObjectMapper/Core/Mapper.swift | 430 ++++++++++ .../Core/Operators/EnumOperators.swift | 91 +++ .../Core/Operators/Operators.swift | 377 +++++++++ .../Core/Operators/TransformOperators.swift | 606 ++++++++++++++ .../ObjectMapper/Core/ToJSON.swift | 176 ++++ .../CustomDateFormatTransform.swift | 40 + .../Transforms/DataTransform.swift | 50 ++ .../Transforms/DateFormatterTransform.swift | 54 ++ .../Transforms/DateTransform.swift | 55 ++ .../Transforms/DictionaryTransform.swift | 58 ++ .../Transforms/EnumTransform.swift | 50 ++ .../Transforms/ISO8601DateTransform.swift | 41 + .../Transforms/NSDecimalNumberTransform.swift | 51 ++ .../ObjectMapper/Transforms/TransformOf.swift | 48 ++ .../Transforms/TransformType.swift | 35 + .../Transforms/URLTransform.swift | 65 ++ iMessagesExample/Pods/ObjectMapper/README.md | 472 +++++++++++ .../Pods/Pods.xcodeproj/project.pbxproj | 771 ++++++++++++++++++ .../ObjectMapper/Info.plist | 26 + .../ObjectMapper/ObjectMapper-dummy.m | 5 + .../ObjectMapper/ObjectMapper-prefix.pch | 4 + .../ObjectMapper/ObjectMapper-umbrella.h | 6 + .../ObjectMapper/ObjectMapper.modulemap | 6 + .../ObjectMapper/ObjectMapper.xcconfig | 10 + .../Info.plist | 26 + ...essagesExtension-acknowledgements.markdown | 15 + ...t-MessagesExtension-acknowledgements.plist | 45 + .../Pods-Abstract-MessagesExtension-dummy.m | 5 + ...s-Abstract-MessagesExtension-frameworks.sh | 91 +++ ...ds-Abstract-MessagesExtension-resources.sh | 102 +++ ...Pods-Abstract-MessagesExtension-umbrella.h | 6 + ...-Abstract-MessagesExtension.debug.xcconfig | 10 + .../Pods-Abstract-MessagesExtension.modulemap | 6 + ...bstract-MessagesExtension.release.xcconfig | 10 + .../Pods-Abstract-VoteApp/Info.plist | 26 + ...Abstract-VoteApp-acknowledgements.markdown | 15 + ...ds-Abstract-VoteApp-acknowledgements.plist | 45 + .../Pods-Abstract-VoteApp-dummy.m | 5 + .../Pods-Abstract-VoteApp-frameworks.sh | 91 +++ .../Pods-Abstract-VoteApp-resources.sh | 102 +++ .../Pods-Abstract-VoteApp-umbrella.h | 6 + .../Pods-Abstract-VoteApp.debug.xcconfig | 10 + .../Pods-Abstract-VoteApp.modulemap | 6 + .../Pods-Abstract-VoteApp.release.xcconfig | 10 + .../VoteApp.xcodeproj/project.pbxproj | 557 +++++++++++++ .../contents.xcworkspacedata | 7 + .../contents.xcworkspacedata | 10 + .../AppIcon.appiconset/Contents.json | 93 +++ iMessagesExample/VoteApp/Info.plist | 43 + 70 files changed, 6268 insertions(+) create mode 100644 iMessagesExample/MessagesExtension/Assets.xcassets/Contents.json create mode 100644 iMessagesExample/MessagesExtension/Assets.xcassets/iMessage App Icon.stickersiconset/Contents.json create mode 100644 iMessagesExample/MessagesExtension/Assets.xcassets/poll.imageset/Contents.json create mode 100644 iMessagesExample/MessagesExtension/Assets.xcassets/poll.imageset/poll-hands1-1.png create mode 100644 iMessagesExample/MessagesExtension/Assets.xcassets/poll.imageset/poll-hands1-2.png create mode 100644 iMessagesExample/MessagesExtension/Assets.xcassets/poll.imageset/poll-hands1.png create mode 100644 iMessagesExample/MessagesExtension/Base.lproj/MainInterface.storyboard create mode 100644 iMessagesExample/MessagesExtension/CompactViewController.swift create mode 100644 iMessagesExample/MessagesExtension/ExpandedViewController.swift create mode 100644 iMessagesExample/MessagesExtension/Info.plist create mode 100644 iMessagesExample/MessagesExtension/MessagesViewController.swift create mode 100644 iMessagesExample/MessagesExtension/PollEntity.swift create mode 100644 iMessagesExample/Podfile create mode 100644 iMessagesExample/Podfile.lock create mode 100644 iMessagesExample/Pods/Manifest.lock create mode 100644 iMessagesExample/Pods/ObjectMapper/LICENSE create mode 100755 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/FromJSON.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/ImmutableMappble.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Map.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/MapError.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Mappable.swift create mode 100755 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Mapper.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Operators/EnumOperators.swift create mode 100755 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Operators/Operators.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Operators/TransformOperators.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/ToJSON.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/CustomDateFormatTransform.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DataTransform.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DateFormatterTransform.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DateTransform.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DictionaryTransform.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/EnumTransform.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/ISO8601DateTransform.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/NSDecimalNumberTransform.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/TransformOf.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/TransformType.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/URLTransform.swift create mode 100644 iMessagesExample/Pods/ObjectMapper/README.md create mode 100644 iMessagesExample/Pods/Pods.xcodeproj/project.pbxproj create mode 100644 iMessagesExample/Pods/Target Support Files/ObjectMapper/Info.plist create mode 100644 iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper-dummy.m create mode 100644 iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper-prefix.pch create mode 100644 iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper-umbrella.h create mode 100644 iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper.modulemap create mode 100644 iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper.xcconfig create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Info.plist create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-acknowledgements.markdown create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-acknowledgements.plist create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-dummy.m create mode 100755 iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-frameworks.sh create mode 100755 iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-resources.sh create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-umbrella.h create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.debug.xcconfig create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.modulemap create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.release.xcconfig create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Info.plist create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-acknowledgements.markdown create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-acknowledgements.plist create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-dummy.m create mode 100755 iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-frameworks.sh create mode 100755 iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-resources.sh create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-umbrella.h create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.debug.xcconfig create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.modulemap create mode 100644 iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.release.xcconfig create mode 100644 iMessagesExample/VoteApp.xcodeproj/project.pbxproj create mode 100644 iMessagesExample/VoteApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 iMessagesExample/VoteApp.xcworkspace/contents.xcworkspacedata create mode 100644 iMessagesExample/VoteApp/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 iMessagesExample/VoteApp/Info.plist diff --git a/iMessagesExample/MessagesExtension/Assets.xcassets/Contents.json b/iMessagesExample/MessagesExtension/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/iMessagesExample/MessagesExtension/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iMessagesExample/MessagesExtension/Assets.xcassets/iMessage App Icon.stickersiconset/Contents.json b/iMessagesExample/MessagesExtension/Assets.xcassets/iMessage App Icon.stickersiconset/Contents.json new file mode 100644 index 0000000..22c2afe --- /dev/null +++ b/iMessagesExample/MessagesExtension/Assets.xcassets/iMessage App Icon.stickersiconset/Contents.json @@ -0,0 +1,58 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "60x45", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x45", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "67x50", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "74x55", + "scale" : "2x" + }, + { + "size" : "27x20", + "idiom" : "universal", + "scale" : "2x", + "platform" : "ios" + }, + { + "size" : "27x20", + "idiom" : "universal", + "scale" : "3x", + "platform" : "ios" + }, + { + "size" : "32x24", + "idiom" : "universal", + "scale" : "2x", + "platform" : "ios" + }, + { + "size" : "32x24", + "idiom" : "universal", + "scale" : "3x", + "platform" : "ios" + }, + { + "size" : "1024x768", + "idiom" : "ios-marketing", + "scale" : "1x", + "platform" : "ios" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iMessagesExample/MessagesExtension/Assets.xcassets/poll.imageset/Contents.json b/iMessagesExample/MessagesExtension/Assets.xcassets/poll.imageset/Contents.json new file mode 100644 index 0000000..94d5d6e --- /dev/null +++ b/iMessagesExample/MessagesExtension/Assets.xcassets/poll.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "poll-hands1.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "poll-hands1-1.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "poll-hands1-2.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iMessagesExample/MessagesExtension/Assets.xcassets/poll.imageset/poll-hands1-1.png b/iMessagesExample/MessagesExtension/Assets.xcassets/poll.imageset/poll-hands1-1.png new file mode 100644 index 0000000000000000000000000000000000000000..42526a2f5a91e3bdf338004f6297e5ecd31e5270 GIT binary patch literal 108233 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 T-}etlfRDyK9hGXNP1yecvQEA^ literal 0 HcmV?d00001 diff --git a/iMessagesExample/MessagesExtension/Assets.xcassets/poll.imageset/poll-hands1-2.png b/iMessagesExample/MessagesExtension/Assets.xcassets/poll.imageset/poll-hands1-2.png new file mode 100644 index 0000000000000000000000000000000000000000..42526a2f5a91e3bdf338004f6297e5ecd31e5270 GIT binary patch literal 108233 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 T-}etlfRDyK9hGXNP1yecvQEA^ literal 0 HcmV?d00001 diff --git a/iMessagesExample/MessagesExtension/Assets.xcassets/poll.imageset/poll-hands1.png b/iMessagesExample/MessagesExtension/Assets.xcassets/poll.imageset/poll-hands1.png new file mode 100644 index 0000000000000000000000000000000000000000..42526a2f5a91e3bdf338004f6297e5ecd31e5270 GIT binary patch literal 108233 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 T-}etlfRDyK9hGXNP1yecvQEA^ literal 0 HcmV?d00001 diff --git a/iMessagesExample/MessagesExtension/Base.lproj/MainInterface.storyboard b/iMessagesExample/MessagesExtension/Base.lproj/MainInterface.storyboard new file mode 100644 index 0000000..a92593d --- /dev/null +++ b/iMessagesExample/MessagesExtension/Base.lproj/MainInterface.storyboard @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iMessagesExample/MessagesExtension/CompactViewController.swift b/iMessagesExample/MessagesExtension/CompactViewController.swift new file mode 100644 index 0000000..d224d39 --- /dev/null +++ b/iMessagesExample/MessagesExtension/CompactViewController.swift @@ -0,0 +1,36 @@ +// +// CompactViewController.swift +// VoteApp +// +// Created by Ellina Kuznecova on 01.11.16. +// Copyright © 2016 Ellina Kuznetcova. All rights reserved. +// + +import UIKit + +protocol CompactViewControllerDelegate: class { + func createPollPressed() + func sendMessage() +} + +class CompactViewController: UIViewController { + @IBOutlet weak var actionButton: UIButton! + + var options: [PollOption] = [] + weak var delegate: CompactViewControllerDelegate? + + override func viewDidLoad() { + super.viewDidLoad() + + let actionButtonTitle = self.options.count > 0 ? "Send Poll" : "Create Poll" + self.actionButton.setTitle(actionButtonTitle, for: .normal) + } + + @IBAction func actionButtonPressed(_ sender: AnyObject) { + if self.options.count > 0 { + self.delegate?.sendMessage() + } else { + self.delegate?.createPollPressed() + } + } +} diff --git a/iMessagesExample/MessagesExtension/ExpandedViewController.swift b/iMessagesExample/MessagesExtension/ExpandedViewController.swift new file mode 100644 index 0000000..b047888 --- /dev/null +++ b/iMessagesExample/MessagesExtension/ExpandedViewController.swift @@ -0,0 +1,71 @@ +// +// ExpandedViewController.swift +// VoteApp +// +// Created by Ellina Kuznecova on 01.11.16. +// Copyright © 2016 Ellina Kuznetcova. All rights reserved. +// + +import UIKit + +protocol ExpandedViewControllerDelegate: class { + func pollUpdated(poll: PollEntity) +} + +class ExpandedViewController: UIViewController { + @IBOutlet weak var pollVariantTextField: UITextField! + @IBOutlet weak var tableView: UITableView! + @IBOutlet weak var addNewVariant: UIButton! + + weak var delegate: ExpandedViewControllerDelegate? + var data: PollEntity! + + override func viewDidLoad() { + super.viewDidLoad() + + self.changeViewsState(to: self.data.options.count == 0) + } + + @IBAction func addNewVariantPressed(_ sender: AnyObject) { + self.changeViewsState(to: true) + } + + @IBAction func savePressed(_ sender: AnyObject) { + guard let text = self.pollVariantTextField.text, text != "" else {return} + self.data.options.append(PollOption(name: text)) + self.pollVariantTextField.text = "" + self.tableView.reloadData() + self.delegate?.pollUpdated(poll: self.data) + self.changeViewsState(to: false) + } + + @IBAction func cancelPressed(_ sender: AnyObject) { + self.changeViewsState(to: false) + } + + private func changeViewsState(to visibility: Bool) { + self.tableView.isHidden = visibility + self.addNewVariant.isHidden = visibility + } +} + +extension ExpandedViewController: UITableViewDataSource { + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return self.data.options.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "Basic")! + cell.textLabel?.text = self.data.options[indexPath.row].name + return cell + } +} + +extension ExpandedViewController: UITextFieldDelegate { + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + self.view.endEditing(true) + self.savePressed(self) + return true + } +} diff --git a/iMessagesExample/MessagesExtension/Info.plist b/iMessagesExample/MessagesExtension/Info.plist new file mode 100644 index 0000000..3319d60 --- /dev/null +++ b/iMessagesExample/MessagesExtension/Info.plist @@ -0,0 +1,31 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + VoteApp + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + XPC! + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + NSExtension + + NSExtensionMainStoryboard + MainInterface + NSExtensionPointIdentifier + com.apple.message-payload-provider + + + diff --git a/iMessagesExample/MessagesExtension/MessagesViewController.swift b/iMessagesExample/MessagesExtension/MessagesViewController.swift new file mode 100644 index 0000000..3e0e63b --- /dev/null +++ b/iMessagesExample/MessagesExtension/MessagesViewController.swift @@ -0,0 +1,123 @@ +// +// MessagesViewController.swift +// MessagesExtension +// +// Created by Ellina Kuznecova on 01.11.16. +// Copyright © 2016 Ellina Kuznetcova. All rights reserved. +// + +import UIKit +import Messages + +class MessagesViewController: MSMessagesAppViewController { + + var poll: PollEntity! + + override func willBecomeActive(with conversation: MSConversation) { + super.willBecomeActive(with: conversation) + + self.poll = PollEntity(message: conversation.selectedMessage) ?? PollEntity(creatorId: conversation.localParticipantIdentifier.uuidString) + presentVC(for: conversation, with: presentationStyle) + } + + override func willTransition(to presentationStyle: MSMessagesAppPresentationStyle) { + guard let conversation = activeConversation else { + fatalError("Expected the active conversation") + } + if let _ = conversation.selectedMessage { + self.poll = PollEntity(message: conversation.selectedMessage) + } + presentVC(for: conversation, with: presentationStyle) + } + + private func presentVC(for conversation: MSConversation, with presentationStyle: MSMessagesAppPresentationStyle) { + let controller: UIViewController + + if presentationStyle == .compact { + controller = instantiateCompactVC() + } else { + controller = instantiateExpandedVC() + } + + // Remove any existing child controllers. + for child in childViewControllers { + child.willMove(toParentViewController: nil) + child.view.removeFromSuperview() + child.removeFromParentViewController() + } + + self.addChildViewController(controller) + + //TODO: figure out why size is not right + controller.view.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: self.view.frame.size) + view.addSubview(controller.view) + + controller.didMove(toParentViewController: self) + } + + private func instantiateCompactVC() -> UIViewController { + guard let compactVC = storyboard?.instantiateViewController(withIdentifier: "CompactVC") as? CompactViewController else { + fatalError("Can't instantiate CompactViewController") + } + compactVC.delegate = self + compactVC.options = self.poll.options + return compactVC + } + + private func instantiateExpandedVC() -> UIViewController { + guard let expandedVC = storyboard?.instantiateViewController(withIdentifier: "ExpandedVC") as? ExpandedViewController else { + fatalError("Can't instantiate ExpandedViewController") + } + expandedVC.delegate = self + expandedVC.data = self.poll + return expandedVC + } + + private func isSenderSameAsRecipient() -> Bool { + guard let conversation = activeConversation else { return false } + guard let message = conversation.selectedMessage else { return false } + + return message.senderParticipantIdentifier == conversation.localParticipantIdentifier + } +} + +extension MessagesViewController: CompactViewControllerDelegate { + func createPollPressed() { + self.requestPresentationStyle(.expanded) + } + + func sendMessage() { + guard let conversation = activeConversation else { fatalError("Expected a conversation") } + // Create a new message with the same session as any currently selected message. + let message = composeMessage(with: "I created new poll!", session: conversation.selectedMessage?.session) + + // Add the message to the conversation. + conversation.insert(message) { error in + if let error = error { + print(error) + } + } + } + + fileprivate func composeMessage(with caption: String, session: MSSession? = nil) -> MSMessage { + + let layout = MSMessageTemplateLayout() + layout.image = #imageLiteral(resourceName: "poll") + layout.caption = caption + + let message = MSMessage(session: session ?? MSSession()) + message.layout = layout + + var components = URLComponents() + components.queryItems = self.poll.queryItems + message.url = components.url! + + return message + } +} + +extension MessagesViewController: ExpandedViewControllerDelegate { + func pollUpdated(poll: PollEntity) { + self.poll = poll + } +} diff --git a/iMessagesExample/MessagesExtension/PollEntity.swift b/iMessagesExample/MessagesExtension/PollEntity.swift new file mode 100644 index 0000000..7cc875f --- /dev/null +++ b/iMessagesExample/MessagesExtension/PollEntity.swift @@ -0,0 +1,88 @@ +// +// PollEntity.swift +// VoteApp +// +// Created by Ellina Kuznecova on 05.11.16. +// Copyright © 2016 Ellina Kuznetcova. All rights reserved. +// + +import Foundation +import Messages +import ObjectMapper + +struct PollEntity { + static var entityKey = "pollEntity" + static var creatorIdKey = "creatorId" + static var optionsKey = "options" + + var options: [PollOption] + var creatorId: String + + var queryItems: [URLQueryItem] { + return [URLQueryItem(name: PollEntity.entityKey, value: self.toJSONString())] + } + + init(creatorId: String) { + self.creatorId = creatorId + self.options = [] + } + + init?(message: MSMessage?) { + guard let messageURL = message?.url else { return nil } + guard let urlComponents = NSURLComponents(url: messageURL, resolvingAgainstBaseURL: false), let queryItems = urlComponents.queryItems else { return nil } + + self.init(queryItems: queryItems) + } + + init?(map: ObjectMapper.Map) { + self.init(message: nil) + } + + init?(queryItems: [URLQueryItem]) { + guard let queryItem = queryItems.first, + let value = queryItem.value, + queryItem.name == PollEntity.entityKey else { return nil } + var decodedObject = PollEntity(creatorId: "") + decodedObject = Mapper().map(JSONString: value, toObject: decodedObject) + guard decodedObject.creatorId != "" else {return nil} + self.creatorId = decodedObject.creatorId + self.options = decodedObject.options + } +} + +extension PollEntity: Mappable { + mutating func mapping(map: ObjectMapper.Map) { + self.creatorId <- map[PollEntity.creatorIdKey] + self.options <- map[PollEntity.optionsKey] + } +} + +struct PollOption: Mappable { + var name: String + var voters: [Voter] + + init(name: String) { + self.name = name + self.voters = [] + } + + init?(map: ObjectMapper.Map) { + self.init(name: "") + } + + mutating func mapping(map: ObjectMapper.Map) { + self.name <- map["name"] + self.voters <- map["voters"] + } +} + +struct Voter: Mappable { + var id: String? + + init?(map: ObjectMapper.Map) {} + + mutating func mapping(map: ObjectMapper.Map) { + self.id <- map["id"] + + } +} diff --git a/iMessagesExample/Podfile b/iMessagesExample/Podfile new file mode 100644 index 0000000..b748e20 --- /dev/null +++ b/iMessagesExample/Podfile @@ -0,0 +1,26 @@ +# Uncomment this line to define a global platform for your project +platform :ios, '9.0' +source 'https://github.com/CocoaPods/Specs.git' +use_frameworks! + +abstract_target 'Abstract' do + + pod 'ObjectMapper' + + target 'MessagesExtension' do + + end + + target 'VoteApp' do + + end +end + + +post_install do |installer| + installer.pods_project.targets.each do |target| + target.build_configurations.each do |config| + config.build_settings['SWIFT_VERSION'] = '3.0' + end + end +end diff --git a/iMessagesExample/Podfile.lock b/iMessagesExample/Podfile.lock new file mode 100644 index 0000000..1be4021 --- /dev/null +++ b/iMessagesExample/Podfile.lock @@ -0,0 +1,12 @@ +PODS: + - ObjectMapper (2.1.0) + +DEPENDENCIES: + - ObjectMapper + +SPEC CHECKSUMS: + ObjectMapper: e5e0f8aef8590fc2ddcde7f27eddb255863ee6e9 + +PODFILE CHECKSUM: a635da266148c6059888f593f9034b9ea6f2e3ad + +COCOAPODS: 1.0.1 diff --git a/iMessagesExample/Pods/Manifest.lock b/iMessagesExample/Pods/Manifest.lock new file mode 100644 index 0000000..1be4021 --- /dev/null +++ b/iMessagesExample/Pods/Manifest.lock @@ -0,0 +1,12 @@ +PODS: + - ObjectMapper (2.1.0) + +DEPENDENCIES: + - ObjectMapper + +SPEC CHECKSUMS: + ObjectMapper: e5e0f8aef8590fc2ddcde7f27eddb255863ee6e9 + +PODFILE CHECKSUM: a635da266148c6059888f593f9034b9ea6f2e3ad + +COCOAPODS: 1.0.1 diff --git a/iMessagesExample/Pods/ObjectMapper/LICENSE b/iMessagesExample/Pods/ObjectMapper/LICENSE new file mode 100644 index 0000000..be48bc6 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/LICENSE @@ -0,0 +1,8 @@ +The MIT License (MIT) +Copyright (c) 2014 Hearst + +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/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/FromJSON.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/FromJSON.swift new file mode 100755 index 0000000..7cb4655 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/FromJSON.swift @@ -0,0 +1,181 @@ +// +// FromJSON.swift +// ObjectMapper +// +// Created by Tristan Himmelman on 2014-10-09. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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. + +internal final class FromJSON { + + /// Basic type + class func basicType(_ field: inout FieldType, object: FieldType?) { + if let value = object { + field = value + } + } + + /// optional basic type + class func optionalBasicType(_ field: inout FieldType?, object: FieldType?) { + field = object + } + + /// Implicitly unwrapped optional basic type + class func optionalBasicType(_ field: inout FieldType!, object: FieldType?) { + field = object + } + + /// Mappable object + class func object(_ field: inout N, map: Map) { + if map.toObject { + _ = Mapper(context: map.context).map(JSONObject: map.currentValue, toObject: field) + } else if let value: N = Mapper(context: map.context).map(JSONObject: map.currentValue) { + field = value + } + } + + /// Optional Mappable Object + + class func optionalObject(_ field: inout N?, map: Map) { + if let field = field , map.toObject && map.currentValue != nil { + _ = Mapper(context: map.context).map(JSONObject: map.currentValue, toObject: field) + } else { + field = Mapper(context: map.context).map(JSONObject: map.currentValue) + } + } + + /// Implicitly unwrapped Optional Mappable Object + class func optionalObject(_ field: inout N!, map: Map) { + if let field = field , map.toObject && map.currentValue != nil { + _ = Mapper(context: map.context).map(JSONObject: map.currentValue, toObject: field) + } else { + field = Mapper(context: map.context).map(JSONObject: map.currentValue) + } + } + + /// mappable object array + class func objectArray(_ field: inout Array, map: Map) { + if let objects = Mapper(context: map.context).mapArray(JSONObject: map.currentValue) { + field = objects + } + } + + /// optional mappable object array + + class func optionalObjectArray(_ field: inout Array?, map: Map) { + if let objects: Array = Mapper(context: map.context).mapArray(JSONObject: map.currentValue) { + field = objects + } else { + field = nil + } + } + + /// Implicitly unwrapped optional mappable object array + class func optionalObjectArray(_ field: inout Array!, map: Map) { + if let objects: Array = Mapper(context: map.context).mapArray(JSONObject: map.currentValue) { + field = objects + } else { + field = nil + } + } + + /// mappable object array + class func twoDimensionalObjectArray(_ field: inout Array>, map: Map) { + if let objects = Mapper(context: map.context).mapArrayOfArrays(JSONObject: map.currentValue) { + field = objects + } + } + + /// optional mappable 2 dimentional object array + class func optionalTwoDimensionalObjectArray(_ field: inout Array>?, map: Map) { + field = Mapper(context: map.context).mapArrayOfArrays(JSONObject: map.currentValue) + } + + /// Implicitly unwrapped optional 2 dimentional mappable object array + class func optionalTwoDimensionalObjectArray(_ field: inout Array>!, map: Map) { + field = Mapper(context: map.context).mapArrayOfArrays(JSONObject: map.currentValue) + } + + /// Dctionary containing Mappable objects + class func objectDictionary(_ field: inout Dictionary, map: Map) { + if map.toObject { + _ = Mapper(context: map.context).mapDictionary(JSONObject: map.currentValue, toDictionary: field) + } else { + if let objects = Mapper(context: map.context).mapDictionary(JSONObject: map.currentValue) { + field = objects + } + } + } + + /// Optional dictionary containing Mappable objects + class func optionalObjectDictionary(_ field: inout Dictionary?, map: Map) { + if let field = field , map.toObject && map.currentValue != nil { + _ = Mapper(context: map.context).mapDictionary(JSONObject: map.currentValue, toDictionary: field) + } else { + field = Mapper(context: map.context).mapDictionary(JSONObject: map.currentValue) + } + } + + /// Implicitly unwrapped Dictionary containing Mappable objects + class func optionalObjectDictionary(_ field: inout Dictionary!, map: Map) { + if let field = field , map.toObject && map.currentValue != nil { + _ = Mapper(context: map.context).mapDictionary(JSONObject: map.currentValue, toDictionary: field) + } else { + field = Mapper(context: map.context).mapDictionary(JSONObject: map.currentValue) + } + } + + /// Dictionary containing Array of Mappable objects + class func objectDictionaryOfArrays(_ field: inout Dictionary, map: Map) { + if let objects = Mapper(context: map.context).mapDictionaryOfArrays(JSONObject: map.currentValue) { + field = objects + } + } + + /// Optional Dictionary containing Array of Mappable objects + class func optionalObjectDictionaryOfArrays(_ field: inout Dictionary?, map: Map) { + field = Mapper(context: map.context).mapDictionaryOfArrays(JSONObject: map.currentValue) + } + + /// Implicitly unwrapped Dictionary containing Array of Mappable objects + class func optionalObjectDictionaryOfArrays(_ field: inout Dictionary!, map: Map) { + field = Mapper(context: map.context).mapDictionaryOfArrays(JSONObject: map.currentValue) + } + + /// mappable object Set + class func objectSet(_ field: inout Set, map: Map) { + if let objects = Mapper(context: map.context).mapSet(JSONObject: map.currentValue) { + field = objects + } + } + + /// optional mappable object array + class func optionalObjectSet(_ field: inout Set?, map: Map) { + field = Mapper(context: map.context).mapSet(JSONObject: map.currentValue) + } + + /// Implicitly unwrapped optional mappable object array + class func optionalObjectSet(_ field: inout Set!, map: Map) { + field = Mapper(context: map.context).mapSet(JSONObject: map.currentValue) + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/ImmutableMappble.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/ImmutableMappble.swift new file mode 100644 index 0000000..ee67770 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/ImmutableMappble.swift @@ -0,0 +1,193 @@ +// +// ImmutableMappble.swift +// ObjectMapper +// +// Created by Suyeol Jeon on 23/09/2016. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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. + +public protocol ImmutableMappable: BaseMappable { + init(map: Map) throws +} + +public extension ImmutableMappable { + + /// Implement this method to support object -> JSON transform. + public func mapping(map: Map) {} + + /// Initializes object from a JSON String + public init(JSONString: String, context: MapContext? = nil) throws { + self = try Mapper(context: context).map(JSONString: JSONString) + } + + /// Initializes object from a JSON Dictionary + public init(JSON: [String: Any], context: MapContext? = nil) throws { + self = try Mapper(context: context).map(JSON: JSON) + } + +} + +public extension Map { + + fileprivate func currentValue(for key: String) -> Any? { + return self[key].currentValue + } + + // MARK: Basic + + /// Returns a value or throws an error. + public func value(_ key: String, file: StaticString = #file, function: StaticString = #function, line: UInt = #line) throws -> T { + let currentValue = self.currentValue(for: key) + guard let value = currentValue as? T else { + throw MapError(key: key, currentValue: currentValue, reason: "Cannot cast to '\(T.self)'", file: file, function: function, line: line) + } + return value + } + + /// Returns a transformed value or throws an error. + public func value(_ key: String, using transform: Transform, file: StaticString = #file, function: StaticString = #function, line: UInt = #line) throws -> Transform.Object { + let currentValue = self.currentValue(for: key) + guard let value = transform.transformFromJSON(currentValue) else { + throw MapError(key: key, currentValue: currentValue, reason: "Cannot transform to '\(Transform.Object.self)' using \(transform)", file: file, function: function, line: line) + } + return value + } + + // MARK: BaseMappable + + /// Returns a `BaseMappable` object or throws an error. + public func value(_ key: String) throws -> T { + let currentValue = self.currentValue(for: key) + return try Mapper().mapOrFail(JSONObject: currentValue) + } + + // MARK: [BaseMappable] + + /// Returns a `[BaseMappable]` or throws an error. + public func value(_ key: String, file: StaticString = #file, function: StaticString = #function, line: UInt = #line) throws -> [T] { + let currentValue = self.currentValue(for: key) + guard let jsonArray = currentValue as? [Any] else { + throw MapError(key: key, currentValue: currentValue, reason: "Cannot cast to '[Any]'", file: file, function: function, line: line) + } + return try jsonArray.enumerated().map { i, JSONObject -> T in + return try Mapper().mapOrFail(JSONObject: JSONObject) + } + } + + /// Returns a `[BaseMappable]` using transform or throws an error. + public func value(_ key: String, using transform: Transform, file: StaticString = #file, function: StaticString = #function, line: UInt = #line) throws -> [Transform.Object] { + let currentValue = self.currentValue(for: key) + guard let jsonArray = currentValue as? [Any] else { + throw MapError(key: key, currentValue: currentValue, reason: "Cannot cast to '[Any]'", file: file, function: function, line: line) + } + return try jsonArray.enumerated().map { i, json -> Transform.Object in + guard let object = transform.transformFromJSON(json) else { + throw MapError(key: "\(key)[\(i)]", currentValue: json, reason: "Cannot transform to '\(Transform.Object.self)' using \(transform)", file: file, function: function, line: line) + } + return object + } + } + + // MARK: [String: BaseMappable] + + /// Returns a `[String: BaseMappable]` or throws an error. + public func value(_ key: String, file: StaticString = #file, function: StaticString = #function, line: UInt = #line) throws -> [String: T] { + let currentValue = self.currentValue(for: key) + guard let jsonDictionary = currentValue as? [String: Any] else { + throw MapError(key: key, currentValue: currentValue, reason: "Cannot cast to '[String: Any]'", file: file, function: function, line: line) + } + var value: [String: T] = [:] + for (key, json) in jsonDictionary { + value[key] = try Mapper().mapOrFail(JSONObject: json) + } + return value + } + + /// Returns a `[String: BaseMappable]` using transform or throws an error. + public func value(_ key: String, using transform: Transform, file: StaticString = #file, function: StaticString = #function, line: UInt = #line) throws -> [String: Transform.Object] { + let currentValue = self.currentValue(for: key) + guard let jsonDictionary = currentValue as? [String: Any] else { + throw MapError(key: key, currentValue: currentValue, reason: "Cannot cast to '[String: Any]'", file: file, function: function, line: line) + } + var value: [String: Transform.Object] = [:] + for (key, json) in jsonDictionary { + guard let object = transform.transformFromJSON(json) else { + throw MapError(key: key, currentValue: json, reason: "Cannot transform to '\(Transform.Object.self)' using \(transform)", file: file, function: function, line: line) + } + value[key] = object + } + return value + } + +} + +public extension Mapper where N: ImmutableMappable { + + public func map(JSON: [String: Any]) throws -> N { + return try self.mapOrFail(JSON: JSON) + } + + public func map(JSONString: String) throws -> N { + return try mapOrFail(JSONString: JSONString) + } + + public func map(JSONObject: Any?) throws -> N { + return try mapOrFail(JSONObject: JSONObject) + } + +} + +internal extension Mapper where N: BaseMappable { + + internal func mapOrFail(JSON: [String: Any]) throws -> N { + let map = Map(mappingType: .fromJSON, JSON: JSON, context: context) + + // Check if object is ImmutableMappable, if so use ImmutableMappable protocol for mapping + if let klass = N.self as? ImmutableMappable.Type, + var object = try klass.init(map: map) as? N { + object.mapping(map: map) + return object + } + + // If not, map the object the standard way + guard let value = self.map(JSON: JSON) else { + throw MapError(key: nil, currentValue: JSON, reason: "Cannot map to '\(N.self)'") + } + return value + } + + internal func mapOrFail(JSONString: String) throws -> N { + guard let JSON = Mapper.parseJSONStringIntoDictionary(JSONString: JSONString) else { + throw MapError(key: nil, currentValue: JSONString, reason: "Cannot parse into '[String: Any]'") + } + return try mapOrFail(JSON: JSON) + } + + internal func mapOrFail(JSONObject: Any?) throws -> N { + guard let JSON = JSONObject as? [String: Any] else { + throw MapError(key: nil, currentValue: JSONObject, reason: "Cannot cast to '[String: Any]'") + } + return try mapOrFail(JSON: JSON) + } + +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Map.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Map.swift new file mode 100644 index 0000000..57b9c6c --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Map.swift @@ -0,0 +1,158 @@ +// +// Map.swift +// ObjectMapper +// +// Created by Tristan Himmelman on 2015-10-09. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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 + +/// MapContext is available for developers who wish to pass information around during the mapping process. +public protocol MapContext { + +} + +/// A class used for holding mapping data +public final class Map { + public let mappingType: MappingType + + public internal(set) var JSON: [String: Any] = [:] + public internal(set) var isKeyPresent = false + public internal(set) var currentValue: Any? + public internal(set) var currentKey: String? + var keyIsNested = false + public var context: MapContext? + + let toObject: Bool // indicates whether the mapping is being applied to an existing object + + public init(mappingType: MappingType, JSON: [String: Any], toObject: Bool = false, context: MapContext? = nil) { + self.mappingType = mappingType + self.JSON = JSON + self.toObject = toObject + self.context = context + } + + /// Sets the current mapper value and key. + /// The Key paramater can be a period separated string (ex. "distance.value") to access sub objects. + public subscript(key: String) -> Map { + // save key and value associated to it + let nested = key.contains(".") + return self[key, nested: nested, ignoreNil: false] + } + + public subscript(key: String, nested nested: Bool) -> Map { + return self[key, nested: nested, ignoreNil: false] + } + + public subscript(key: String, ignoreNil ignoreNil: Bool) -> Map { + let nested = key.contains(".") + return self[key, nested: nested, ignoreNil: ignoreNil] + } + + public subscript(key: String, nested nested: Bool, ignoreNil ignoreNil: Bool) -> Map { + // save key and value associated to it + currentKey = key + keyIsNested = nested + + // check if a value exists for the current key + // do this pre-check for performance reasons + if nested == false { + let object = JSON[key] + let isNSNull = object is NSNull + isKeyPresent = isNSNull ? true : object != nil + currentValue = isNSNull ? nil : object + } else { + // break down the components of the key that are separated by . + (isKeyPresent, currentValue) = valueFor(ArraySlice(key.components(separatedBy: ".")), dictionary: JSON) + } + + // update isKeyPresent if ignoreNil is true + if ignoreNil && currentValue == nil { + isKeyPresent = false + } + + return self + } + + public func value() -> T? { + return currentValue as? T + } + +} + +/// Fetch value from JSON dictionary, loop through keyPathComponents until we reach the desired object +private func valueFor(_ keyPathComponents: ArraySlice, dictionary: [String: Any]) -> (Bool, Any?) { + // Implement it as a tail recursive function. + if keyPathComponents.isEmpty { + return (false, nil) + } + + if let keyPath = keyPathComponents.first { + let object = dictionary[keyPath] + if object is NSNull { + return (true, nil) + } else if let dict = object as? [String: Any] , keyPathComponents.count > 1 { + let tail = keyPathComponents.dropFirst() + return valueFor(tail, dictionary: dict) + } else if let array = object as? [Any] , keyPathComponents.count > 1 { + let tail = keyPathComponents.dropFirst() + return valueFor(tail, array: array) + } else { + return (object != nil, object) + } + } + + return (false, nil) +} + +/// Fetch value from JSON Array, loop through keyPathComponents them until we reach the desired object +private func valueFor(_ keyPathComponents: ArraySlice, array: [Any]) -> (Bool, Any?) { + // Implement it as a tail recursive function. + + if keyPathComponents.isEmpty { + return (false, nil) + } + + //Try to convert keypath to Int as index + if let keyPath = keyPathComponents.first, + let index = Int(keyPath) , index >= 0 && index < array.count { + + let object = array[index] + + if object is NSNull { + return (true, nil) + } else if let array = object as? [Any] , keyPathComponents.count > 1 { + let tail = keyPathComponents.dropFirst() + return valueFor(tail, array: array) + } else if let dict = object as? [String: Any] , keyPathComponents.count > 1 { + let tail = keyPathComponents.dropFirst() + return valueFor(tail, dictionary: dict) + } else { + return (true, object) + } + } + + return (false, nil) +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/MapError.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/MapError.swift new file mode 100644 index 0000000..17b52bb --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/MapError.swift @@ -0,0 +1,68 @@ +// +// MapError.swift +// ObjectMapper +// +// Created by Tristan Himmelman on 2016-09-26. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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 + +public struct MapError: Error { + public var key: String? + public var currentValue: Any? + public var reason: String? + public var file: StaticString? + public var function: StaticString? + public var line: UInt? + + init(key: String?, currentValue: Any?, reason: String?, file: StaticString? = nil, function: StaticString? = nil, line: UInt? = nil) { + self.key = key + self.currentValue = currentValue + self.reason = reason + self.file = file + self.function = function + self.line = line + } +} + +extension MapError: CustomStringConvertible { + + private var location: String? { + guard let file = file, let function = function, let line = line else { return nil } + let fileName = ((String(describing: file).components(separatedBy: "/").last ?? "").components(separatedBy: ".").first ?? "") + return "\(fileName).\(function):\(line)" + } + + public var description: String { + let info: [(String, Any?)] = [ + ("- reason", reason), + ("- location", location), + ("- key", key), + ("- currentValue", currentValue), + ] + let infoString = info.map { "\($0): \($1 ?? "nil")" }.joined(separator: "\n") + return "Got an error while mapping.\n\(infoString)" + } + +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Mappable.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Mappable.swift new file mode 100644 index 0000000..1069679 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Mappable.swift @@ -0,0 +1,139 @@ +// +// Mappable.swift +// ObjectMapper +// +// Created by Scott Hoyt on 10/25/15. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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 + +/// BaseMappable should not be implemented directly. Mappable or StaticMappable should be used instead +public protocol BaseMappable { + /// This function is where all variable mappings should occur. It is executed by Mapper during the mapping (serialization and deserialization) process. + mutating func mapping(map: Map) +} + +public protocol Mappable: BaseMappable { + /// This function can be used to validate JSON prior to mapping. Return nil to cancel mapping at this point + init?(map: Map) +} + +public protocol StaticMappable: BaseMappable { + /// This is function that can be used to: + /// 1) provide an existing cached object to be used for mapping + /// 2) return an object of another class (which conforms to Mappable) to be used for mapping. For instance, you may inspect the JSON to infer the type of object that should be used for any given mapping + static func objectForMapping(map: Map) -> BaseMappable? +} + +public extension BaseMappable { + + /// Initializes object from a JSON String + public init?(JSONString: String, context: MapContext? = nil) { + if let obj: Self = Mapper(context: context).map(JSONString: JSONString) { + self = obj + } else { + return nil + } + } + + /// Initializes object from a JSON Dictionary + public init?(JSON: [String: Any], context: MapContext? = nil) { + if let obj: Self = Mapper(context: context).map(JSON: JSON) { + self = obj + } else { + return nil + } + } + + /// Returns the JSON Dictionary for the object + public func toJSON() -> [String: Any] { + return Mapper().toJSON(self) + } + + /// Returns the JSON String for the object + public func toJSONString(prettyPrint: Bool = false) -> String? { + return Mapper().toJSONString(self, prettyPrint: prettyPrint) + } +} + +public extension Array where Element: BaseMappable { + + /// Initialize Array from a JSON String + public init?(JSONString: String, context: MapContext? = nil) { + if let obj: [Element] = Mapper(context: context).mapArray(JSONString: JSONString) { + self = obj + } else { + return nil + } + } + + /// Initialize Array from a JSON Array + public init?(JSONArray: [[String: Any]], context: MapContext? = nil) { + if let obj: [Element] = Mapper(context: context).mapArray(JSONArray: JSONArray) { + self = obj + } else { + return nil + } + } + + /// Returns the JSON Array + public func toJSON() -> [[String: Any]] { + return Mapper().toJSONArray(self) + } + + /// Returns the JSON String for the object + public func toJSONString(prettyPrint: Bool = false) -> String? { + return Mapper().toJSONString(self, prettyPrint: prettyPrint) + } +} + +public extension Set where Element: BaseMappable { + + /// Initializes a set from a JSON String + public init?(JSONString: String, context: MapContext? = nil) { + if let obj: Set = Mapper(context: context).mapSet(JSONString: JSONString) { + self = obj + } else { + return nil + } + } + + /// Initializes a set from JSON + public init?(JSONArray: [[String: Any]], context: MapContext? = nil) { + guard let obj = Mapper(context: context).mapSet(JSONArray: JSONArray) as Set? else { + return nil + } + self = obj + } + + /// Returns the JSON Set + public func toJSON() -> [[String: Any]] { + return Mapper().toJSONSet(self) + } + + /// Returns the JSON String for the object + public func toJSONString(prettyPrint: Bool = false) -> String? { + return Mapper().toJSONString(self, prettyPrint: prettyPrint) + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Mapper.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Mapper.swift new file mode 100755 index 0000000..ec57ef5 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Mapper.swift @@ -0,0 +1,430 @@ +// +// Mapper.swift +// ObjectMapper +// +// Created by Tristan Himmelman on 2014-10-09. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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 + +public enum MappingType { + case fromJSON + case toJSON +} + +/// The Mapper class provides methods for converting Model objects to JSON and methods for converting JSON to Model objects +public final class Mapper { + + public var context: MapContext? + + public init(context: MapContext? = nil){ + self.context = context + } + + // MARK: Mapping functions that map to an existing object toObject + + /// Maps a JSON object to an existing Mappable object if it is a JSON dictionary, or returns the passed object as is + public func map(JSONObject: Any?, toObject object: N) -> N { + if let JSON = JSONObject as? [String: Any] { + return map(JSON: JSON, toObject: object) + } + + return object + } + + /// Map a JSON string onto an existing object + public func map(JSONString: String, toObject object: N) -> N { + if let JSON = Mapper.parseJSONStringIntoDictionary(JSONString: JSONString) { + return map(JSON: JSON, toObject: object) + } + return object + } + + /// Maps a JSON dictionary to an existing object that conforms to Mappable. + /// Usefull for those pesky objects that have crappy designated initializers like NSManagedObject + public func map(JSON: [String: Any], toObject object: N) -> N { + var mutableObject = object + let map = Map(mappingType: .fromJSON, JSON: JSON, toObject: true, context: context) + mutableObject.mapping(map: map) + return mutableObject + } + + //MARK: Mapping functions that create an object + + /// Map a JSON string to an object that conforms to Mappable + public func map(JSONString: String) -> N? { + if let JSON = Mapper.parseJSONStringIntoDictionary(JSONString: JSONString) { + return map(JSON: JSON) + } + + return nil + } + + /// Maps a JSON object to a Mappable object if it is a JSON dictionary or NSString, or returns nil. + public func map(JSONObject: Any?) -> N? { + if let JSON = JSONObject as? [String: Any] { + return map(JSON: JSON) + } + + return nil + } + + /// Maps a JSON dictionary to an object that conforms to Mappable + public func map(JSON: [String: Any]) -> N? { + let map = Map(mappingType: .fromJSON, JSON: JSON, context: context) + + // check if object is StaticMappable + if let klass = N.self as? StaticMappable.Type { + if var object = klass.objectForMapping(map: map) as? N { + object.mapping(map: map) + return object + } + } + + // fall back to using init? to create N + if let klass = N.self as? Mappable.Type { + if var object = klass.init(map: map) as? N { + object.mapping(map: map) + return object + } + } + + return nil + } + + // MARK: Mapping functions for Arrays and Dictionaries + + /// Maps a JSON array to an object that conforms to Mappable + public func mapArray(JSONString: String) -> [N]? { + let parsedJSON: Any? = Mapper.parseJSONString(JSONString: JSONString) + + if let objectArray = mapArray(JSONObject: parsedJSON) { + return objectArray + } + + // failed to parse JSON into array form + // try to parse it into a dictionary and then wrap it in an array + if let object = map(JSONObject: parsedJSON) { + return [object] + } + + return nil + } + + /// Maps a JSON object to an array of Mappable objects if it is an array of JSON dictionary, or returns nil. + public func mapArray(JSONObject: Any?) -> [N]? { + if let JSONArray = JSONObject as? [[String: Any]] { + return mapArray(JSONArray: JSONArray) + } + + return nil + } + + /// Maps an array of JSON dictionary to an array of Mappable objects + public func mapArray(JSONArray: [[String: Any]]) -> [N]? { + // map every element in JSON array to type N + let result = JSONArray.flatMap(map) + return result + } + + /// Maps a JSON object to a dictionary of Mappable objects if it is a JSON dictionary of dictionaries, or returns nil. + public func mapDictionary(JSONString: String) -> [String: N]? { + let parsedJSON: Any? = Mapper.parseJSONString(JSONString: JSONString) + return mapDictionary(JSONObject: parsedJSON) + } + + /// Maps a JSON object to a dictionary of Mappable objects if it is a JSON dictionary of dictionaries, or returns nil. + public func mapDictionary(JSONObject: Any?) -> [String: N]? { + if let JSON = JSONObject as? [String: [String: Any]] { + return mapDictionary(JSON: JSON) + } + + return nil + } + + /// Maps a JSON dictionary of dictionaries to a dictionary of Mappble objects + public func mapDictionary(JSON: [String: [String: Any]]) -> [String: N]? { + // map every value in dictionary to type N + let result = JSON.filterMap(map) + if result.isEmpty == false { + return result + } + + return nil + } + + /// Maps a JSON object to a dictionary of Mappable objects if it is a JSON dictionary of dictionaries, or returns nil. + public func mapDictionary(JSONObject: Any?, toDictionary dictionary: [String: N]) -> [String: N] { + if let JSON = JSONObject as? [String : [String : Any]] { + return mapDictionary(JSON: JSON, toDictionary: dictionary) + } + + return dictionary + } + + /// Maps a JSON dictionary of dictionaries to an existing dictionary of Mappble objects + public func mapDictionary(JSON: [String: [String: Any]], toDictionary dictionary: [String: N]) -> [String: N] { + var mutableDictionary = dictionary + for (key, value) in JSON { + if let object = dictionary[key] { + _ = map(JSON: value, toObject: object) + } else { + mutableDictionary[key] = map(JSON: value) + } + } + + return mutableDictionary + } + + /// Maps a JSON object to a dictionary of arrays of Mappable objects + public func mapDictionaryOfArrays(JSONObject: Any?) -> [String: [N]]? { + if let JSON = JSONObject as? [String: [[String: Any]]] { + return mapDictionaryOfArrays(JSON: JSON) + } + + return nil + } + + ///Maps a JSON dictionary of arrays to a dictionary of arrays of Mappable objects + public func mapDictionaryOfArrays(JSON: [String: [[String: Any]]]) -> [String: [N]]? { + // map every value in dictionary to type N + let result = JSON.filterMap { + mapArray(JSONArray: $0) + } + + if result.isEmpty == false { + return result + } + + return nil + } + + /// Maps an 2 dimentional array of JSON dictionaries to a 2 dimentional array of Mappable objects + public func mapArrayOfArrays(JSONObject: Any?) -> [[N]]? { + if let JSONArray = JSONObject as? [[[String: Any]]] { + var objectArray = [[N]]() + for innerJSONArray in JSONArray { + if let array = mapArray(JSONArray: innerJSONArray){ + objectArray.append(array) + } + } + + if objectArray.isEmpty == false { + return objectArray + } + } + + return nil + } + + // MARK: Utility functions for converting strings to JSON objects + + /// Convert a JSON String into a Dictionary using NSJSONSerialization + public static func parseJSONStringIntoDictionary(JSONString: String) -> [String: Any]? { + let parsedJSON: Any? = Mapper.parseJSONString(JSONString: JSONString) + return parsedJSON as? [String: Any] + } + + /// Convert a JSON String into an Object using NSJSONSerialization + public static func parseJSONString(JSONString: String) -> Any? { + let data = JSONString.data(using: String.Encoding.utf8, allowLossyConversion: true) + if let data = data { + let parsedJSON: Any? + do { + parsedJSON = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) + } catch let error { + print(error) + parsedJSON = nil + } + return parsedJSON + } + + return nil + } +} + +extension Mapper { + + // MARK: Functions that create JSON from objects + + ///Maps an object that conforms to Mappable to a JSON dictionary + public func toJSON(_ object: N) -> [String: Any] { + var mutableObject = object + let map = Map(mappingType: .toJSON, JSON: [:], context: context) + mutableObject.mapping(map: map) + return map.JSON + } + + ///Maps an array of Objects to an array of JSON dictionaries [[String: Any]] + public func toJSONArray(_ array: [N]) -> [[String: Any]] { + return array.map { + // convert every element in array to JSON dictionary equivalent + self.toJSON($0) + } + } + + ///Maps a dictionary of Objects that conform to Mappable to a JSON dictionary of dictionaries. + public func toJSONDictionary(_ dictionary: [String: N]) -> [String: [String: Any]] { + return dictionary.map { k, v in + // convert every value in dictionary to its JSON dictionary equivalent + return (k, self.toJSON(v)) + } + } + + ///Maps a dictionary of Objects that conform to Mappable to a JSON dictionary of dictionaries. + public func toJSONDictionaryOfArrays(_ dictionary: [String: [N]]) -> [String: [[String: Any]]] { + return dictionary.map { k, v in + // convert every value (array) in dictionary to its JSON dictionary equivalent + return (k, self.toJSONArray(v)) + } + } + + /// Maps an Object to a JSON string with option of pretty formatting + public func toJSONString(_ object: N, prettyPrint: Bool = false) -> String? { + let JSONDict = toJSON(object) + + return Mapper.toJSONString(JSONDict as Any, prettyPrint: prettyPrint) + } + + /// Maps an array of Objects to a JSON string with option of pretty formatting + public func toJSONString(_ array: [N], prettyPrint: Bool = false) -> String? { + let JSONDict = toJSONArray(array) + + return Mapper.toJSONString(JSONDict as Any, prettyPrint: prettyPrint) + } + + /// Converts an Object to a JSON string with option of pretty formatting + public static func toJSONString(_ JSONObject: Any, prettyPrint: Bool) -> String? { + let options: JSONSerialization.WritingOptions = prettyPrint ? .prettyPrinted : [] + if let JSON = Mapper.toJSONData(JSONObject, options: options) { + return String(data: JSON, encoding: String.Encoding.utf8) + } + + return nil + } + + /// Converts an Object to JSON data with options + public static func toJSONData(_ JSONObject: Any, options: JSONSerialization.WritingOptions) -> Data? { + if JSONSerialization.isValidJSONObject(JSONObject) { + let JSONData: Data? + do { + JSONData = try JSONSerialization.data(withJSONObject: JSONObject, options: options) + } catch let error { + print(error) + JSONData = nil + } + + return JSONData + } + + return nil + } +} + +extension Mapper where N: Hashable { + + /// Maps a JSON array to an object that conforms to Mappable + public func mapSet(JSONString: String) -> Set? { + let parsedJSON: Any? = Mapper.parseJSONString(JSONString: JSONString) + + if let objectArray = mapArray(JSONObject: parsedJSON) { + return Set(objectArray) + } + + // failed to parse JSON into array form + // try to parse it into a dictionary and then wrap it in an array + if let object = map(JSONObject: parsedJSON) { + return Set([object]) + } + + return nil + } + + /// Maps a JSON object to an Set of Mappable objects if it is an array of JSON dictionary, or returns nil. + public func mapSet(JSONObject: Any?) -> Set? { + if let JSONArray = JSONObject as? [[String: Any]] { + return mapSet(JSONArray: JSONArray) + } + + return nil + } + + /// Maps an Set of JSON dictionary to an array of Mappable objects + public func mapSet(JSONArray: [[String: Any]]) -> Set { + // map every element in JSON array to type N + return Set(JSONArray.flatMap(map)) + } + + ///Maps a Set of Objects to a Set of JSON dictionaries [[String : Any]] + public func toJSONSet(_ set: Set) -> [[String: Any]] { + return set.map { + // convert every element in set to JSON dictionary equivalent + self.toJSON($0) + } + } + + /// Maps a set of Objects to a JSON string with option of pretty formatting + public func toJSONString(_ set: Set, prettyPrint: Bool = false) -> String? { + let JSONDict = toJSONSet(set) + + return Mapper.toJSONString(JSONDict as Any, prettyPrint: prettyPrint) + } +} + +extension Dictionary { + internal func map(_ f: (Element) -> (K, V)) -> [K: V] { + var mapped = [K: V]() + + for element in self { + let newElement = f(element) + mapped[newElement.0] = newElement.1 + } + + return mapped + } + + internal func map(_ f: (Element) -> (K, [V])) -> [K: [V]] { + var mapped = [K: [V]]() + + for element in self { + let newElement = f(element) + mapped[newElement.0] = newElement.1 + } + + return mapped + } + + + internal func filterMap(_ f: (Value) -> U?) -> [Key: U] { + var mapped = [Key: U]() + + for (key, value) in self { + if let newValue = f(value) { + mapped[key] = newValue + } + } + + return mapped + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Operators/EnumOperators.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Operators/EnumOperators.swift new file mode 100644 index 0000000..5a1a667 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Operators/EnumOperators.swift @@ -0,0 +1,91 @@ +// +// EnumOperators.swift +// ObjectMapper +// +// Created by Tristan Himmelman on 2016-09-26. +// Copyright © 2016 hearst. All rights reserved. +// + +import Foundation + + +// MARK:- Raw Representable types + +/// Object of Raw Representable type +public func <- (left: inout T, right: Map) { + left <- (right, EnumTransform()) +} + +public func >>> (left: T, right: Map) { + left >>> (right, EnumTransform()) +} + + +/// Optional Object of Raw Representable type +public func <- (left: inout T?, right: Map) { + left <- (right, EnumTransform()) +} + +public func >>> (left: T?, right: Map) { + left >>> (right, EnumTransform()) +} + + +/// Implicitly Unwrapped Optional Object of Raw Representable type +public func <- (left: inout T!, right: Map) { + left <- (right, EnumTransform()) +} + +// MARK:- Arrays of Raw Representable type + +/// Array of Raw Representable object +public func <- (left: inout [T], right: Map) { + left <- (right, EnumTransform()) +} + +public func >>> (left: [T], right: Map) { + left >>> (right, EnumTransform()) +} + + +/// Array of Raw Representable object +public func <- (left: inout [T]?, right: Map) { + left <- (right, EnumTransform()) +} + +public func >>> (left: [T]?, right: Map) { + left >>> (right, EnumTransform()) +} + + +/// Array of Raw Representable object +public func <- (left: inout [T]!, right: Map) { + left <- (right, EnumTransform()) +} + +// MARK:- Dictionaries of Raw Representable type + +/// Dictionary of Raw Representable object +public func <- (left: inout [String: T], right: Map) { + left <- (right, EnumTransform()) +} + +public func >>> (left: [String: T], right: Map) { + left >>> (right, EnumTransform()) +} + + +/// Dictionary of Raw Representable object +public func <- (left: inout [String: T]?, right: Map) { + left <- (right, EnumTransform()) +} + +public func >>> (left: [String: T]?, right: Map) { + left >>> (right, EnumTransform()) +} + + +/// Dictionary of Raw Representable object +public func <- (left: inout [String: T]!, right: Map) { + left <- (right, EnumTransform()) +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Operators/Operators.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Operators/Operators.swift new file mode 100755 index 0000000..57741f8 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Operators/Operators.swift @@ -0,0 +1,377 @@ +// +// Operators.swift +// ObjectMapper +// +// Created by Tristan Himmelman on 2014-10-09. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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. + +/** +* This file defines a new operator which is used to create a mapping between an object and a JSON key value. +* There is an overloaded operator definition for each type of object that is supported in ObjectMapper. +* This provides a way to add custom logic to handle specific types of objects +*/ + +/// Operator used for defining mappings to and from JSON +infix operator <- + +/// Operator used to define mappings to JSON +infix operator >>> + +// MARK:- Objects with Basic types + +/// Object of Basic type +public func <- (left: inout T, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.basicType(&left, object: right.value()) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: T, right: Map) { + if right.mappingType == .toJSON { + ToJSON.basicType(left, map: right) + } +} + + +/// Optional object of basic type +public func <- (left: inout T?, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalBasicType(&left, object: right.value()) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: T?, right: Map) { + if right.mappingType == .toJSON { + ToJSON.optionalBasicType(left, map: right) + } +} + + +/// Implicitly unwrapped optional object of basic type +public func <- (left: inout T!, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalBasicType(&left, object: right.value()) + case .toJSON: + left >>> right + default: () + } +} + +// MARK:- Mappable Objects - + +/// Object conforming to Mappable +public func <- (left: inout T, right: Map) { + switch right.mappingType { + case .fromJSON: + FromJSON.object(&left, map: right) + case .toJSON: + left >>> right + } +} + +public func >>> (left: T, right: Map) { + if right.mappingType == .toJSON { + ToJSON.object(left, map: right) + } +} + + +/// Optional Mappable objects +public func <- (left: inout T?, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalObject(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: T?, right: Map) { + if right.mappingType == .toJSON { + ToJSON.optionalObject(left, map: right) + } +} + + +/// Implicitly unwrapped optional Mappable objects +public func <- (left: inout T!, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalObject(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +// MARK:- Dictionary of Mappable objects - Dictionary + +/// Dictionary of Mappable objects +public func <- (left: inout Dictionary, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.objectDictionary(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Dictionary, right: Map) { + if right.mappingType == .toJSON { + ToJSON.objectDictionary(left, map: right) + } +} + + +/// Optional Dictionary of Mappable object +public func <- (left: inout Dictionary?, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalObjectDictionary(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Dictionary?, right: Map) { + if right.mappingType == .toJSON { + ToJSON.optionalObjectDictionary(left, map: right) + } +} + + +/// Implicitly unwrapped Optional Dictionary of Mappable object +public func <- (left: inout Dictionary!, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalObjectDictionary(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +/// Dictionary of Mappable objects +public func <- (left: inout Dictionary, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.objectDictionaryOfArrays(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Dictionary, right: Map) { + if right.mappingType == .toJSON { + ToJSON.objectDictionaryOfArrays(left, map: right) + } +} + +/// Optional Dictionary of Mappable object +public func <- (left: inout Dictionary?, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalObjectDictionaryOfArrays(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Dictionary?, right: Map) { + if right.mappingType == .toJSON { + ToJSON.optionalObjectDictionaryOfArrays(left, map: right) + } +} + + +/// Implicitly unwrapped Optional Dictionary of Mappable object +public func <- (left: inout Dictionary!, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalObjectDictionaryOfArrays(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +// MARK:- Array of Mappable objects - Array + +/// Array of Mappable objects +public func <- (left: inout Array, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.objectArray(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Array, right: Map) { + if right.mappingType == .toJSON { + ToJSON.objectArray(left, map: right) + } +} + +/// Optional array of Mappable objects +public func <- (left: inout Array?, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalObjectArray(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Array?, right: Map) { + if right.mappingType == .toJSON { + ToJSON.optionalObjectArray(left, map: right) + } +} + + +/// Implicitly unwrapped Optional array of Mappable objects +public func <- (left: inout Array!, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalObjectArray(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +// MARK:- Array of Array of Mappable objects - Array> + +/// Array of Array Mappable objects +public func <- (left: inout Array>, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.twoDimensionalObjectArray(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Array>, right: Map) { + if right.mappingType == .toJSON { + ToJSON.twoDimensionalObjectArray(left, map: right) + } +} + + +/// Optional array of Mappable objects +public func <- (left:inout Array>?, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalTwoDimensionalObjectArray(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Array>?, right: Map) { + if right.mappingType == .toJSON { + ToJSON.optionalTwoDimensionalObjectArray(left, map: right) + } +} + + +/// Implicitly unwrapped Optional array of Mappable objects +public func <- (left: inout Array>!, right: Map) { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalTwoDimensionalObjectArray(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +// MARK:- Set of Mappable objects - Set + +/// Set of Mappable objects +public func <- (left: inout Set, right: Map) where T: Hashable { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.objectSet(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Set, right: Map) where T: Hashable { + if right.mappingType == .toJSON { + ToJSON.objectSet(left, map: right) + } +} + + +/// Optional Set of Mappable objects +public func <- (left: inout Set?, right: Map) where T: Hashable, T: Hashable { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalObjectSet(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Set?, right: Map) where T: Hashable, T: Hashable { + if right.mappingType == .toJSON { + ToJSON.optionalObjectSet(left, map: right) + } +} + + +/// Implicitly unwrapped Optional Set of Mappable objects +public func <- (left: inout Set!, right: Map) where T: Hashable { + switch right.mappingType { + case .fromJSON where right.isKeyPresent: + FromJSON.optionalObjectSet(&left, map: right) + case .toJSON: + left >>> right + default: () + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Operators/TransformOperators.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Operators/TransformOperators.swift new file mode 100644 index 0000000..dbe5ad2 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/Operators/TransformOperators.swift @@ -0,0 +1,606 @@ +// +// TransformOperators.swift +// ObjectMapper +// +// Created by Tristan Himmelman on 2016-09-26. +// Copyright © 2016 hearst. All rights reserved. +// + +import Foundation + +// MARK:- Transforms + +/// Object of Basic type with Transform +public func <- (left: inout Transform.Object, right: (Map, Transform)) { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let value = transform.transformFromJSON(map.currentValue) + FromJSON.basicType(&left, object: value) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Transform.Object, right: (Map, Transform)) { + let (map, transform) = right + if map.mappingType == .toJSON { + let value: Transform.JSON? = transform.transformToJSON(left) + ToJSON.optionalBasicType(value, map: map) + } +} + + +/// Optional object of basic type with Transform +public func <- (left: inout Transform.Object?, right: (Map, Transform)) { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let value = transform.transformFromJSON(map.currentValue) + FromJSON.optionalBasicType(&left, object: value) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Transform.Object?, right: (Map, Transform)) { + let (map, transform) = right + if map.mappingType == .toJSON { + let value: Transform.JSON? = transform.transformToJSON(left) + ToJSON.optionalBasicType(value, map: map) + } +} + + +/// Implicitly unwrapped optional object of basic type with Transform +public func <- (left: inout Transform.Object!, right: (Map, Transform)) { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let value = transform.transformFromJSON(map.currentValue) + FromJSON.optionalBasicType(&left, object: value) + case .toJSON: + left >>> right + default: () + } +} + +/// Array of Basic type with Transform +public func <- (left: inout [Transform.Object], right: (Map, Transform)) { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let values = fromJSONArrayWithTransform(map.currentValue, transform: transform) + FromJSON.basicType(&left, object: values) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: [Transform.Object], right: (Map, Transform)) { + let (map, transform) = right + if map.mappingType == .toJSON{ + let values = toJSONArrayWithTransform(left, transform: transform) + ToJSON.optionalBasicType(values, map: map) + } +} + + +/// Optional array of Basic type with Transform +public func <- (left: inout [Transform.Object]?, right: (Map, Transform)) { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let values = fromJSONArrayWithTransform(map.currentValue, transform: transform) + FromJSON.optionalBasicType(&left, object: values) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: [Transform.Object]?, right: (Map, Transform)) { + let (map, transform) = right + if map.mappingType == .toJSON { + let values = toJSONArrayWithTransform(left, transform: transform) + ToJSON.optionalBasicType(values, map: map) + } +} + + +/// Implicitly unwrapped optional array of Basic type with Transform +public func <- (left: inout [Transform.Object]!, right: (Map, Transform)) { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let values = fromJSONArrayWithTransform(map.currentValue, transform: transform) + FromJSON.optionalBasicType(&left, object: values) + case .toJSON: + left >>> right + default: () + } +} + +/// Dictionary of Basic type with Transform +public func <- (left: inout [String: Transform.Object], right: (Map, Transform)) { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let values = fromJSONDictionaryWithTransform(map.currentValue, transform: transform) + FromJSON.basicType(&left, object: values) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: [String: Transform.Object], right: (Map, Transform)) { + let (map, transform) = right + if map.mappingType == . toJSON { + let values = toJSONDictionaryWithTransform(left, transform: transform) + ToJSON.optionalBasicType(values, map: map) + } +} + + +/// Optional dictionary of Basic type with Transform +public func <- (left: inout [String: Transform.Object]?, right: (Map, Transform)) { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let values = fromJSONDictionaryWithTransform(map.currentValue, transform: transform) + FromJSON.optionalBasicType(&left, object: values) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: [String: Transform.Object]?, right: (Map, Transform)) { + let (map, transform) = right + if map.mappingType == .toJSON { + let values = toJSONDictionaryWithTransform(left, transform: transform) + ToJSON.optionalBasicType(values, map: map) + } +} + + +/// Implicitly unwrapped optional dictionary of Basic type with Transform +public func <- (left: inout [String: Transform.Object]!, right: (Map, Transform)) { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let values = fromJSONDictionaryWithTransform(map.currentValue, transform: transform) + FromJSON.optionalBasicType(&left, object: values) + case .toJSON: + left >>> right + default: () + } +} + +// MARK:- Transforms of Mappable Objects - + +/// Object conforming to Mappable that have transforms +public func <- (left: inout Transform.Object, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let value: Transform.Object? = transform.transformFromJSON(map.currentValue) + FromJSON.basicType(&left, object: value) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Transform.Object, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .toJSON { + let value: Transform.JSON? = transform.transformToJSON(left) + ToJSON.optionalBasicType(value, map: map) + } +} + + +/// Optional Mappable objects that have transforms +public func <- (left: inout Transform.Object?, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let value: Transform.Object? = transform.transformFromJSON(map.currentValue) + FromJSON.optionalBasicType(&left, object: value) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Transform.Object?, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .toJSON{ + let value: Transform.JSON? = transform.transformToJSON(left) + ToJSON.optionalBasicType(value, map: map) + } +} + + +/// Implicitly unwrapped optional Mappable objects that have transforms +public func <- (left: inout Transform.Object!, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let value: Transform.Object? = transform.transformFromJSON(map.currentValue) + FromJSON.optionalBasicType(&left, object: value) + case .toJSON: + left >>> right + default: () + } +} + + +// MARK:- Dictionary of Mappable objects with a transform - Dictionary + +/// Dictionary of Mappable objects with a transform +public func <- (left: inout Dictionary, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .fromJSON && map.isKeyPresent, + let object = map.currentValue as? [String: AnyObject] { + let value = fromJSONDictionaryWithTransform(object as AnyObject?, transform: transform) ?? left + FromJSON.basicType(&left, object: value) + } else if map.mappingType == .toJSON { + left >>> right + } +} + +public func >>> (left: Dictionary, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .toJSON { + let value = toJSONDictionaryWithTransform(left, transform: transform) + ToJSON.basicType(value, map: map) + } +} + + +/// Optional Dictionary of Mappable object with a transform +public func <- (left: inout Dictionary?, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .fromJSON && map.isKeyPresent, let object = map.currentValue as? [String : AnyObject]{ + let value = fromJSONDictionaryWithTransform(object as AnyObject?, transform: transform) ?? left + FromJSON.optionalBasicType(&left, object: value) + } else if map.mappingType == .toJSON { + left >>> right + } +} + +public func >>> (left: Dictionary?, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .toJSON { + let value = toJSONDictionaryWithTransform(left, transform: transform) + ToJSON.optionalBasicType(value, map: map) + } +} + + +/// Implicitly unwrapped Optional Dictionary of Mappable object with a transform +public func <- (left: inout Dictionary!, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .fromJSON && map.isKeyPresent, let dictionary = map.currentValue as? [String : AnyObject]{ + let transformedDictionary = fromJSONDictionaryWithTransform(dictionary as AnyObject?, transform: transform) ?? left + FromJSON.optionalBasicType(&left, object: transformedDictionary) + } else if map.mappingType == .toJSON { + left >>> right + } +} + +/// Dictionary of Mappable objects with a transform +public func <- (left: inout Dictionary, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + + if let dictionary = map.currentValue as? [String : [AnyObject]], map.mappingType == .fromJSON && map.isKeyPresent { + let transformedDictionary = dictionary.map { (key: String, values: [AnyObject]) -> (String, [Transform.Object]) in + if let jsonArray = fromJSONArrayWithTransform(values, transform: transform) { + return (key, jsonArray) + } + if let leftValue = left[key] { + return (key, leftValue) + } + return (key, []) + } + + FromJSON.basicType(&left, object: transformedDictionary) + } else if map.mappingType == .toJSON { + left >>> right + } +} + +public func >>> (left: Dictionary, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + + if map.mappingType == .toJSON { + let transformedDictionary = left.map { (key, values) in + return (key, toJSONArrayWithTransform(values, transform: transform) ?? []) + } + + ToJSON.basicType(transformedDictionary, map: map) + } +} + + +/// Optional Dictionary of Mappable object with a transform +public func <- (left: inout Dictionary?, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + + if let dictionary = map.currentValue as? [String : [AnyObject]], map.mappingType == .fromJSON && map.isKeyPresent { + + let transformedDictionary = dictionary.map { (key: String, values: [AnyObject]) -> (String, [Transform.Object]) in + if let jsonArray = fromJSONArrayWithTransform(values, transform: transform) { + return (key, jsonArray) + } + if let leftValue = left?[key] { + return (key, leftValue) + } + return (key, []) + + } + + FromJSON.optionalBasicType(&left, object: transformedDictionary) + } else if map.mappingType == .toJSON { + left >>> right + } +} + +public func >>> (left: Dictionary?, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + + if map.mappingType == .toJSON { + let transformedDictionary = left?.map { (key, values) in + return (key, toJSONArrayWithTransform(values, transform: transform) ?? []) + } + + ToJSON.optionalBasicType(transformedDictionary, map: map) + } +} + + +/// Implicitly unwrapped Optional Dictionary of Mappable object with a transform +public func <- (left: inout Dictionary!, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + + if let dictionary = map.currentValue as? [String : [AnyObject]], map.mappingType == .fromJSON && map.isKeyPresent { + let transformedDictionary = dictionary.map { (key: String, values: [AnyObject]) -> (String, [Transform.Object]) in + if let jsonArray = fromJSONArrayWithTransform(values, transform: transform) { + return (key, jsonArray) + } + if let leftValue = left?[key] { + return (key, leftValue) + } + return (key, []) + } + FromJSON.optionalBasicType(&left, object: transformedDictionary) + } else if map.mappingType == .toJSON { + left >>> right + } +} + +// MARK:- Array of Mappable objects with transforms - Array + +/// Array of Mappable objects +public func <- (left: inout Array, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + if let transformedValues = fromJSONArrayWithTransform(map.currentValue, transform: transform) { + FromJSON.basicType(&left, object: transformedValues) + } + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Array, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .toJSON { + let transformedValues = toJSONArrayWithTransform(left, transform: transform) + ToJSON.optionalBasicType(transformedValues, map: map) + } +} + + +/// Optional array of Mappable objects +public func <- (left: inout Array?, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let transformedValues = fromJSONArrayWithTransform(map.currentValue, transform: transform) + FromJSON.optionalBasicType(&left, object: transformedValues) + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Array?, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .toJSON { + let transformedValues = toJSONArrayWithTransform(left, transform: transform) + ToJSON.optionalBasicType(transformedValues, map: map) + } +} + + +/// Implicitly unwrapped Optional array of Mappable objects +public func <- (left: inout Array!, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + let transformedValues = fromJSONArrayWithTransform(map.currentValue, transform: transform) + FromJSON.optionalBasicType(&left, object: transformedValues) + case .toJSON: + left >>> right + default: () + } +} + +// MARK:- Array of Array of Mappable objects - Array>> with transforms + +/// Array of Array Mappable objects with transform +public func <- (left: inout Array>, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .fromJSON && map.isKeyPresent, let original2DArray = map.currentValue as? [[AnyObject]]{ + let transformed2DArray = original2DArray.flatMap { values in + fromJSONArrayWithTransform(values as AnyObject?, transform: transform) + } + FromJSON.basicType(&left, object: transformed2DArray) + } else if map.mappingType == .toJSON { + left >>> right + } +} + +public func >>> (left: Array>, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .toJSON { + let transformed2DArray = left.flatMap { values in + toJSONArrayWithTransform(values, transform: transform) + } + ToJSON.basicType(transformed2DArray, map: map) + } +} + + +/// Optional array of Mappable objects with transform +public func <- (left:inout Array>?, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .fromJSON && map.isKeyPresent, let original2DArray = map.currentValue as? [[AnyObject]]{ + let transformed2DArray = original2DArray.flatMap { values in + fromJSONArrayWithTransform(values as AnyObject?, transform: transform) + } + FromJSON.optionalBasicType(&left, object: transformed2DArray) + } else if map.mappingType == .toJSON { + left >>> right + } +} + +public func >>> (left: Array>?, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .toJSON { + let transformed2DArray = left?.flatMap { values in + toJSONArrayWithTransform(values, transform: transform) + } + ToJSON.optionalBasicType(transformed2DArray, map: map) + } +} + + +/// Implicitly unwrapped Optional array of Mappable objects with transform +public func <- (left: inout Array>!, right: (Map, Transform)) where Transform.Object: BaseMappable { + let (map, transform) = right + if map.mappingType == .fromJSON && map.isKeyPresent, let original2DArray = map.currentValue as? [[AnyObject]] { + let transformed2DArray = original2DArray.flatMap { values in + fromJSONArrayWithTransform(values as AnyObject?, transform: transform) + } + FromJSON.optionalBasicType(&left, object: transformed2DArray) + } else if map.mappingType == .toJSON { + left >>> right + } +} + +// MARK:- Set of Mappable objects with a transform - Set + +/// Set of Mappable objects with transform +public func <- (left: inout Set, right: (Map, Transform)) where Transform.Object: Hashable & BaseMappable { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + if let transformedValues = fromJSONArrayWithTransform(map.currentValue, transform: transform) { + FromJSON.basicType(&left, object: Set(transformedValues)) + } + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Set, right: (Map, Transform)) where Transform.Object: Hashable & BaseMappable { + let (map, transform) = right + if map.mappingType == .toJSON { + let transformedValues = toJSONArrayWithTransform(Array(left), transform: transform) + ToJSON.optionalBasicType(transformedValues, map: map) + } +} + + +/// Optional Set of Mappable objects with transform +public func <- (left: inout Set?, right: (Map, Transform)) where Transform.Object: Hashable & BaseMappable { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + if let transformedValues = fromJSONArrayWithTransform(map.currentValue, transform: transform) { + FromJSON.basicType(&left, object: Set(transformedValues)) + } + case .toJSON: + left >>> right + default: () + } +} + +public func >>> (left: Set?, right: (Map, Transform)) where Transform.Object: Hashable & BaseMappable { + let (map, transform) = right + if map.mappingType == .toJSON { + if let values = left { + let transformedValues = toJSONArrayWithTransform(Array(values), transform: transform) + ToJSON.optionalBasicType(transformedValues, map: map) + } + } +} + + +/// Implicitly unwrapped Optional set of Mappable objects with transform +public func <- (left: inout Set!, right: (Map, Transform)) where Transform.Object: Hashable & BaseMappable { + let (map, transform) = right + switch map.mappingType { + case .fromJSON where map.isKeyPresent: + if let transformedValues = fromJSONArrayWithTransform(map.currentValue, transform: transform) { + FromJSON.basicType(&left, object: Set(transformedValues)) + } + case .toJSON: + left >>> right + default: () + } +} + + +private func fromJSONArrayWithTransform(_ input: Any?, transform: Transform) -> [Transform.Object]? { + if let values = input as? [AnyObject] { + return values.flatMap { value in + return transform.transformFromJSON(value) + } + } else { + return nil + } +} + +private func fromJSONDictionaryWithTransform(_ input: Any?, transform: Transform) -> [String: Transform.Object]? { + if let values = input as? [String: AnyObject] { + return values.filterMap { value in + return transform.transformFromJSON(value) + } + } else { + return nil + } +} + +private func toJSONArrayWithTransform(_ input: [Transform.Object]?, transform: Transform) -> [Transform.JSON]? { + return input?.flatMap { value in + return transform.transformToJSON(value) + } +} + +private func toJSONDictionaryWithTransform(_ input: [String: Transform.Object]?, transform: Transform) -> [String: Transform.JSON]? { + return input?.filterMap { value in + return transform.transformToJSON(value) + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/ToJSON.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/ToJSON.swift new file mode 100644 index 0000000..cdb2960 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Core/ToJSON.swift @@ -0,0 +1,176 @@ +// +// ToJSON.swift +// ObjectMapper +// +// Created by Tristan Himmelman on 2014-10-13. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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 class Foundation.NSNumber + +private func setValue(_ value: Any, map: Map) { + setValue(value, key: map.currentKey!, checkForNestedKeys: map.keyIsNested, dictionary: &map.JSON) +} + +private func setValue(_ value: Any, key: String, checkForNestedKeys: Bool, dictionary: inout [String : Any]) { + if checkForNestedKeys { + let keyComponents = ArraySlice(key.characters.split { $0 == "." }) + setValue(value, forKeyPathComponents: keyComponents, dictionary: &dictionary) + } else { + dictionary[key] = value + } +} + +private func setValue(_ value: Any, forKeyPathComponents components: ArraySlice, dictionary: inout [String : Any]) { + if components.isEmpty { + return + } + + let head = components.first! + + if components.count == 1 { + dictionary[String(head)] = value + } else { + var child = dictionary[String(head)] as? [String : Any] + if child == nil { + child = [:] + } + + let tail = components.dropFirst() + setValue(value, forKeyPathComponents: tail, dictionary: &child!) + + dictionary[String(head)] = child + } +} + +internal final class ToJSON { + + class func basicType(_ field: N, map: Map) { + if let x = field as Any? , false + || x is NSNumber // Basic types + || x is Bool + || x is Int + || x is Double + || x is Float + || x is String + || x is Array // Arrays + || x is Array + || x is Array + || x is Array + || x is Array + || x is Array + || x is Array + || x is Array> + || x is Dictionary // Dictionaries + || x is Dictionary + || x is Dictionary + || x is Dictionary + || x is Dictionary + || x is Dictionary + || x is Dictionary + { + setValue(x, map: map) + } + } + + class func optionalBasicType(_ field: N?, map: Map) { + if let field = field { + basicType(field, map: map) + } + } + + class func object(_ field: N, map: Map) { + if let result = Mapper(context: map.context).toJSON(field) as Any? { + setValue(result, map: map) + } + } + + class func optionalObject(_ field: N?, map: Map) { + if let field = field { + object(field, map: map) + } + } + + class func objectArray(_ field: Array, map: Map) { + let JSONObjects = Mapper(context: map.context).toJSONArray(field) + + setValue(JSONObjects, map: map) + } + + class func optionalObjectArray(_ field: Array?, map: Map) { + if let field = field { + objectArray(field, map: map) + } + } + + class func twoDimensionalObjectArray(_ field: Array>, map: Map) { + var array = [[[String: Any]]]() + for innerArray in field { + let JSONObjects = Mapper(context: map.context).toJSONArray(innerArray) + array.append(JSONObjects) + } + setValue(array, map: map) + } + + class func optionalTwoDimensionalObjectArray(_ field: Array>?, map: Map) { + if let field = field { + twoDimensionalObjectArray(field, map: map) + } + } + + class func objectSet(_ field: Set, map: Map) where N: Hashable { + let JSONObjects = Mapper(context: map.context).toJSONSet(field) + + setValue(JSONObjects, map: map) + } + + class func optionalObjectSet(_ field: Set?, map: Map) where N: Hashable { + if let field = field { + objectSet(field, map: map) + } + } + + class func objectDictionary(_ field: Dictionary, map: Map) { + let JSONObjects = Mapper(context: map.context).toJSONDictionary(field) + + setValue(JSONObjects, map: map) + } + + class func optionalObjectDictionary(_ field: Dictionary?, map: Map) { + if let field = field { + objectDictionary(field, map: map) + } + } + + class func objectDictionaryOfArrays(_ field: Dictionary, map: Map) { + let JSONObjects = Mapper(context: map.context).toJSONDictionaryOfArrays(field) + + setValue(JSONObjects, map: map) + } + + class func optionalObjectDictionaryOfArrays(_ field: Dictionary?, map: Map) { + if let field = field { + objectDictionaryOfArrays(field, map: map) + } + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/CustomDateFormatTransform.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/CustomDateFormatTransform.swift new file mode 100644 index 0000000..3cd5c59 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/CustomDateFormatTransform.swift @@ -0,0 +1,40 @@ +// +// CustomDateFormatTransform.swift +// ObjectMapper +// +// Created by Dan McCracken on 3/8/15. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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 + +open class CustomDateFormatTransform: DateFormatterTransform { + + public init(formatString: String) { + let formatter = DateFormatter() + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.dateFormat = formatString + + super.init(dateFormatter: formatter) + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DataTransform.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DataTransform.swift new file mode 100644 index 0000000..d96f3d6 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DataTransform.swift @@ -0,0 +1,50 @@ +// +// DataTransform.swift +// ObjectMapper +// +// Created by Yagrushkin, Evgeny on 8/30/16. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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 + +open class DataTransform: TransformType { + public typealias Object = Data + public typealias JSON = String + + public init() {} + + open func transformFromJSON(_ value: Any?) -> Data? { + guard let string = value as? String else{ + return nil + } + return Data(base64Encoded: string) + } + + open func transformToJSON(_ value: Data?) -> String? { + guard let data = value else{ + return nil + } + return data.base64EncodedString() + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DateFormatterTransform.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DateFormatterTransform.swift new file mode 100644 index 0000000..77c6e2b --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DateFormatterTransform.swift @@ -0,0 +1,54 @@ +// +// DateFormatterTransform.swift +// ObjectMapper +// +// Created by Tristan Himmelman on 2015-03-09. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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 + +open class DateFormatterTransform: TransformType { + public typealias Object = Date + public typealias JSON = String + + let dateFormatter: DateFormatter + + public init(dateFormatter: DateFormatter) { + self.dateFormatter = dateFormatter + } + + open func transformFromJSON(_ value: Any?) -> Date? { + if let dateString = value as? String { + return dateFormatter.date(from: dateString) + } + return nil + } + + open func transformToJSON(_ value: Date?) -> String? { + if let date = value { + return dateFormatter.string(from: date) + } + return nil + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DateTransform.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DateTransform.swift new file mode 100644 index 0000000..2c175cb --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DateTransform.swift @@ -0,0 +1,55 @@ +// +// DateTransform.swift +// ObjectMapper +// +// Created by Tristan Himmelman on 2014-10-13. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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 + +open class DateTransform: TransformType { + public typealias Object = Date + public typealias JSON = Double + + public init() {} + + open func transformFromJSON(_ value: Any?) -> Date? { + if let timeInt = value as? Double { + return Date(timeIntervalSince1970: TimeInterval(timeInt)) + } + + if let timeStr = value as? String { + return Date(timeIntervalSince1970: TimeInterval(atof(timeStr))) + } + + return nil + } + + open func transformToJSON(_ value: Date?) -> Double? { + if let date = value { + return Double(date.timeIntervalSince1970) + } + return nil + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DictionaryTransform.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DictionaryTransform.swift new file mode 100644 index 0000000..e7b6ef3 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/DictionaryTransform.swift @@ -0,0 +1,58 @@ +// +// DictionaryTransform.swift +// ObjectMapper +// +// Created by Milen Halachev on 7/20/16. +// Copyright © 2016 hearst. All rights reserved. +// + +import Foundation + +///Transforms [String: AnyObject] <-> [Key: Value] where Key is RawRepresentable as String, Value is Mappable +public struct DictionaryTransform: TransformType where Key: Hashable, Key: RawRepresentable, Key.RawValue == String, Value: Mappable { + + public init() { + + } + + public func transformFromJSON(_ value: Any?) -> [Key: Value]? { + + guard let json = value as? [String: Any] else { + + return nil + } + + let result = json.reduce([:]) { (result, element) -> [Key: Value] in + + guard + let key = Key(rawValue: element.0), + let valueJSON = element.1 as? [String: Any], + let value = Value(JSON: valueJSON) + else { + + return result + } + + var result = result + result[key] = value + return result + } + + return result + } + + public func transformToJSON(_ value: [Key: Value]?) -> Any? { + + let result = value?.reduce([:]) { (result, element) -> [String: Any] in + + let key = element.0.rawValue + let value = element.1.toJSON() + + var result = result + result[key] = value + return result + } + + return result + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/EnumTransform.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/EnumTransform.swift new file mode 100644 index 0000000..43e4ce7 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/EnumTransform.swift @@ -0,0 +1,50 @@ +// +// EnumTransform.swift +// ObjectMapper +// +// Created by Kaan Dedeoglu on 3/20/15. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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 + +open class EnumTransform: TransformType { + public typealias Object = T + public typealias JSON = T.RawValue + + public init() {} + + open func transformFromJSON(_ value: Any?) -> T? { + if let raw = value as? T.RawValue { + return T(rawValue: raw) + } + return nil + } + + open func transformToJSON(_ value: T?) -> T.RawValue? { + if let obj = value { + return obj.rawValue + } + return nil + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/ISO8601DateTransform.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/ISO8601DateTransform.swift new file mode 100644 index 0000000..5a17b73 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/ISO8601DateTransform.swift @@ -0,0 +1,41 @@ +// +// ISO8601DateTransform.swift +// ObjectMapper +// +// Created by Jean-Pierre Mouilleseaux on 21 Nov 2014. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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 + +open class ISO8601DateTransform: DateFormatterTransform { + + public init() { + let formatter = DateFormatter() + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" + + super.init(dateFormatter: formatter) + } + +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/NSDecimalNumberTransform.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/NSDecimalNumberTransform.swift new file mode 100644 index 0000000..3b3ebab --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/NSDecimalNumberTransform.swift @@ -0,0 +1,51 @@ +// +// TransformOf.swift +// ObjectMapper +// +// Created by Tristan Himmelman on 8/22/16. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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 + +open class NSDecimalNumberTransform: TransformType { + public typealias Object = NSDecimalNumber + public typealias JSON = String + + public init() {} + + open func transformFromJSON(_ value: Any?) -> NSDecimalNumber? { + if let string = value as? String { + return NSDecimalNumber(string: string) + } + if let double = value as? Double { + return NSDecimalNumber(value: double) + } + return nil + } + + open func transformToJSON(_ value: NSDecimalNumber?) -> String? { + guard let value = value else { return nil } + return value.description + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/TransformOf.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/TransformOf.swift new file mode 100644 index 0000000..97056c6 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/TransformOf.swift @@ -0,0 +1,48 @@ +// +// TransformOf.swift +// ObjectMapper +// +// Created by Syo Ikeda on 1/23/15. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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. + +open class TransformOf: TransformType { + public typealias Object = ObjectType + public typealias JSON = JSONType + + private let fromJSON: (JSONType?) -> ObjectType? + private let toJSON: (ObjectType?) -> JSONType? + + public init(fromJSON: @escaping(JSONType?) -> ObjectType?, toJSON: @escaping(ObjectType?) -> JSONType?) { + self.fromJSON = fromJSON + self.toJSON = toJSON + } + + open func transformFromJSON(_ value: Any?) -> ObjectType? { + return fromJSON(value as? JSONType) + } + + open func transformToJSON(_ value: ObjectType?) -> JSONType? { + return toJSON(value) + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/TransformType.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/TransformType.swift new file mode 100644 index 0000000..61578c3 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/TransformType.swift @@ -0,0 +1,35 @@ +// +// TransformType.swift +// ObjectMapper +// +// Created by Syo Ikeda on 2/4/15. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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. + +public protocol TransformType { + associatedtype Object + associatedtype JSON + + func transformFromJSON(_ value: Any?) -> Object? + func transformToJSON(_ value: Object?) -> JSON? +} diff --git a/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/URLTransform.swift b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/URLTransform.swift new file mode 100644 index 0000000..4ef109f --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/ObjectMapper/Transforms/URLTransform.swift @@ -0,0 +1,65 @@ +// +// URLTransform.swift +// ObjectMapper +// +// Created by Tristan Himmelman on 2014-10-27. +// +// The MIT License (MIT) +// +// Copyright (c) 2014-2016 Hearst +// +// 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 + +open class URLTransform: TransformType { + public typealias Object = URL + public typealias JSON = String + private let shouldEncodeURLString: Bool + + /** + Initializes the URLTransform with an option to encode URL strings before converting them to an NSURL + - parameter shouldEncodeUrlString: when true (the default) the string is encoded before passing + to `NSURL(string:)` + - returns: an initialized transformer + */ + public init(shouldEncodeURLString: Bool = true) { + self.shouldEncodeURLString = shouldEncodeURLString + } + + open func transformFromJSON(_ value: Any?) -> URL? { + guard let URLString = value as? String else { return nil } + + if !shouldEncodeURLString { + return URL(string: URLString) + } + + guard let escapedURLString = URLString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed) else { + return nil + } + return URL(string: escapedURLString) + } + + open func transformToJSON(_ value: URL?) -> String? { + if let URL = value { + return URL.absoluteString + } + return nil + } +} diff --git a/iMessagesExample/Pods/ObjectMapper/README.md b/iMessagesExample/Pods/ObjectMapper/README.md new file mode 100644 index 0000000..89c24a7 --- /dev/null +++ b/iMessagesExample/Pods/ObjectMapper/README.md @@ -0,0 +1,472 @@ +ObjectMapper +============ +[![CocoaPods](https://img.shields.io/cocoapods/v/ObjectMapper.svg)](https://github.com/Hearst-DD/ObjectMapper) +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) +[![Build Status](https://travis-ci.org/Hearst-DD/ObjectMapper.svg?branch=master)](https://travis-ci.org/Hearst-DD/ObjectMapper) + +ObjectMapper is a framework written in Swift that makes it easy for you to convert your model objects (classes and structs) to and from JSON. + +- [Features](#features) +- [The Basics](#the-basics) +- [Mapping Nested Objects](#easy-mapping-of-nested-objects) +- [Custom Transformations](#custom-transforms) +- [Subclassing](#subclasses) +- [Generic Objects](#generic-objects) +- [Mapping Context](#mapping-context) +- [ObjectMapper + Alamofire](#objectmapper--alamofire) +- [ObjectMapper + Realm](#objectmapper--realm) +- [To Do](#to-do) +- [Contributing](#contributing) +- [Installation](#installation) + +# Features: +- Mapping JSON to objects +- Mapping objects to JSON +- Nested Objects (stand alone, in arrays or in dictionaries) +- Custom transformations during mapping +- Struct support +- [Immutable support](#immutablemappable-protocol-beta) (currently in beta) + +# The Basics +To support mapping, a class or struct just needs to implement the ```Mappable``` protocol which includes the following functions: +```swift +init?(map: Map) +mutating func mapping(map: Map) +``` +ObjectMapper uses the ```<-``` operator to define how each member variable maps to and from JSON. + +```swift +class User: Mappable { + var username: String? + var age: Int? + var weight: Double! + var array: [AnyObject]? + var dictionary: [String : AnyObject] = [:] + var bestFriend: User? // Nested User object + var friends: [User]? // Array of Users + var birthday: NSDate? + + required init?(map: Map) { + + } + + // Mappable + func mapping(map: Map) { + username <- map["username"] + age <- map["age"] + weight <- map["weight"] + array <- map["arr"] + dictionary <- map["dict"] + bestFriend <- map["best_friend"] + friends <- map["friends"] + birthday <- (map["birthday"], DateTransform()) + } +} + +struct Temperature: Mappable { + var celsius: Double? + var fahrenheit: Double? + + init?(map: Map) { + + } + + mutating func mapping(map: Map) { + celsius <- map["celsius"] + fahrenheit <- map["fahrenheit"] + } +} +``` + +Once your class implements `Mappable`, ObjectMapper allows you to easily convert to and from JSON. + +Convert a JSON string to a model object: +```swift +let user = User(JSONString: JSONString) +``` + +Convert a model object to a JSON string: +```swift +let JSONString = user.toJSONString(prettyPrint: true) +``` + +Alternatively, the `Mapper.swift` class can also be used to accomplish the above (it also provides extra functionality for other situations): +``` +// Convert JSON String to Model +let user = Mapper().map(JSONString: JSONString) +// Create JSON String from Model +let JSONString = Mapper().toJSONString(user, prettyPrint: true) +``` + +ObjectMapper can map classes composed of the following types: +- `Int` +- `Bool` +- `Double` +- `Float` +- `String` +- `RawRepresentable` (Enums) +- `Array` +- `Dictionary` +- `Object` +- `Array` +- `Array>` +- `Set` +- `Dictionary` +- `Dictionary>` +- Optionals of all the above +- Implicitly Unwrapped Optionals of the above + +## `Mappable` Protocol + +#### `mutating func mapping(map: Map)` +This function is where all mapping definitions should go. When parsing JSON, this function is executed after successful object creation. When generating JSON, it is the only function that is called on the object. + +#### `init?(map: Map)` +This failable initializer is used by ObjectMapper for object creation. It can be used by developers to validate JSON prior to object serialization. Returning nil within the function will prevent the mapping from occuring. You can inspect the JSON stored within the `Map` object to do your validation: +```swift +required init?(map: Map){ + // check if a required "name" property exists within the JSON. + if map.JSONDictionary["name"] == nil { + return nil + } +} +``` + +## `StaticMappable` Protocol +`StaticMappable` is an alternative to `Mappable`. It provides developers with a static function that is used by ObjectMapper for object initialization instead of `init?(map: Map)`. + +Note: `StaticMappable`, like `Mappable`, is a sub protocol of `BaseMappable` which is where the `mapping(map: Map)` function is defined. + +#### `static func objectForMapping(map: Map) -> BaseMappable?` +ObjectMapper uses this function to get objects to use for mapping. Developers should return an instance of an object that conforms to `BaseMappable` in this function. This function can also be used to: +- validate JSON prior to object serialization +- provide an existing cached object to be used for mapping +- return an object of another type (which also conforms to BaseMappable) to be used for mapping. For instance, you may inspect the JSON to infer the type of object that should be used for mapping ([see example](https://github.com/Hearst-DD/ObjectMapper/blob/master/ObjectMapperTests/ClassClusterTests.swift#L62)) + +If you need to implemented ObjectMapper in an extension, you will need to select this protocol instead of `Mappable`. + +## `ImmutableMappable` Protocol (Beta) + +> ⚠️ This feature is currently in Beta. There might be breaking API changes in the future. + +`ImmutableMappable` provides the ability to map immutable properties. This is how `ImmutableMappable` differs from `Mappable`: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ImmutableMappableMappable
Properties
+
+let id: Int
+let name: String?
+
+
+
+var id: Int!
+var name: String?
+
+
JSON -> Model
+
+init(map: Map) throws {
+  id   = try map.value("id")
+  name = try? map.value("name")
+}
+
+
+
+mutating func mapping(map: Map) {
+  id   <- map["id"]
+  name <- map["name"]
+}
+
+
Model -> JSON
+
+mutating func mapping(map: Map) {
+  id   >>> map["id"]
+  name >>> map["name"]
+}
+
+
+
+mutating func mapping(map: Map) {
+  id   <- map["id"]
+  name <- map["name"]
+}
+
+
Initializing
+
+try User(JSONString: JSONString)
+
+
+
+User(JSONString: JSONString)
+
+
+ +#### `init(map: Map) throws` + +This throwable initializer is used to map immutable properties from the given `Map`. Every immutable propertie should be initialized in this initializer. + +This initializer throws an error when: +- `Map` fails to get a value for the given key +- `Map` fails to transform a value using `Transform` + +`ImmutableMappable` uses `Map.value(_:using:)` method to get values from the `Map`. This method should be used with the `try` keyword as it is throwable. `Optional` properties can easily be handled using `try?`. + +```swift +init(map: Map) throws { + name = try map.value("name") // throws an error when it fails + createdAt = try map.value("createdAt", using: DateTransform()) // throws an error when it fails + updatedAt = try? map.value("updatedAt", using: DateTransform()) // optional + posts = (try? map.value("posts")) ?? [] // optional + default value +} +``` + +#### `mutating func mapping(map: Map)` + +This method is where the reverse transform is performed (Model to JSON). Since immutable properties can not be mapped with the `<-` operator, developers have to define the reverse transform using the `>>>` operator. + +```swift +mutating func mapping(map: Map) { + name >>> map["name"] + createdAt >>> (map["createdAt"], DateTransform()) + updatedAt >>> (map["updatedAt"], DateTransform()) + posts >>> map["posts"] +} +``` + + +# Easy Mapping of Nested Objects +ObjectMapper supports dot notation within keys for easy mapping of nested objects. Given the following JSON String: +```json +"distance" : { + "text" : "102 ft", + "value" : 31 +} +``` +You can access the nested objects as follows: +```swift +func mapping(map: Map) { + distance <- map["distance.value"] +} +``` +Nested keys also support accessing values from an array. Given a JSON response with an array of distances, the value could be accessed as follows: +``` +distance <- map["distances.0.value"] +``` +If you have a key that contains `.`, you can individually disable the above feature as follows: +```swift +func mapping(map: Map) { + identifier <- map["app.identifier", nested: false] +} +``` + +# Custom Transforms +ObjectMapper also supports custom transforms that convert values during the mapping process. To use a transform, simply create a tuple with ```map["field_name"]``` and the transform of your choice on the right side of the ```<-``` operator: +```swift +birthday <- (map["birthday"], DateTransform()) +``` +The above transform will convert the JSON Int value to an NSDate when reading JSON and will convert the NSDate to an Int when converting objects to JSON. + +You can easily create your own custom transforms by adopting and implementing the methods in the ```TransformType``` protocol: +```swift +public protocol TransformType { + associatedtype Object + associatedtype JSON + + func transformFromJSON(_ value: Any?) -> Object? + func transformToJSON(_ value: Object?) -> JSON? +} +``` + +### TransformOf +In a lot of situations you can use the built-in transform class ```TransformOf``` to quickly perform a desired transformation. ```TransformOf``` is initialized with two types and two closures. The types define what the transform is converting to and from and the closures perform the actual transformation. + +For example, if you want to transform a JSON String value to an Int you could use ```TransformOf``` as follows: +```swift +let transform = TransformOf(fromJSON: { (value: String?) -> Int? in + // transform value from String? to Int? + return Int(value!) +}, toJSON: { (value: Int?) -> String? in + // transform value from Int? to String? + if let value = value { + return String(value) + } + return nil +}) + +id <- (map["id"], transform) +``` +Here is a more condensed version of the above: +```swift +id <- (map["id"], TransformOf(fromJSON: { Int($0!) }, toJSON: { $0.map { String($0) } })) +``` + +# Subclasses + +Classes that implement the ```Mappable``` protocol can easily be subclassed. When subclassing mappable classes, follow the structure below: + +```swift +class Base: Mappable { + var base: String? + + required init?(map: Map) { + + } + + func mapping(map: Map) { + base <- map["base"] + } +} + +class Subclass: Base { + var sub: String? + + required init?(map: Map) { + super.init(map) + } + + override func mapping(map: Map) { + super.mapping(map) + + sub <- map["sub"] + } +} +``` + +Make sure your subclass implemenation calls the right initializers and mapping functions to also apply the mappings from your superclass. + +# Generic Objects + +ObjectMapper can handle classes with generic types as long as the generic type also conforms to `Mappable`. See the following example: +```swift +class Result: Mappable { + var result: T? + + required init?(map: Map){ + + } + + func mapping(map: Map) { + result <- map["result"] + } +} + +let result = Mapper>().map(JSON) +``` + +# Mapping Context + +The `Map` object which is passed around during mapping, has an optional `MapContext` object that is available for developers to use if they need to pass information around during mapping. + +To take advantage of this feature, simple create an object that implements `MapContext` (which is an empty protocol) and pass it into `Mapper` during initialization. +```swift +struct Context: MapContext { + var importantMappingInfo = "Info that I need during mapping" +} + +class User: Mappable { + var name: String? + + required init?(map: Map){ + + } + + func mapping(map: Map){ + if let context = map.context as? Context { + // use context to make decisions about mapping + } + } +} + +let context = Context() +let user = Mapper(context: context).map(JSONString) +``` + +#ObjectMapper + Alamofire + +If you are using [Alamofire](https://github.com/Alamofire/Alamofire) for networking and you want to convert your responses to Swift objects, you can use [AlamofireObjectMapper](https://github.com/tristanhimmelman/AlamofireObjectMapper). It is a simple Alamofire extension that uses ObjectMapper to automatically map JSON response data to Swift objects. + + +#ObjectMapper + Realm + +ObjectMapper and Realm can be used together. Simply follow the class structure below and you will be able to use ObjectMapper to generate your Realm models: + +```swift +class Model: Object, Mappable { + dynamic var name = "" + + required convenience init?(map: Map) { + self.init() + } + + func mapping(map: Map) { + name <- map["name"] + } +} +``` + +If you want to serialize associated RealmObjects, you can use [ObjectMapper+Realm](https://github.com/jakenberg/ObjectMapper-Realm). It is a simple Realm extension that serializes arbitrary JSON into Realm's List class. + +Note: Generating a JSON string of a Realm Object using ObjectMappers' `toJSON` function only works within a Realm write transaction. This is caused because ObjectMapper uses the `inout` flag in its mapping functions (`<-`) which are used both for serializing and deserializing. Realm detects the flag and forces the `toJSON` function to be called within a write block even though the objects are not being modified. + +# To Do +- Improve error handling. Perhaps using `throws` +- Class cluster documentation + +# Contributing + +Contributions are very welcome 👍😃. + +Before submitting any pull request, please ensure you have run the included tests and they have passed. If you are including new functionality, please write test cases for it as well. + +# Installation +ObjectMapper can be added to your project using [CocoaPods 0.36 or later](http://blog.cocoapods.org/Pod-Authors-Guide-to-CocoaPods-Frameworks/) by adding the following line to your `Podfile`: + +```ruby +pod 'ObjectMapper', '~> 2.1' +``` + +If you're using [Carthage](https://github.com/Carthage/Carthage) you can add a dependency on ObjectMapper by adding it to your `Cartfile`: +``` +github "Hearst-DD/ObjectMapper" ~> 2.1 +``` + +Otherwise, ObjectMapper can be added as a submodule: + +1. Add ObjectMapper as a [submodule](http://git-scm.com/docs/git-submodule) by opening the terminal, `cd`-ing into your top-level project directory, and entering the command `git submodule add https://github.com/Hearst-DD/ObjectMapper.git` +2. Open the `ObjectMapper` folder, and drag `ObjectMapper.xcodeproj` into the file navigator of your app project. +3. In Xcode, navigate to the target configuration window by clicking on the blue project icon, and selecting the application target under the "Targets" heading in the sidebar. +4. Ensure that the deployment target of `ObjectMapper.framework` matches that of the application target. +5. In the tab bar at the top of that window, open the "Build Phases" panel. +6. Expand the "Target Dependencies" group, and add `ObjectMapper.framework`. +7. Click on the `+` button at the top left of the panel and select "New Copy Files Phase". Rename this new phase to "Copy Frameworks", set the "Destination" to "Frameworks", and add `ObjectMapper.framework`. diff --git a/iMessagesExample/Pods/Pods.xcodeproj/project.pbxproj b/iMessagesExample/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..55169be --- /dev/null +++ b/iMessagesExample/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,771 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1204B669131D7182F03E9FC07217576F /* TransformOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2377D7EB75AF73C34C9149DD71B028DE /* TransformOf.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 30C1D2BFCFBDA52DBCF823F3C17B20DC /* NSDecimalNumberTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = F255AE287F48F1346599F61BFFB5C849 /* NSDecimalNumberTransform.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 48AAA43EAA03D4C1F3295B2098983508 /* Pods-Abstract-MessagesExtension-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B63C429E4CBF13DBA777F335C73D798A /* Pods-Abstract-MessagesExtension-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 504461CD520506E56709C3EFCD299D4D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; + 550993484584C6CEFC84B9B81FA1C044 /* DateTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3B89882F10148C719B4FF88F645FE1D /* DateTransform.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5B102AF44A1DC7D348F9A12245408B2E /* Pods-Abstract-VoteApp-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F4DE9C0D90A49D741DC62767D906BB92 /* Pods-Abstract-VoteApp-dummy.m */; }; + 5E615E95845FFB03B4077A7A4D4B267D /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB647F86DD614D191245B5C0774F0F88 /* Operators.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 796F4733CC2BEB533CB61F5F4FDDEFD0 /* Map.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2225C45B83904842C4A5639EE5CD2E11 /* Map.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 8103462367AD098EC83FD658FE74A9C6 /* FromJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0592CD3C0DDDF0F2750AEEE71863FD62 /* FromJSON.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 8198880F24A6D1896284D105D9738346 /* Mappable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A4A1AE24835DED75ED0F17A35AD34E5 /* Mappable.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 87D1D555CC9328C92570156FB5513410 /* EnumOperators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AD1DD1B77E2997D1B4CE32FE954B264 /* EnumOperators.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 8D7304FC21A3D1BDA63B5C796757DC5F /* ImmutableMappble.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06C1844723E62F105BD023A3C8904F5C /* ImmutableMappble.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9A999095EFD9A8A273D6B9405DC757E2 /* URLTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13C4BBABDCE9964B7879277706C5C0B2 /* URLTransform.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9DC24404AC81888E6D4E6C15EE847D54 /* CustomDateFormatTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9238EE7A07A1934C2D9AA5179899208 /* CustomDateFormatTransform.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A181B3A1537E237C7AABA3E844A1BBED /* Pods-Abstract-VoteApp-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BA7383582CC4B2246E0DB6BC9FAED8A /* Pods-Abstract-VoteApp-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1D8448D03975EF7A5200BA464C662D1 /* ObjectMapper-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 83A42D30987E231B8C88B101602A3E64 /* ObjectMapper-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A7AE6F28787B4DA16A533BA5701AA0AA /* MapError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 943AF28BF6176E469F4F05B02A79B780 /* MapError.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + A9803B03390E23F39164FBD04157487E /* ISO8601DateTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83257AE5D0488CE5E7ABFB6FF515ECF5 /* ISO8601DateTransform.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + AF05FEC025DC7C5F1F36769CAB420628 /* Pods-Abstract-MessagesExtension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D3509097DAF16AC34A1CD1B1844E5C2 /* Pods-Abstract-MessagesExtension-dummy.m */; }; + B8A13CC2976E28A2872F9D895F0142D4 /* EnumTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = B520984678476419587AD0BBC949C87A /* EnumTransform.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + B8BFDCDA0B52C4A77B19ADA363C42B63 /* DateFormatterTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 599F19E2AC99EF530EA1E7CDA4D42F74 /* DateFormatterTransform.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + B94C1138897092367D1F63BF945ECA20 /* DictionaryTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = A70F3BFDCB67778CE026F29F6C50ABEE /* DictionaryTransform.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + BC968E6360A97DE612F4FB0CDEBE1210 /* DataTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F972000BA505F402EDAFD77E75438E4 /* DataTransform.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + D51CD78BCEBA635EC0024576195EA6F7 /* TransformOperators.swift in Sources */ = {isa = PBXBuildFile; fileRef = D02CFDB02A6342CE9365BFF862C83F55 /* TransformOperators.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + DA8483F40A9AFD0E2A57DED7C408E59B /* ToJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0767C2A97ED89BC9AD27AC7B0D6FC755 /* ToJSON.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + E2DEF0F579FA288C6A1478A308478946 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; + E6FBEA1F406E65035E9FA78640D46C13 /* Mapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4724CDADF6C25B310068F27FBDC9BB18 /* Mapper.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + EC12D04994316EE3A4D9396D6809DE8D /* ObjectMapper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2844933DED2A771CDBBF7B445A02DE57 /* ObjectMapper-dummy.m */; }; + EF155D526B5F8AAF9781697205AE5EB0 /* TransformType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A7D4658C6C21A348CB3738C8F281ED3 /* TransformType.swift */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + F9CCFE94F29F32C0BD4780EA5015D729 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 56522D2DDA124DD8A881378EBA98645B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = C8A84485A82D0105AD90775E6388A52B; + remoteInfo = ObjectMapper; + }; + 7E20DF07609719F2D751FA87F11C91BF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = C8A84485A82D0105AD90775E6388A52B; + remoteInfo = ObjectMapper; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 03E504B5A5D07CC7F0F0244475EEC95A /* ObjectMapper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ObjectMapper.xcconfig; sourceTree = ""; }; + 0592CD3C0DDDF0F2750AEEE71863FD62 /* FromJSON.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FromJSON.swift; path = ObjectMapper/Core/FromJSON.swift; sourceTree = ""; }; + 06C1844723E62F105BD023A3C8904F5C /* ImmutableMappble.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImmutableMappble.swift; path = ObjectMapper/Core/ImmutableMappble.swift; sourceTree = ""; }; + 0767C2A97ED89BC9AD27AC7B0D6FC755 /* ToJSON.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToJSON.swift; path = ObjectMapper/Core/ToJSON.swift; sourceTree = ""; }; + 13C4BBABDCE9964B7879277706C5C0B2 /* URLTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = URLTransform.swift; path = ObjectMapper/Transforms/URLTransform.swift; sourceTree = ""; }; + 1D9E8DFECE85C367FF7DD6E34EAC175D /* Pods-Abstract-VoteApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Abstract-VoteApp.debug.xcconfig"; sourceTree = ""; }; + 1F972000BA505F402EDAFD77E75438E4 /* DataTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataTransform.swift; path = ObjectMapper/Transforms/DataTransform.swift; sourceTree = ""; }; + 2225C45B83904842C4A5639EE5CD2E11 /* Map.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Map.swift; path = ObjectMapper/Core/Map.swift; sourceTree = ""; }; + 2377D7EB75AF73C34C9149DD71B028DE /* TransformOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransformOf.swift; path = ObjectMapper/Transforms/TransformOf.swift; sourceTree = ""; }; + 2844933DED2A771CDBBF7B445A02DE57 /* ObjectMapper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ObjectMapper-dummy.m"; sourceTree = ""; }; + 2AD1DD1B77E2997D1B4CE32FE954B264 /* EnumOperators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EnumOperators.swift; path = ObjectMapper/Core/Operators/EnumOperators.swift; sourceTree = ""; }; + 343E35AFA56E408D3E97C7E16283A78D /* ObjectMapper.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ObjectMapper.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 388BCB3DFD580EF9E3E810F455059FE6 /* Pods-Abstract-VoteApp-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Abstract-VoteApp-frameworks.sh"; sourceTree = ""; }; + 3A7D4658C6C21A348CB3738C8F281ED3 /* TransformType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransformType.swift; path = ObjectMapper/Transforms/TransformType.swift; sourceTree = ""; }; + 4188A34EC188FBA708A26C2565CAA73E /* Pods-Abstract-MessagesExtension-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Abstract-MessagesExtension-resources.sh"; sourceTree = ""; }; + 4724CDADF6C25B310068F27FBDC9BB18 /* Mapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Mapper.swift; path = ObjectMapper/Core/Mapper.swift; sourceTree = ""; }; + 5526EFFB160C2D573C904E47961B8DB0 /* ObjectMapper.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = ObjectMapper.modulemap; sourceTree = ""; }; + 599F19E2AC99EF530EA1E7CDA4D42F74 /* DateFormatterTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DateFormatterTransform.swift; path = ObjectMapper/Transforms/DateFormatterTransform.swift; sourceTree = ""; }; + 5A4A1AE24835DED75ED0F17A35AD34E5 /* Mappable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Mappable.swift; path = ObjectMapper/Core/Mappable.swift; sourceTree = ""; }; + 7D3509097DAF16AC34A1CD1B1844E5C2 /* Pods-Abstract-MessagesExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Abstract-MessagesExtension-dummy.m"; sourceTree = ""; }; + 7D82104DCEA7A3FB25CA40941943D49C /* Pods-Abstract-MessagesExtension-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Abstract-MessagesExtension-acknowledgements.plist"; sourceTree = ""; }; + 827973F95E6784D0A9DDAC6EF3BB54B7 /* Pods-Abstract-MessagesExtension-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Abstract-MessagesExtension-acknowledgements.markdown"; sourceTree = ""; }; + 83257AE5D0488CE5E7ABFB6FF515ECF5 /* ISO8601DateTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ISO8601DateTransform.swift; path = ObjectMapper/Transforms/ISO8601DateTransform.swift; sourceTree = ""; }; + 83A42D30987E231B8C88B101602A3E64 /* ObjectMapper-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ObjectMapper-umbrella.h"; sourceTree = ""; }; + 8A82EC9E4CB7DC568BB7F6323A6DA011 /* Pods-Abstract-VoteApp-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Abstract-VoteApp-resources.sh"; sourceTree = ""; }; + 906FD63FE9B5BCBBDB5AACC2C9497D60 /* ObjectMapper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ObjectMapper-prefix.pch"; sourceTree = ""; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 943AF28BF6176E469F4F05B02A79B780 /* MapError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MapError.swift; path = ObjectMapper/Core/MapError.swift; sourceTree = ""; }; + 9ABFA74CE7DFABC215B55A06FB3C018A /* Pods_Abstract_MessagesExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Abstract_MessagesExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9BA7383582CC4B2246E0DB6BC9FAED8A /* Pods-Abstract-VoteApp-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Abstract-VoteApp-umbrella.h"; sourceTree = ""; }; + A70F3BFDCB67778CE026F29F6C50ABEE /* DictionaryTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DictionaryTransform.swift; path = ObjectMapper/Transforms/DictionaryTransform.swift; sourceTree = ""; }; + AB79428FB0F0D90CAA03A9E801A1F0DB /* Pods-Abstract-MessagesExtension-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Abstract-MessagesExtension-frameworks.sh"; sourceTree = ""; }; + ABA1E49FDBB963983E71604D03C720DC /* Pods_Abstract_VoteApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Abstract_VoteApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AE93AF49289D8C05B1AD56BC3BBA79AC /* Pods-Abstract-VoteApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Abstract-VoteApp.release.xcconfig"; sourceTree = ""; }; + B3B89882F10148C719B4FF88F645FE1D /* DateTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DateTransform.swift; path = ObjectMapper/Transforms/DateTransform.swift; sourceTree = ""; }; + B4BDE83CAA43BD3C8E46ACBD261C2BF8 /* Pods-Abstract-VoteApp-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Abstract-VoteApp-acknowledgements.markdown"; sourceTree = ""; }; + B520984678476419587AD0BBC949C87A /* EnumTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EnumTransform.swift; path = ObjectMapper/Transforms/EnumTransform.swift; sourceTree = ""; }; + B635FC2B100DC497A3BA93E3EFCEBE4E /* Pods-Abstract-MessagesExtension.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-Abstract-MessagesExtension.modulemap"; sourceTree = ""; }; + B63C429E4CBF13DBA777F335C73D798A /* Pods-Abstract-MessagesExtension-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Abstract-MessagesExtension-umbrella.h"; sourceTree = ""; }; + C7B88806BEE3C176785231FB2436FCFA /* Pods-Abstract-VoteApp.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-Abstract-VoteApp.modulemap"; sourceTree = ""; }; + CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + D010E2B0F2C6801AECA67867534C98E9 /* Pods-Abstract-MessagesExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Abstract-MessagesExtension.release.xcconfig"; sourceTree = ""; }; + D02CFDB02A6342CE9365BFF862C83F55 /* TransformOperators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransformOperators.swift; path = ObjectMapper/Core/Operators/TransformOperators.swift; sourceTree = ""; }; + D67A9284E8FDB646B3EC24AEA6A7DB6C /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D69BE3B0BE5FFC5B0100A511A2D2B7D4 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + DA71950108282381205A82098602A868 /* Pods-Abstract-VoteApp-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Abstract-VoteApp-acknowledgements.plist"; sourceTree = ""; }; + DB647F86DD614D191245B5C0774F0F88 /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = ObjectMapper/Core/Operators/Operators.swift; sourceTree = ""; }; + DDA0DB363F137870A92177FEFDCB5255 /* Pods-Abstract-MessagesExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Abstract-MessagesExtension.debug.xcconfig"; sourceTree = ""; }; + E01DBDB4C1EB4E35E420B5ED9102E570 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E9238EE7A07A1934C2D9AA5179899208 /* CustomDateFormatTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomDateFormatTransform.swift; path = ObjectMapper/Transforms/CustomDateFormatTransform.swift; sourceTree = ""; }; + F255AE287F48F1346599F61BFFB5C849 /* NSDecimalNumberTransform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSDecimalNumberTransform.swift; path = ObjectMapper/Transforms/NSDecimalNumberTransform.swift; sourceTree = ""; }; + F4DE9C0D90A49D741DC62767D906BB92 /* Pods-Abstract-VoteApp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Abstract-VoteApp-dummy.m"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3FE0EED1980276C3EA98C5BFF53843E7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 504461CD520506E56709C3EFCD299D4D /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB9F97A13F817D86F6662D7B3EC2D1CB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E2DEF0F579FA288C6A1478A308478946 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F38138D919D5CFFD7DF08F523B2DAC8B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F9CCFE94F29F32C0BD4780EA5015D729 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 359BD8C4BD27C7861824A7D28D14A9E2 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + C0344D27C5C8648F6F3E5043994C9567 /* Pods-Abstract-MessagesExtension */, + EA218A2A166B86D107502CAB44256707 /* Pods-Abstract-VoteApp */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + 3DCAB2B7CDE207B3958B6CB957FCC758 /* iOS */ = { + isa = PBXGroup; + children = ( + CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 7DB346D0F39D3F0E887471402A8071AB = { + isa = PBXGroup; + children = ( + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, + 9DBE93B63FBA71038683759AE3BA532C /* Pods */, + D5F9B1D5BDAF7F6C805F1E8D1F184F09 /* Products */, + 359BD8C4BD27C7861824A7D28D14A9E2 /* Targets Support Files */, + ); + sourceTree = ""; + }; + 9DBE93B63FBA71038683759AE3BA532C /* Pods */ = { + isa = PBXGroup; + children = ( + DCE0C65487AD0572AC51D2F1B3D28BD0 /* ObjectMapper */, + ); + name = Pods; + sourceTree = ""; + }; + B8B7593F584DEF5DDB76DB4AA887088F /* Support Files */ = { + isa = PBXGroup; + children = ( + D69BE3B0BE5FFC5B0100A511A2D2B7D4 /* Info.plist */, + 5526EFFB160C2D573C904E47961B8DB0 /* ObjectMapper.modulemap */, + 03E504B5A5D07CC7F0F0244475EEC95A /* ObjectMapper.xcconfig */, + 2844933DED2A771CDBBF7B445A02DE57 /* ObjectMapper-dummy.m */, + 906FD63FE9B5BCBBDB5AACC2C9497D60 /* ObjectMapper-prefix.pch */, + 83A42D30987E231B8C88B101602A3E64 /* ObjectMapper-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/ObjectMapper"; + sourceTree = ""; + }; + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3DCAB2B7CDE207B3958B6CB957FCC758 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + C0344D27C5C8648F6F3E5043994C9567 /* Pods-Abstract-MessagesExtension */ = { + isa = PBXGroup; + children = ( + E01DBDB4C1EB4E35E420B5ED9102E570 /* Info.plist */, + B635FC2B100DC497A3BA93E3EFCEBE4E /* Pods-Abstract-MessagesExtension.modulemap */, + 827973F95E6784D0A9DDAC6EF3BB54B7 /* Pods-Abstract-MessagesExtension-acknowledgements.markdown */, + 7D82104DCEA7A3FB25CA40941943D49C /* Pods-Abstract-MessagesExtension-acknowledgements.plist */, + 7D3509097DAF16AC34A1CD1B1844E5C2 /* Pods-Abstract-MessagesExtension-dummy.m */, + AB79428FB0F0D90CAA03A9E801A1F0DB /* Pods-Abstract-MessagesExtension-frameworks.sh */, + 4188A34EC188FBA708A26C2565CAA73E /* Pods-Abstract-MessagesExtension-resources.sh */, + B63C429E4CBF13DBA777F335C73D798A /* Pods-Abstract-MessagesExtension-umbrella.h */, + DDA0DB363F137870A92177FEFDCB5255 /* Pods-Abstract-MessagesExtension.debug.xcconfig */, + D010E2B0F2C6801AECA67867534C98E9 /* Pods-Abstract-MessagesExtension.release.xcconfig */, + ); + name = "Pods-Abstract-MessagesExtension"; + path = "Target Support Files/Pods-Abstract-MessagesExtension"; + sourceTree = ""; + }; + D5F9B1D5BDAF7F6C805F1E8D1F184F09 /* Products */ = { + isa = PBXGroup; + children = ( + 343E35AFA56E408D3E97C7E16283A78D /* ObjectMapper.framework */, + 9ABFA74CE7DFABC215B55A06FB3C018A /* Pods_Abstract_MessagesExtension.framework */, + ABA1E49FDBB963983E71604D03C720DC /* Pods_Abstract_VoteApp.framework */, + ); + name = Products; + sourceTree = ""; + }; + DCE0C65487AD0572AC51D2F1B3D28BD0 /* ObjectMapper */ = { + isa = PBXGroup; + children = ( + E9238EE7A07A1934C2D9AA5179899208 /* CustomDateFormatTransform.swift */, + 1F972000BA505F402EDAFD77E75438E4 /* DataTransform.swift */, + 599F19E2AC99EF530EA1E7CDA4D42F74 /* DateFormatterTransform.swift */, + B3B89882F10148C719B4FF88F645FE1D /* DateTransform.swift */, + A70F3BFDCB67778CE026F29F6C50ABEE /* DictionaryTransform.swift */, + 2AD1DD1B77E2997D1B4CE32FE954B264 /* EnumOperators.swift */, + B520984678476419587AD0BBC949C87A /* EnumTransform.swift */, + 0592CD3C0DDDF0F2750AEEE71863FD62 /* FromJSON.swift */, + 06C1844723E62F105BD023A3C8904F5C /* ImmutableMappble.swift */, + 83257AE5D0488CE5E7ABFB6FF515ECF5 /* ISO8601DateTransform.swift */, + 2225C45B83904842C4A5639EE5CD2E11 /* Map.swift */, + 943AF28BF6176E469F4F05B02A79B780 /* MapError.swift */, + 5A4A1AE24835DED75ED0F17A35AD34E5 /* Mappable.swift */, + 4724CDADF6C25B310068F27FBDC9BB18 /* Mapper.swift */, + F255AE287F48F1346599F61BFFB5C849 /* NSDecimalNumberTransform.swift */, + DB647F86DD614D191245B5C0774F0F88 /* Operators.swift */, + 0767C2A97ED89BC9AD27AC7B0D6FC755 /* ToJSON.swift */, + 2377D7EB75AF73C34C9149DD71B028DE /* TransformOf.swift */, + D02CFDB02A6342CE9365BFF862C83F55 /* TransformOperators.swift */, + 3A7D4658C6C21A348CB3738C8F281ED3 /* TransformType.swift */, + 13C4BBABDCE9964B7879277706C5C0B2 /* URLTransform.swift */, + B8B7593F584DEF5DDB76DB4AA887088F /* Support Files */, + ); + path = ObjectMapper; + sourceTree = ""; + }; + EA218A2A166B86D107502CAB44256707 /* Pods-Abstract-VoteApp */ = { + isa = PBXGroup; + children = ( + D67A9284E8FDB646B3EC24AEA6A7DB6C /* Info.plist */, + C7B88806BEE3C176785231FB2436FCFA /* Pods-Abstract-VoteApp.modulemap */, + B4BDE83CAA43BD3C8E46ACBD261C2BF8 /* Pods-Abstract-VoteApp-acknowledgements.markdown */, + DA71950108282381205A82098602A868 /* Pods-Abstract-VoteApp-acknowledgements.plist */, + F4DE9C0D90A49D741DC62767D906BB92 /* Pods-Abstract-VoteApp-dummy.m */, + 388BCB3DFD580EF9E3E810F455059FE6 /* Pods-Abstract-VoteApp-frameworks.sh */, + 8A82EC9E4CB7DC568BB7F6323A6DA011 /* Pods-Abstract-VoteApp-resources.sh */, + 9BA7383582CC4B2246E0DB6BC9FAED8A /* Pods-Abstract-VoteApp-umbrella.h */, + 1D9E8DFECE85C367FF7DD6E34EAC175D /* Pods-Abstract-VoteApp.debug.xcconfig */, + AE93AF49289D8C05B1AD56BC3BBA79AC /* Pods-Abstract-VoteApp.release.xcconfig */, + ); + name = "Pods-Abstract-VoteApp"; + path = "Target Support Files/Pods-Abstract-VoteApp"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 464A5120491E8B4F9F6657D569BDD8C5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A181B3A1537E237C7AABA3E844A1BBED /* Pods-Abstract-VoteApp-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B9CDA7E708278D9DBA6BC2313E3ED6EC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 48AAA43EAA03D4C1F3295B2098983508 /* Pods-Abstract-MessagesExtension-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F77A7511AE66E6B363582E21E0E1D5A3 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A1D8448D03975EF7A5200BA464C662D1 /* ObjectMapper-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 21AAB2416AD09F93261537454BD30EE5 /* Pods-Abstract-MessagesExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 131AA4F08128D2F2D8DFF9C49949DBC2 /* Build configuration list for PBXNativeTarget "Pods-Abstract-MessagesExtension" */; + buildPhases = ( + 129D4DA4AA9C2EC5C4A6FE0AD89D30CF /* Sources */, + 3FE0EED1980276C3EA98C5BFF53843E7 /* Frameworks */, + B9CDA7E708278D9DBA6BC2313E3ED6EC /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 98EFDF01F9717FBCBA7A65297E7A1BBD /* PBXTargetDependency */, + ); + name = "Pods-Abstract-MessagesExtension"; + productName = "Pods-Abstract-MessagesExtension"; + productReference = 9ABFA74CE7DFABC215B55A06FB3C018A /* Pods_Abstract_MessagesExtension.framework */; + productType = "com.apple.product-type.framework"; + }; + A29AA3D3BD24E11584BE810C196BB956 /* Pods-Abstract-VoteApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = A346ADEBD8B0868A0A09A83FBEB6B978 /* Build configuration list for PBXNativeTarget "Pods-Abstract-VoteApp" */; + buildPhases = ( + BE210C818CD85CE2071E553D4E533FC0 /* Sources */, + F38138D919D5CFFD7DF08F523B2DAC8B /* Frameworks */, + 464A5120491E8B4F9F6657D569BDD8C5 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 8AD4AE8F95F33147BB41389287D46B0C /* PBXTargetDependency */, + ); + name = "Pods-Abstract-VoteApp"; + productName = "Pods-Abstract-VoteApp"; + productReference = ABA1E49FDBB963983E71604D03C720DC /* Pods_Abstract_VoteApp.framework */; + productType = "com.apple.product-type.framework"; + }; + C8A84485A82D0105AD90775E6388A52B /* ObjectMapper */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7F19C2F79017BBC55D4555B43F8BAF66 /* Build configuration list for PBXNativeTarget "ObjectMapper" */; + buildPhases = ( + 892429104F3287776EB4B4C5AD9AF356 /* Sources */, + EB9F97A13F817D86F6662D7B3EC2D1CB /* Frameworks */, + F77A7511AE66E6B363582E21E0E1D5A3 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ObjectMapper; + productName = ObjectMapper; + productReference = 343E35AFA56E408D3E97C7E16283A78D /* ObjectMapper.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0730; + LastUpgradeCheck = 0700; + }; + buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 7DB346D0F39D3F0E887471402A8071AB; + productRefGroup = D5F9B1D5BDAF7F6C805F1E8D1F184F09 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + C8A84485A82D0105AD90775E6388A52B /* ObjectMapper */, + 21AAB2416AD09F93261537454BD30EE5 /* Pods-Abstract-MessagesExtension */, + A29AA3D3BD24E11584BE810C196BB956 /* Pods-Abstract-VoteApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 129D4DA4AA9C2EC5C4A6FE0AD89D30CF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AF05FEC025DC7C5F1F36769CAB420628 /* Pods-Abstract-MessagesExtension-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 892429104F3287776EB4B4C5AD9AF356 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9DC24404AC81888E6D4E6C15EE847D54 /* CustomDateFormatTransform.swift in Sources */, + BC968E6360A97DE612F4FB0CDEBE1210 /* DataTransform.swift in Sources */, + B8BFDCDA0B52C4A77B19ADA363C42B63 /* DateFormatterTransform.swift in Sources */, + 550993484584C6CEFC84B9B81FA1C044 /* DateTransform.swift in Sources */, + B94C1138897092367D1F63BF945ECA20 /* DictionaryTransform.swift in Sources */, + 87D1D555CC9328C92570156FB5513410 /* EnumOperators.swift in Sources */, + B8A13CC2976E28A2872F9D895F0142D4 /* EnumTransform.swift in Sources */, + 8103462367AD098EC83FD658FE74A9C6 /* FromJSON.swift in Sources */, + 8D7304FC21A3D1BDA63B5C796757DC5F /* ImmutableMappble.swift in Sources */, + A9803B03390E23F39164FBD04157487E /* ISO8601DateTransform.swift in Sources */, + 796F4733CC2BEB533CB61F5F4FDDEFD0 /* Map.swift in Sources */, + A7AE6F28787B4DA16A533BA5701AA0AA /* MapError.swift in Sources */, + 8198880F24A6D1896284D105D9738346 /* Mappable.swift in Sources */, + E6FBEA1F406E65035E9FA78640D46C13 /* Mapper.swift in Sources */, + 30C1D2BFCFBDA52DBCF823F3C17B20DC /* NSDecimalNumberTransform.swift in Sources */, + EC12D04994316EE3A4D9396D6809DE8D /* ObjectMapper-dummy.m in Sources */, + 5E615E95845FFB03B4077A7A4D4B267D /* Operators.swift in Sources */, + DA8483F40A9AFD0E2A57DED7C408E59B /* ToJSON.swift in Sources */, + 1204B669131D7182F03E9FC07217576F /* TransformOf.swift in Sources */, + D51CD78BCEBA635EC0024576195EA6F7 /* TransformOperators.swift in Sources */, + EF155D526B5F8AAF9781697205AE5EB0 /* TransformType.swift in Sources */, + 9A999095EFD9A8A273D6B9405DC757E2 /* URLTransform.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BE210C818CD85CE2071E553D4E533FC0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5B102AF44A1DC7D348F9A12245408B2E /* Pods-Abstract-VoteApp-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 8AD4AE8F95F33147BB41389287D46B0C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ObjectMapper; + target = C8A84485A82D0105AD90775E6388A52B /* ObjectMapper */; + targetProxy = 7E20DF07609719F2D751FA87F11C91BF /* PBXContainerItemProxy */; + }; + 98EFDF01F9717FBCBA7A65297E7A1BBD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ObjectMapper; + target = C8A84485A82D0105AD90775E6388A52B /* ObjectMapper */; + targetProxy = 56522D2DDA124DD8A881378EBA98645B /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 034014829C1E4434983CF3A690C12017 /* Debug */ = { + isa = XCBuildConfiguration; + 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; + 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 = 9.0; + ONLY_ACTIVE_ARCH = YES; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + 27B86B511D96E96740BF0DD3EC4EED1F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1D9E8DFECE85C367FF7DD6E34EAC175D /* Pods-Abstract-VoteApp.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + 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-Abstract-VoteApp/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_Abstract_VoteApp; + 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 = ""; + }; + name = Debug; + }; + 27B86F2DEB8AE9DEE9804A5158F7DED1 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AE93AF49289D8C05B1AD56BC3BBA79AC /* Pods-Abstract-VoteApp.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + 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-Abstract-VoteApp/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_Abstract_VoteApp; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 2AC5D0E5809050B3EF62D07967D37611 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D010E2B0F2C6801AECA67867534C98E9 /* Pods-Abstract-MessagesExtension.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + 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-Abstract-MessagesExtension/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_Abstract_MessagesExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 64D9F9B0D8CDDE1BFD3F869733CE8850 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 03E504B5A5D07CC7F0F0244475EEC95A /* ObjectMapper.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + 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/ObjectMapper/ObjectMapper-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ObjectMapper/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/ObjectMapper/ObjectMapper.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = ObjectMapper; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + C7E474A03CAE21F1CB6046E7344C59BD /* Release */ = { + isa = XCBuildConfiguration; + 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; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + 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 = 9.0; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + D4170B59540162251AB7CD6082A1A9C5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DDA0DB363F137870A92177FEFDCB5255 /* Pods-Abstract-MessagesExtension.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + 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-Abstract-MessagesExtension/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_Abstract_MessagesExtension; + 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 = ""; + }; + name = Debug; + }; + D4B7C6AD29A2965C892D868D30CE9E1F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 03E504B5A5D07CC7F0F0244475EEC95A /* ObjectMapper.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + 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/ObjectMapper/ObjectMapper-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ObjectMapper/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/ObjectMapper/ObjectMapper.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = ObjectMapper; + 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 = ""; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 131AA4F08128D2F2D8DFF9C49949DBC2 /* Build configuration list for PBXNativeTarget "Pods-Abstract-MessagesExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D4170B59540162251AB7CD6082A1A9C5 /* Debug */, + 2AC5D0E5809050B3EF62D07967D37611 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 034014829C1E4434983CF3A690C12017 /* Debug */, + C7E474A03CAE21F1CB6046E7344C59BD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7F19C2F79017BBC55D4555B43F8BAF66 /* Build configuration list for PBXNativeTarget "ObjectMapper" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D4B7C6AD29A2965C892D868D30CE9E1F /* Debug */, + 64D9F9B0D8CDDE1BFD3F869733CE8850 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A346ADEBD8B0868A0A09A83FBEB6B978 /* Build configuration list for PBXNativeTarget "Pods-Abstract-VoteApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 27B86B511D96E96740BF0DD3EC4EED1F /* Debug */, + 27B86F2DEB8AE9DEE9804A5158F7DED1 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; +} diff --git a/iMessagesExample/Pods/Target Support Files/ObjectMapper/Info.plist b/iMessagesExample/Pods/Target Support Files/ObjectMapper/Info.plist new file mode 100644 index 0000000..7f71fff --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/ObjectMapper/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper-dummy.m b/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper-dummy.m new file mode 100644 index 0000000..7033cce --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_ObjectMapper : NSObject +@end +@implementation PodsDummy_ObjectMapper +@end diff --git a/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper-prefix.pch b/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import +#endif + diff --git a/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper-umbrella.h b/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper-umbrella.h new file mode 100644 index 0000000..88f99d1 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double ObjectMapperVersionNumber; +FOUNDATION_EXPORT const unsigned char ObjectMapperVersionString[]; + diff --git a/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper.modulemap b/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper.modulemap new file mode 100644 index 0000000..539c248 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper.modulemap @@ -0,0 +1,6 @@ +framework module ObjectMapper { + umbrella header "ObjectMapper-umbrella.h" + + export * + module * { export * } +} diff --git a/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper.xcconfig b/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper.xcconfig new file mode 100644 index 0000000..f9a1958 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/ObjectMapper/ObjectMapper.xcconfig @@ -0,0 +1,10 @@ +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/ObjectMapper +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +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/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Info.plist b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-acknowledgements.markdown b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-acknowledgements.markdown new file mode 100644 index 0000000..2cf919b --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-acknowledgements.markdown @@ -0,0 +1,15 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## ObjectMapper + +The MIT License (MIT) +Copyright (c) 2014 Hearst + +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/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-acknowledgements.plist b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-acknowledgements.plist new file mode 100644 index 0000000..9d82a00 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-acknowledgements.plist @@ -0,0 +1,45 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) +Copyright (c) 2014 Hearst + +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. + + Title + ObjectMapper + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-dummy.m b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-dummy.m new file mode 100644 index 0000000..85ba944 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_Abstract_MessagesExtension : NSObject +@end +@implementation PodsDummy_Pods_Abstract_MessagesExtension +@end diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-frameworks.sh b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-frameworks.sh new file mode 100755 index 0000000..e6738ad --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-frameworks.sh @@ -0,0 +1,91 @@ +#!/bin/sh +set -e + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + 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}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # 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]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# 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 + 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" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current file + archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + stripped="" + for arch in $archs; do + if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "$BUILT_PRODUCTS_DIR/ObjectMapper/ObjectMapper.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "$BUILT_PRODUCTS_DIR/ObjectMapper/ObjectMapper.framework" +fi diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-resources.sh b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-resources.sh new file mode 100755 index 0000000..0a15615 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-resources.sh @@ -0,0 +1,102 @@ +#!/bin/sh +set -e + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + +realpath() { + DIRECTORY="$(cd "${1%/*}" && pwd)" + FILENAME="${1##*/}" + echo "$DIRECTORY/$FILENAME" +} + +install_resource() +{ + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.framework) + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE=$(realpath "$RESOURCE_PATH") + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + *) + echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +then + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-umbrella.h b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-umbrella.h new file mode 100644 index 0000000..80ba0c4 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double Pods_Abstract_MessagesExtensionVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_Abstract_MessagesExtensionVersionString[]; + diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.debug.xcconfig b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.debug.xcconfig new file mode 100644 index 0000000..14c2674 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.debug.xcconfig @@ -0,0 +1,10 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ObjectMapper" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjectMapper/ObjectMapper.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "ObjectMapper" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.modulemap b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.modulemap new file mode 100644 index 0000000..0ca9ee3 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.modulemap @@ -0,0 +1,6 @@ +framework module Pods_Abstract_MessagesExtension { + umbrella header "Pods-Abstract-MessagesExtension-umbrella.h" + + export * + module * { export * } +} diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.release.xcconfig b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.release.xcconfig new file mode 100644 index 0000000..14c2674 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.release.xcconfig @@ -0,0 +1,10 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ObjectMapper" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjectMapper/ObjectMapper.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "ObjectMapper" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Info.plist b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-acknowledgements.markdown b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-acknowledgements.markdown new file mode 100644 index 0000000..2cf919b --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-acknowledgements.markdown @@ -0,0 +1,15 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## ObjectMapper + +The MIT License (MIT) +Copyright (c) 2014 Hearst + +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/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-acknowledgements.plist b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-acknowledgements.plist new file mode 100644 index 0000000..9d82a00 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-acknowledgements.plist @@ -0,0 +1,45 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) +Copyright (c) 2014 Hearst + +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. + + Title + ObjectMapper + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-dummy.m b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-dummy.m new file mode 100644 index 0000000..abe2ff1 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_Abstract_VoteApp : NSObject +@end +@implementation PodsDummy_Pods_Abstract_VoteApp +@end diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-frameworks.sh b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-frameworks.sh new file mode 100755 index 0000000..e6738ad --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-frameworks.sh @@ -0,0 +1,91 @@ +#!/bin/sh +set -e + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + 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}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # 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]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# 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 + 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" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current file + archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + stripped="" + for arch in $archs; do + if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "$BUILT_PRODUCTS_DIR/ObjectMapper/ObjectMapper.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "$BUILT_PRODUCTS_DIR/ObjectMapper/ObjectMapper.framework" +fi diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-resources.sh b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-resources.sh new file mode 100755 index 0000000..0a15615 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-resources.sh @@ -0,0 +1,102 @@ +#!/bin/sh +set -e + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + +realpath() { + DIRECTORY="$(cd "${1%/*}" && pwd)" + FILENAME="${1##*/}" + echo "$DIRECTORY/$FILENAME" +} + +install_resource() +{ + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.framework) + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE=$(realpath "$RESOURCE_PATH") + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + *) + echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +then + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-umbrella.h b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-umbrella.h new file mode 100644 index 0000000..06f7b06 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double Pods_Abstract_VoteAppVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_Abstract_VoteAppVersionString[]; + diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.debug.xcconfig b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.debug.xcconfig new file mode 100644 index 0000000..14c2674 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.debug.xcconfig @@ -0,0 +1,10 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ObjectMapper" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjectMapper/ObjectMapper.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "ObjectMapper" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.modulemap b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.modulemap new file mode 100644 index 0000000..ab88213 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.modulemap @@ -0,0 +1,6 @@ +framework module Pods_Abstract_VoteApp { + umbrella header "Pods-Abstract-VoteApp-umbrella.h" + + export * + module * { export * } +} diff --git a/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.release.xcconfig b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.release.xcconfig new file mode 100644 index 0000000..14c2674 --- /dev/null +++ b/iMessagesExample/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.release.xcconfig @@ -0,0 +1,10 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ObjectMapper" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ObjectMapper/ObjectMapper.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "ObjectMapper" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/iMessagesExample/VoteApp.xcodeproj/project.pbxproj b/iMessagesExample/VoteApp.xcodeproj/project.pbxproj new file mode 100644 index 0000000..1234b5b --- /dev/null +++ b/iMessagesExample/VoteApp.xcodeproj/project.pbxproj @@ -0,0 +1,557 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 3DF44B274E82324DE497DF78 /* Pods_Abstract_VoteApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 359D4F28F0B8BCE76DDC1803 /* Pods_Abstract_VoteApp.framework */; }; + DC5635A91DCE297300E4840B /* PollEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC5635A81DCE297300E4840B /* PollEntity.swift */; }; + DCB5F9F01DC8C70F0030FC43 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DCB5F9EF1DC8C70F0030FC43 /* Assets.xcassets */; }; + DCB5F9F71DC8C70F0030FC43 /* MessagesExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = DCB5F9F61DC8C70F0030FC43 /* MessagesExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + DCB5F9FC1DC8C70F0030FC43 /* Messages.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DCB5F9FB1DC8C70F0030FC43 /* Messages.framework */; }; + DCB5F9FF1DC8C70F0030FC43 /* MessagesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCB5F9FE1DC8C70F0030FC43 /* MessagesViewController.swift */; }; + DCB5FA021DC8C70F0030FC43 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DCB5FA001DC8C70F0030FC43 /* MainInterface.storyboard */; }; + DCB5FA041DC8C70F0030FC43 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DCB5FA031DC8C70F0030FC43 /* Assets.xcassets */; }; + DCB5FA101DC8CE5D0030FC43 /* ExpandedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCB5FA0F1DC8CE5D0030FC43 /* ExpandedViewController.swift */; }; + DCB5FA141DC8E7DE0030FC43 /* CompactViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCB5FA131DC8E7DE0030FC43 /* CompactViewController.swift */; }; + EA376D82A9B7248C3C111996 /* Pods_Abstract_MessagesExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CD39F780FC2CA69347CB1C2 /* Pods_Abstract_MessagesExtension.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + DCB5F9F81DC8C70F0030FC43 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DCB5F9E61DC8C70F0030FC43 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DCB5F9F51DC8C70F0030FC43; + remoteInfo = MessagesExtension; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + DCB5FA0B1DC8C70F0030FC43 /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + DCB5F9F71DC8C70F0030FC43 /* MessagesExtension.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 32424C6FA93C9B93C60A587E /* Pods-Abstract-MessagesExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Abstract-MessagesExtension.release.xcconfig"; path = "Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.release.xcconfig"; sourceTree = ""; }; + 359D4F28F0B8BCE76DDC1803 /* Pods_Abstract_VoteApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Abstract_VoteApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4E986ACCC82778BE3DDFDAAE /* Pods-Abstract-MessagesExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Abstract-MessagesExtension.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension.debug.xcconfig"; sourceTree = ""; }; + 5CD39F780FC2CA69347CB1C2 /* Pods_Abstract_MessagesExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Abstract_MessagesExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8BB6646EA54790B6C0F12530 /* Pods-Abstract-VoteApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Abstract-VoteApp.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.debug.xcconfig"; sourceTree = ""; }; + DC5635A81DCE297300E4840B /* PollEntity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PollEntity.swift; sourceTree = ""; }; + DCB5F9EC1DC8C70F0030FC43 /* VoteApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = VoteApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DCB5F9EF1DC8C70F0030FC43 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DCB5F9F11DC8C70F0030FC43 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + DCB5F9F61DC8C70F0030FC43 /* MessagesExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = MessagesExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + DCB5F9FB1DC8C70F0030FC43 /* Messages.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Messages.framework; path = System/Library/Frameworks/Messages.framework; sourceTree = SDKROOT; }; + DCB5F9FE1DC8C70F0030FC43 /* MessagesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessagesViewController.swift; sourceTree = ""; }; + DCB5FA011DC8C70F0030FC43 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; + DCB5FA031DC8C70F0030FC43 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DCB5FA051DC8C70F0030FC43 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + DCB5FA0F1DC8CE5D0030FC43 /* ExpandedViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExpandedViewController.swift; sourceTree = ""; }; + DCB5FA131DC8E7DE0030FC43 /* CompactViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompactViewController.swift; sourceTree = ""; }; + E2B350645C3A478E2B8E108B /* Pods-Abstract-VoteApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Abstract-VoteApp.release.xcconfig"; path = "Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + BAA38EB0F70FDA81D8F41C57 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3DF44B274E82324DE497DF78 /* Pods_Abstract_VoteApp.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DCB5F9F31DC8C70F0030FC43 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DCB5F9FC1DC8C70F0030FC43 /* Messages.framework in Frameworks */, + EA376D82A9B7248C3C111996 /* Pods_Abstract_MessagesExtension.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 353742FEB9D1C88F4C99DA38 /* Pods */ = { + isa = PBXGroup; + children = ( + 4E986ACCC82778BE3DDFDAAE /* Pods-Abstract-MessagesExtension.debug.xcconfig */, + 32424C6FA93C9B93C60A587E /* Pods-Abstract-MessagesExtension.release.xcconfig */, + 8BB6646EA54790B6C0F12530 /* Pods-Abstract-VoteApp.debug.xcconfig */, + E2B350645C3A478E2B8E108B /* Pods-Abstract-VoteApp.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; + DCB5F9E51DC8C70F0030FC43 = { + isa = PBXGroup; + children = ( + DCB5F9EE1DC8C70F0030FC43 /* VoteApp */, + DCB5F9FD1DC8C70F0030FC43 /* MessagesExtension */, + DCB5F9FA1DC8C70F0030FC43 /* Frameworks */, + DCB5F9ED1DC8C70F0030FC43 /* Products */, + 353742FEB9D1C88F4C99DA38 /* Pods */, + ); + sourceTree = ""; + }; + DCB5F9ED1DC8C70F0030FC43 /* Products */ = { + isa = PBXGroup; + children = ( + DCB5F9EC1DC8C70F0030FC43 /* VoteApp.app */, + DCB5F9F61DC8C70F0030FC43 /* MessagesExtension.appex */, + ); + name = Products; + sourceTree = ""; + }; + DCB5F9EE1DC8C70F0030FC43 /* VoteApp */ = { + isa = PBXGroup; + children = ( + DCB5F9EF1DC8C70F0030FC43 /* Assets.xcassets */, + DCB5F9F11DC8C70F0030FC43 /* Info.plist */, + ); + path = VoteApp; + sourceTree = ""; + }; + DCB5F9FA1DC8C70F0030FC43 /* Frameworks */ = { + isa = PBXGroup; + children = ( + DCB5F9FB1DC8C70F0030FC43 /* Messages.framework */, + 5CD39F780FC2CA69347CB1C2 /* Pods_Abstract_MessagesExtension.framework */, + 359D4F28F0B8BCE76DDC1803 /* Pods_Abstract_VoteApp.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + DCB5F9FD1DC8C70F0030FC43 /* MessagesExtension */ = { + isa = PBXGroup; + children = ( + DCB5F9FE1DC8C70F0030FC43 /* MessagesViewController.swift */, + DCB5FA001DC8C70F0030FC43 /* MainInterface.storyboard */, + DCB5FA131DC8E7DE0030FC43 /* CompactViewController.swift */, + DCB5FA0F1DC8CE5D0030FC43 /* ExpandedViewController.swift */, + DC5635A81DCE297300E4840B /* PollEntity.swift */, + DCB5FA031DC8C70F0030FC43 /* Assets.xcassets */, + DCB5FA051DC8C70F0030FC43 /* Info.plist */, + ); + path = MessagesExtension; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DCB5F9EB1DC8C70F0030FC43 /* VoteApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = DCB5FA0C1DC8C70F0030FC43 /* Build configuration list for PBXNativeTarget "VoteApp" */; + buildPhases = ( + 1D9F47DD329150B4DE225340 /* [CP] Check Pods Manifest.lock */, + DCB5F9EA1DC8C70F0030FC43 /* Resources */, + DCB5FA0B1DC8C70F0030FC43 /* Embed App Extensions */, + BAA38EB0F70FDA81D8F41C57 /* Frameworks */, + 6069AF35BB210E780CCEDEDC /* [CP] Copy Pods Resources */, + 383911F5EECBE407BBE2C3A5 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + DCB5F9F91DC8C70F0030FC43 /* PBXTargetDependency */, + ); + name = VoteApp; + productName = VoteApp; + productReference = DCB5F9EC1DC8C70F0030FC43 /* VoteApp.app */; + productType = "com.apple.product-type.application.messages"; + }; + DCB5F9F51DC8C70F0030FC43 /* MessagesExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = DCB5FA081DC8C70F0030FC43 /* Build configuration list for PBXNativeTarget "MessagesExtension" */; + buildPhases = ( + 8BF6A18D5DABDA37951090DE /* [CP] Check Pods Manifest.lock */, + DCB5F9F21DC8C70F0030FC43 /* Sources */, + DCB5F9F31DC8C70F0030FC43 /* Frameworks */, + DCB5F9F41DC8C70F0030FC43 /* Resources */, + B984A87F17220FF5497BDB03 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MessagesExtension; + productName = MessagesExtension; + productReference = DCB5F9F61DC8C70F0030FC43 /* MessagesExtension.appex */; + productType = "com.apple.product-type.app-extension.messages"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DCB5F9E61DC8C70F0030FC43 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0800; + LastUpgradeCheck = 0800; + ORGANIZATIONNAME = "Ellina Kuznetcova"; + TargetAttributes = { + DCB5F9EB1DC8C70F0030FC43 = { + CreatedOnToolsVersion = 8.0; + DevelopmentTeam = C9ZJ96D59R; + ProvisioningStyle = Automatic; + }; + DCB5F9F51DC8C70F0030FC43 = { + CreatedOnToolsVersion = 8.0; + DevelopmentTeam = C9ZJ96D59R; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = DCB5F9E91DC8C70F0030FC43 /* Build configuration list for PBXProject "VoteApp" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DCB5F9E51DC8C70F0030FC43; + productRefGroup = DCB5F9ED1DC8C70F0030FC43 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DCB5F9EB1DC8C70F0030FC43 /* VoteApp */, + DCB5F9F51DC8C70F0030FC43 /* MessagesExtension */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DCB5F9EA1DC8C70F0030FC43 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DCB5F9F01DC8C70F0030FC43 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DCB5F9F41DC8C70F0030FC43 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DCB5FA041DC8C70F0030FC43 /* Assets.xcassets in Resources */, + DCB5FA021DC8C70F0030FC43 /* MainInterface.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 1D9F47DD329150B4DE225340 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + 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"; + showEnvVarsInLog = 0; + }; + 383911F5EECBE407BBE2C3A5 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Abstract-VoteApp/Pods-Abstract-VoteApp-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 6069AF35BB210E780CCEDEDC /* [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-Abstract-VoteApp/Pods-Abstract-VoteApp-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 8BF6A18D5DABDA37951090DE /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + 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"; + showEnvVarsInLog = 0; + }; + B984A87F17220FF5497BDB03 /* [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-Abstract-MessagesExtension/Pods-Abstract-MessagesExtension-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DCB5F9F21DC8C70F0030FC43 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DCB5FA141DC8E7DE0030FC43 /* CompactViewController.swift in Sources */, + DCB5F9FF1DC8C70F0030FC43 /* MessagesViewController.swift in Sources */, + DCB5FA101DC8CE5D0030FC43 /* ExpandedViewController.swift in Sources */, + DC5635A91DCE297300E4840B /* PollEntity.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + DCB5F9F91DC8C70F0030FC43 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DCB5F9F51DC8C70F0030FC43 /* MessagesExtension */; + targetProxy = DCB5F9F81DC8C70F0030FC43 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + DCB5FA001DC8C70F0030FC43 /* MainInterface.storyboard */ = { + isa = PBXVariantGroup; + children = ( + DCB5FA011DC8C70F0030FC43 /* Base */, + ); + name = MainInterface.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + DCB5FA061DC8C70F0030FC43 /* Debug */ = { + isa = XCBuildConfiguration; + 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_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_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "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 = 10.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DCB5FA071DC8C70F0030FC43 /* Release */ = { + isa = XCBuildConfiguration; + 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_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_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + 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 = 10.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + DCB5FA091DC8C70F0030FC43 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4E986ACCC82778BE3DDFDAAE /* Pods-Abstract-MessagesExtension.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "iMessage App Icon"; + DEVELOPMENT_TEAM = C9ZJ96D59R; + INFOPLIST_FILE = MessagesExtension/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.eldkuznetcova.VoteApp1.MessagesExtension; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; + }; + name = Debug; + }; + DCB5FA0A1DC8C70F0030FC43 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 32424C6FA93C9B93C60A587E /* Pods-Abstract-MessagesExtension.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "iMessage App Icon"; + DEVELOPMENT_TEAM = C9ZJ96D59R; + INFOPLIST_FILE = MessagesExtension/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.eldkuznetcova.VoteApp1.MessagesExtension; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; + }; + name = Release; + }; + DCB5FA0D1DC8C70F0030FC43 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8BB6646EA54790B6C0F12530 /* Pods-Abstract-VoteApp.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEVELOPMENT_TEAM = C9ZJ96D59R; + INFOPLIST_FILE = VoteApp/Info.plist; + PRODUCT_BUNDLE_IDENTIFIER = com.eldkuznetcova.VoteApp1; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + DCB5FA0E1DC8C70F0030FC43 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E2B350645C3A478E2B8E108B /* Pods-Abstract-VoteApp.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEVELOPMENT_TEAM = C9ZJ96D59R; + INFOPLIST_FILE = VoteApp/Info.plist; + PRODUCT_BUNDLE_IDENTIFIER = com.eldkuznetcova.VoteApp1; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DCB5F9E91DC8C70F0030FC43 /* Build configuration list for PBXProject "VoteApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DCB5FA061DC8C70F0030FC43 /* Debug */, + DCB5FA071DC8C70F0030FC43 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DCB5FA081DC8C70F0030FC43 /* Build configuration list for PBXNativeTarget "MessagesExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DCB5FA091DC8C70F0030FC43 /* Debug */, + DCB5FA0A1DC8C70F0030FC43 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DCB5FA0C1DC8C70F0030FC43 /* Build configuration list for PBXNativeTarget "VoteApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DCB5FA0D1DC8C70F0030FC43 /* Debug */, + DCB5FA0E1DC8C70F0030FC43 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = DCB5F9E61DC8C70F0030FC43 /* Project object */; +} diff --git a/iMessagesExample/VoteApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iMessagesExample/VoteApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..42813d4 --- /dev/null +++ b/iMessagesExample/VoteApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iMessagesExample/VoteApp.xcworkspace/contents.xcworkspacedata b/iMessagesExample/VoteApp.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..c2f1e30 --- /dev/null +++ b/iMessagesExample/VoteApp.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/iMessagesExample/VoteApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/iMessagesExample/VoteApp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..1d060ed --- /dev/null +++ b/iMessagesExample/VoteApp/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,93 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iMessagesExample/VoteApp/Info.plist b/iMessagesExample/VoteApp/Info.plist new file mode 100644 index 0000000..c12df3b --- /dev/null +++ b/iMessagesExample/VoteApp/Info.plist @@ -0,0 +1,43 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + +