├── iPicUploader ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── iPicImage.swift │ ├── iPicUploadResult.swift │ ├── iPicUploadHelper.swift │ ├── iPicPasteboardHelper.swift │ └── iPicUploader.swift ├── iPicUploader.xcworkspace ├── Example ├── Podfile ├── Pods │ ├── Target Support Files │ │ ├── iPicUploader │ │ │ ├── iPicUploader-prefix.pch │ │ │ ├── iPicUploader.modulemap │ │ │ ├── iPicUploader-dummy.m │ │ │ ├── iPicUploader-umbrella.h │ │ │ ├── iPicUploader.xcconfig │ │ │ └── Info.plist │ │ └── Pods-iPicUploaderExample │ │ │ ├── Pods-iPicUploaderExample.modulemap │ │ │ ├── Pods-iPicUploaderExample-dummy.m │ │ │ ├── Pods-iPicUploaderExample-umbrella.h │ │ │ ├── Pods-iPicUploaderExample.debug.xcconfig │ │ │ ├── Pods-iPicUploaderExample.release.xcconfig │ │ │ ├── Info.plist │ │ │ ├── Pods-iPicUploaderExample-acknowledgements.markdown │ │ │ ├── Pods-iPicUploaderExample-acknowledgements.plist │ │ │ ├── Pods-iPicUploaderExample-frameworks.sh │ │ │ └── Pods-iPicUploaderExample-resources.sh │ ├── iPicUploaderTests │ │ ├── Resources │ │ │ └── iPic.png │ │ ├── UnitTestsConstants.swift │ │ ├── Info.plist │ │ ├── iPicImageTests.swift │ │ ├── iPicUploadHelperTests.swift │ │ ├── iPicUploadResultTests.swift │ │ └── iPicUploaderTests.swift │ ├── Pods.xcodeproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── project.pbxproj │ ├── Manifest.lock │ ├── iPicUploader │ │ ├── iPicUploader.h │ │ └── Info.plist │ └── Local Podspecs │ │ └── iPicUploader.podspec.json ├── iPicUploaderExample │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── AppIcon_16.png │ │ │ ├── AppIcon_32.png │ │ │ ├── AppIcon_64.png │ │ │ ├── AppIcon_1024.png │ │ │ ├── AppIcon_128.png │ │ │ ├── AppIcon_256-1.png │ │ │ ├── AppIcon_256.png │ │ │ ├── AppIcon_32-1.png │ │ │ ├── AppIcon_512-1.png │ │ │ ├── AppIcon_512.png │ │ │ └── Contents.json │ │ ├── NormalStateIcon.imageset │ │ │ ├── NormalStateIcon1.png │ │ │ ├── NormalStateIcon2.png │ │ │ ├── NormalStateIcon3.png │ │ │ └── Contents.json │ │ ├── DraggingStateIcon.imageset │ │ │ ├── DraggingStateIcon1.png │ │ │ ├── DraggingStateIcon2.png │ │ │ ├── DraggingStateIcon3.png │ │ │ └── Contents.json │ │ └── UploadingStateIcon.imageset │ │ │ ├── UploadingStateIcon1.png │ │ │ ├── UploadingStateIcon2.png │ │ │ ├── UploadingStateIcon3.png │ │ │ └── Contents.json │ ├── iPicUploaderExample.entitlements │ ├── AppDelegate.swift │ ├── Info.plist │ ├── iPicImageView.swift │ ├── MainWindowController.swift │ ├── MainWindowController.xib │ └── Base.lproj │ │ └── MainMenu.xib ├── iPicUploader.xcodeproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── project.pbxproj ├── iPicUploader.xcworkspace │ └── contents.xcworkspacedata └── Podfile.lock ├── .travis.yml ├── .gitignore ├── LICENSE ├── iPicUploader.podspec └── README.md /iPicUploader/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /iPicUploader/Classes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /iPicUploader.xcworkspace: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/iPicUploader.xcworkspace -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | 2 | use_frameworks! 3 | 4 | target 'iPicUploaderExample' do 5 | pod 'iPicUploader', :path => '../' 6 | end 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/iPicUploader/iPicUploader-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/Pods/iPicUploaderTests/Resources/iPic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/Pods/iPicUploaderTests/Resources/iPic.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/iPicUploader/iPicUploader.modulemap: -------------------------------------------------------------------------------- 1 | framework module iPicUploader { 2 | umbrella header "iPicUploader-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_16.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_32.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_64.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/iPicUploader/iPicUploader-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_iPicUploader : NSObject 3 | @end 4 | @implementation PodsDummy_iPicUploader 5 | @end 6 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_1024.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_128.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_256-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_256-1.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_256.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_32-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_32-1.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_512-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_512-1.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/AppIcon_512.png -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/NormalStateIcon.imageset/NormalStateIcon1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/NormalStateIcon.imageset/NormalStateIcon1.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/NormalStateIcon.imageset/NormalStateIcon2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/NormalStateIcon.imageset/NormalStateIcon2.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/NormalStateIcon.imageset/NormalStateIcon3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/NormalStateIcon.imageset/NormalStateIcon3.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/iPicUploader/iPicUploader-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double iPicUploaderVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char iPicUploaderVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/DraggingStateIcon.imageset/DraggingStateIcon1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/DraggingStateIcon.imageset/DraggingStateIcon1.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/DraggingStateIcon.imageset/DraggingStateIcon2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/DraggingStateIcon.imageset/DraggingStateIcon2.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/DraggingStateIcon.imageset/DraggingStateIcon3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/DraggingStateIcon.imageset/DraggingStateIcon3.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/UploadingStateIcon.imageset/UploadingStateIcon1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/UploadingStateIcon.imageset/UploadingStateIcon1.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/UploadingStateIcon.imageset/UploadingStateIcon2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/UploadingStateIcon.imageset/UploadingStateIcon2.png -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/UploadingStateIcon.imageset/UploadingStateIcon3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiajian/iPicUploader/master/Example/iPicUploaderExample/Assets.xcassets/UploadingStateIcon.imageset/UploadingStateIcon3.png -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_iPicUploaderExample { 2 | umbrella header "Pods-iPicUploaderExample-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_iPicUploaderExample : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_iPicUploaderExample 5 | @end 6 | -------------------------------------------------------------------------------- /Example/iPicUploader.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_iPicUploaderExampleVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_iPicUploaderExampleVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Example/iPicUploader.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - iPicUploader (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - iPicUploader (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | iPicUploader: 9 | :path: ../ 10 | 11 | SPEC CHECKSUMS: 12 | iPicUploader: 018193faa98b2ec9a1ac9595caaf4ab9e9727f19 13 | 14 | PODFILE CHECKSUM: abf6a768567e8282e8b143756ecc732a563ca51e 15 | 16 | COCOAPODS: 1.0.1 17 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - iPicUploader (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - iPicUploader (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | iPicUploader: 9 | :path: ../ 10 | 11 | SPEC CHECKSUMS: 12 | iPicUploader: 018193faa98b2ec9a1ac9595caaf4ab9e9727f19 13 | 14 | PODFILE CHECKSUM: abf6a768567e8282e8b143756ecc732a563ca51e 15 | 16 | COCOAPODS: 1.0.1 17 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/iPicUploaderExample.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-write 8 | 9 | com.apple.security.network.client 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/NormalStateIcon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "NormalStateIcon1.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "NormalStateIcon2.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "NormalStateIcon3.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # references: 2 | # * http://www.objc.io/issue-6/travis-ci.html 3 | # * https://github.com/supermarin/xcpretty#usage 4 | 5 | osx_image: xcode7.3 6 | language: objective-c 7 | # cache: cocoapods 8 | # podfile: Example/Podfile 9 | # before_install: 10 | # - gem install cocoapods # Since Travis is not always on latest version 11 | # - pod install --project-directory=Example 12 | script: 13 | - set -o pipefail && xcodebuild test -workspace Example/iPicUploader.xcworkspace -scheme iPicUploader-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty 14 | - pod lib lint 15 | -------------------------------------------------------------------------------- /Example/Pods/iPicUploader/iPicUploader.h: -------------------------------------------------------------------------------- 1 | // 2 | // iPicUploader.h 3 | // iPicUploader 4 | // 5 | // Created by Jason Zheng on 9/1/16. 6 | // 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for iPicUploader. 12 | FOUNDATION_EXPORT double iPicUploaderVersionNumber; 13 | 14 | //! Project version string for iPicUploader. 15 | FOUNDATION_EXPORT const unsigned char iPicUploaderVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/DraggingStateIcon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "DraggingStateIcon1.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "DraggingStateIcon2.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "DraggingStateIcon3.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/UploadingStateIcon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "UploadingStateIcon1.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "UploadingStateIcon2.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "UploadingStateIcon3.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/Pods/iPicUploaderTests/UnitTestsConstants.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ConstantsTests.swift 3 | // Pods 4 | // 5 | // Created by Jason Zheng on 9/3/16. 6 | // 7 | // 8 | 9 | import XCTest 10 | 11 | let UTConstants = UnitTestsConstants.sharedInstance 12 | 13 | class UnitTestsConstants { 14 | // Singleton 15 | static let sharedInstance = UnitTestsConstants() 16 | private init() {} 17 | 18 | let waitTime: NSTimeInterval = 15 19 | 20 | var imageFilePath: String { 21 | let bundle = NSBundle(forClass: self.dynamicType) 22 | return bundle.pathForResource("iPic", ofType: "png")! 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/iPicUploader/iPicUploader.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/iPicUploader 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 5 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 6 | PODS_BUILD_DIR = $BUILD_DIR 7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // iPicUploaderExample 4 | // 5 | // Created by Jason Zheng on 9/1/16. 6 | // Copyright © 2016 CocoaPods. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | @NSApplicationMain 12 | class AppDelegate: NSObject, NSApplicationDelegate { 13 | var mainWindowController: MainWindowController? 14 | 15 | func applicationDidFinishLaunching(aNotification: NSNotification) { 16 | 17 | let mainWindowController = MainWindowController() 18 | mainWindowController.showWindow(self) 19 | 20 | self.mainWindowController = mainWindowController 21 | } 22 | } 23 | 24 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/iPicUploader.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "iPicUploader", 3 | "version": "0.1.0", 4 | "summary": "A short description of iPicUploader.", 5 | "description": "TODO: Add long description of the pod here.", 6 | "homepage": "https://github.com//iPicUploader", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "Jason": "quietjason@gmail.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com//iPicUploader.git", 16 | "tag": "0.1.0" 17 | }, 18 | "platforms": { 19 | "osx": "10.11" 20 | }, 21 | "source_files": "iPicUploader/Classes/**/*" 22 | } 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata/ 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | Carthage 26 | # We recommend against adding the Pods directory to your .gitignore. However 27 | # you should judge for yourself, the pros and cons are mentioned at: 28 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 29 | # 30 | # Note: if you ignore the Pods directory, make sure to uncomment 31 | # `pod install` in .travis.yml 32 | # 33 | # Pods/ 34 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/iPicUploader" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/iPicUploader/iPicUploader.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "iPicUploader" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample.release.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/iPicUploader" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' 6 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/iPicUploader/iPicUploader.framework/Headers" 7 | OTHER_LDFLAGS = $(inherited) -framework "iPicUploader" 8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 9 | PODS_BUILD_DIR = $BUILD_DIR 10 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Pods/iPicUploaderTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Pods/iPicUploader/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/iPicUploader/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-iPicUploaderExample/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/iPicUploaderTests/iPicImageTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // iPicUploaderTests.swift 3 | // iPicUploaderTests 4 | // 5 | // Created by Jason Zheng on 9/1/16. 6 | // 7 | // 8 | 9 | import XCTest 10 | @testable import iPicUploader 11 | 12 | class iPicImageTests: XCTestCase { 13 | 14 | func testiPicImage() { 15 | let image1 = iPicImage(imageFilePath: UTConstants.imageFilePath) 16 | XCTAssertTrue(!image1.id.isEmpty) 17 | XCTAssertEqual(image1.version, 1) 18 | 19 | image1.json = NSUUID().UUIDString 20 | 21 | let data = NSKeyedArchiver.archivedDataWithRootObject(image1) 22 | let image2 = NSKeyedUnarchiver.unarchiveObjectWithData(data) as! iPicImage 23 | XCTAssertEqual(image1.id, image2.id) 24 | XCTAssertEqual(image1.imageFilePath, image2.imageFilePath) 25 | XCTAssertEqual(image1.imageData?.length, image2.imageData?.length) 26 | XCTAssertEqual(image1.version, image2.version) 27 | XCTAssertEqual(image1.json as? String, image2.json as? String) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016 Jason 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Example/Pods/iPicUploaderTests/iPicUploadHelperTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // iPicUploaderTests.swift 3 | // iPicUploaderTests 4 | // 5 | // Created by Jason Zheng on 9/1/16. 6 | // 7 | // 8 | 9 | import XCTest 10 | @testable import iPicUploader 11 | 12 | class iPicUploadHelperTests: XCTestCase { 13 | 14 | func testiPic() { 15 | XCTAssertNil(iPicUploadHelper.launchiPic()) 16 | XCTAssertTrue(iPicUploadHelper.isiPicRunning()) 17 | } 18 | 19 | func test_generateiPicImage() { 20 | var image: iPicImage? 21 | var error: NSError? 22 | 23 | (image, error) = iPicUploadHelper.generateiPicImage(UTConstants.imageFilePath) 24 | XCTAssertNotNil(image) 25 | XCTAssertNil(error) 26 | 27 | let theImage = NSImage(contentsOfFile: UTConstants.imageFilePath)! 28 | (image, error) = iPicUploadHelper.generateiPicImage(theImage) 29 | XCTAssertNotNil(image) 30 | XCTAssertNil(error) 31 | 32 | let pasteboard = NSPasteboard.generalPasteboard() 33 | pasteboard.clearContents() 34 | let url = NSURL(fileURLWithPath: UTConstants.imageFilePath) 35 | pasteboard.writeObjects([url]) 36 | let imageDataList = iPicUploadHelper.generateImageDataListFrom(pasteboard) 37 | XCTAssertTrue(!imageDataList.isEmpty) 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 100 25 | LSMinimumSystemVersion 26 | $(MACOSX_DEPLOYMENT_TARGET) 27 | NSAppTransportSecurity 28 | 29 | NSAllowsArbitraryLoads 30 | 31 | 32 | NSHumanReadableCopyright 33 | Copyright © 2016 CocoaPods. All rights reserved. 34 | NSMainNibFile 35 | MainMenu 36 | NSPrincipalClass 37 | NSApplication 38 | 39 | 40 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## iPicUploader 5 | 6 | Copyright (c) 2016 Jason 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "16x16", 5 | "idiom" : "mac", 6 | "filename" : "AppIcon_16.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "16x16", 11 | "idiom" : "mac", 12 | "filename" : "AppIcon_32.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "32x32", 17 | "idiom" : "mac", 18 | "filename" : "AppIcon_32-1.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "32x32", 23 | "idiom" : "mac", 24 | "filename" : "AppIcon_64.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "128x128", 29 | "idiom" : "mac", 30 | "filename" : "AppIcon_128.png", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "size" : "128x128", 35 | "idiom" : "mac", 36 | "filename" : "AppIcon_256.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "256x256", 41 | "idiom" : "mac", 42 | "filename" : "AppIcon_256-1.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "256x256", 47 | "idiom" : "mac", 48 | "filename" : "AppIcon_512.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "512x512", 53 | "idiom" : "mac", 54 | "filename" : "AppIcon_512-1.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "512x512", 59 | "idiom" : "mac", 60 | "filename" : "AppIcon_1024.png", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /Example/Pods/iPicUploaderTests/iPicUploadResultTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // iPicUploaderTests.swift 3 | // iPicUploaderTests 4 | // 5 | // Created by Jason Zheng on 9/1/16. 6 | // 7 | // 8 | 9 | import XCTest 10 | @testable import iPicUploader 11 | 12 | class iPicUploadResultTests: XCTestCase { 13 | 14 | func testiPicUploadResult() { 15 | let imageLink = "http://test.com/pic.jpg" 16 | let error = iPicUploadError.FailedToUpload 17 | let result1 = iPicUploadResult(imageLink: imageLink, error: error) 18 | result1.json = NSUUID().UUIDString 19 | 20 | XCTAssertTrue(!result1.id.isEmpty) 21 | XCTAssertEqual(result1.version, 1) 22 | 23 | let data = NSKeyedArchiver.archivedDataWithRootObject(result1) 24 | let result2 = NSKeyedUnarchiver.unarchiveObjectWithData(data) as! iPicUploadResult 25 | XCTAssertEqual(result1.id, result2.id) 26 | XCTAssertEqual(result1.imageLink, result2.imageLink) 27 | XCTAssertEqual(result1.error, result2.error) 28 | XCTAssertEqual(result1.version, result2.version) 29 | XCTAssertEqual(result1.json as? String, result2.json as? String) 30 | } 31 | 32 | func testiPicUploadError() { 33 | XCTAssertEqual(iPicUploadError.Unknown.code, -1) 34 | XCTAssertEqual(iPicUploadError.iPicNotInstalled.code, -11) 35 | XCTAssertEqual(iPicUploadError.iPicIncompatible.code, -12) 36 | XCTAssertEqual(iPicUploadError.FileInaccessable.code, -21) 37 | XCTAssertEqual(iPicUploadError.InvalidImageFile.code, -22) 38 | XCTAssertEqual(iPicUploadError.InvalidImageHost.code, -31) 39 | XCTAssertEqual(iPicUploadError.FailedToUpload.code, -32) 40 | XCTAssertEqual(iPicUploadError.TimeOut.code, -41) 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/iPicImageView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // iPicImageView.swift 3 | // iPicUploader 4 | // 5 | // Created by Jason Zheng on 9/2/16. 6 | // Copyright © 2016 CocoaPods. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | import iPicUploader 11 | 12 | enum iPicImageViewState: String { 13 | case Normal = "NormalStateIcon" 14 | case Dragging = "DraggingStateIcon" 15 | case Uploading = "UploadingStateIcon" 16 | case Uploaded = "UploadedStateIcon" 17 | } 18 | 19 | class iPicImageView: NSImageView { 20 | 21 | var state: iPicImageViewState = .Normal { 22 | didSet { 23 | switch state { 24 | case .Normal, 25 | .Dragging, 26 | .Uploading: 27 | self.image = NSImage(named: state.rawValue) 28 | 29 | case .Uploaded: 30 | break 31 | } 32 | } 33 | } 34 | 35 | var uploadHandler: iPicUploadHandler? 36 | 37 | // MARK: - NSDraggingDestination 38 | 39 | override func draggingEntered(sender: NSDraggingInfo) -> NSDragOperation { 40 | if NSImage.canInitWithPasteboard(sender.draggingPasteboard()) { 41 | state = .Dragging 42 | return .Copy 43 | } 44 | 45 | return .None 46 | } 47 | 48 | override func draggingExited(sender: NSDraggingInfo?) { 49 | state = .Normal 50 | } 51 | 52 | override func performDragOperation(sender: NSDraggingInfo) -> Bool { 53 | for imageData in iPicUploadHelper.generateImageDataListFrom(sender.draggingPasteboard()) { 54 | NSOperationQueue.mainQueue().addOperationWithBlock { 55 | self.state = .Uploading 56 | } 57 | 58 | iPic.uploadImage(imageData, handler: { (imageLink, error) in 59 | self.uploadHandler?(imageLink: imageLink, error: error) 60 | }) 61 | } 62 | 63 | return true 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Example/Pods/iPicUploaderTests/iPicUploaderTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // iPicUploaderTests.swift 3 | // iPicUploaderTests 4 | // 5 | // Created by Jason Zheng on 9/1/16. 6 | // 7 | // 8 | 9 | import XCTest 10 | @testable import iPicUploader 11 | 12 | class iPicUploaderTests: XCTestCase { 13 | var exception: XCTestExpectation? 14 | 15 | func testUploadImageByFilePath() { 16 | exception = expectationWithDescription("testUploadImageByFilePath") 17 | 18 | iPic.uploadImage(UTConstants.imageFilePath) { (imageLink, error) in 19 | XCTAssertNotNil(imageLink) 20 | XCTAssertNil(error) 21 | 22 | self.exception?.fulfill() 23 | } 24 | 25 | self.waitForExpectationsWithTimeout(UTConstants.waitTime) { (error) in 26 | XCTAssertNil(error) 27 | } 28 | } 29 | 30 | func testUploadImageByNSImage() { 31 | exception = expectationWithDescription("testUploadImageByNSImage") 32 | 33 | let image = NSImage(contentsOfFile: UTConstants.imageFilePath) 34 | iPic.uploadImage(image!) { (imageLink, error) in 35 | XCTAssertNotNil(imageLink) 36 | XCTAssertNil(error) 37 | 38 | self.exception?.fulfill() 39 | } 40 | 41 | self.waitForExpectationsWithTimeout(UTConstants.waitTime) { (error) in 42 | XCTAssertNil(error) 43 | } 44 | } 45 | 46 | func testUploadImageByImageData() { 47 | exception = expectationWithDescription("testUploadImageByImageData") 48 | 49 | let imageData = NSData(contentsOfFile: UTConstants.imageFilePath) 50 | iPic.uploadImage(imageData!) { (imageLink, error) in 51 | XCTAssertNotNil(imageLink) 52 | XCTAssertNil(error) 53 | 54 | self.exception?.fulfill() 55 | } 56 | 57 | self.waitForExpectationsWithTimeout(UTConstants.waitTime) { (error) in 58 | XCTAssertNil(error) 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /iPicUploader.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint iPicUploader.podspec' to validate before submitting. 3 | # 4 | # Podspec Syntax Reference http://guides.cocoapods.org/syntax/podspec.html 5 | # 6 | 7 | Pod::Spec.new do |s| 8 | s.name = 'iPicUploader' 9 | s.version = '1.0.1' 10 | s.summary = 'iPicUploader could help you to upload images by iPic on macOS.' 11 | s.description = <<-DESC 12 | iPic could automatically upload images and save Markdown links on macOS. 13 | 14 | - Upload images by drag & drop. 15 | - Upload images by services with shortcut [Command + U]. 16 | - Upload copied images with shortcut [Shift + Command + U]. 17 | - Support Imgur, Flickr, Amazon S3 and other image hosts. 18 | - Support image link of Markdown format. 19 | 20 | Video introduction: http://toolinbox.net/en/iPic/ 21 | 22 | In the same time, iPic open the ability to upload images. It means if you App also needs to upload images, you don't need to build from scratch. Just use iPicUploader, you App could also upload images to Imgur, Flickr, Amazon S3 and other image hosts. 23 | 24 | iPicUploader also includes a full example. It shows how to use iPicUploader to upload images by drag and drop, by selecting image files, and by paste to upload images. You will feel easy to start. 25 | DESC 26 | 27 | s.homepage = 'https://github.com/toolinbox/iPicUploader.git' 28 | s.screenshots = 'https://farm9.staticflickr.com/8109/28818056193_11bb44d5e0_o.png' 29 | s.license = { :type => 'MIT', :file => 'LICENSE' } 30 | s.author = { 'Jason' => 'iToolinbox@gmail.com' } 31 | s.source = { :git => 'https://github.com/toolinbox/iPicUploader.git', :tag => s.version.to_s } 32 | s.social_media_url = 'https://twitter.com/hereisjason' 33 | 34 | s.osx.deployment_target = "10.11" 35 | 36 | s.source_files = 'iPicUploader/Classes/**/*' 37 | end 38 | -------------------------------------------------------------------------------- /iPicUploader/Classes/iPicImage.swift: -------------------------------------------------------------------------------- 1 | // 2 | // iPicImage.swift 3 | // iPicUploadImageDemo 4 | // 5 | // Created by Jason Zheng on 8/31/16. 6 | // Copyright © 2016 Jason Zheng. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public typealias iPicUploadHandler = (imageLink: String?, error: NSError?) -> () 12 | 13 | public class iPicImage: NSObject, NSCoding { 14 | public static let sharedClassName: String = "net.toolinbox.iPic.iPicImage" 15 | 16 | private static let idKey = "id" 17 | private static let imageFilePathKey = "imageFilePath" 18 | private static let imageDataKey = "imageData" 19 | 20 | private static let versionKey = "version" 21 | private static let jsonKey = "json" 22 | 23 | public var id = NSUUID().UUIDString 24 | public var imageFilePath: String? 25 | public var imageData: NSData? 26 | 27 | public var version = 1 28 | public var json: AnyObject? 29 | 30 | var handler: iPicUploadHandler? 31 | 32 | public init(imageFilePath: String) { 33 | super.init() 34 | 35 | self.imageFilePath = imageFilePath 36 | } 37 | 38 | public init(imageData: NSData) { 39 | super.init() 40 | 41 | self.imageData = imageData 42 | } 43 | 44 | // MARK: - NSCoding 45 | 46 | public required init?(coder aDecoder: NSCoder) { 47 | super.init() 48 | 49 | id = (aDecoder.decodeObjectForKey(iPicImage.idKey) as? String) ?? "" 50 | imageFilePath = aDecoder.decodeObjectForKey(iPicImage.imageFilePathKey) as? String 51 | imageData = aDecoder.decodeObjectForKey(iPicImage.imageDataKey) as? NSData 52 | 53 | version = aDecoder.decodeIntegerForKey(iPicImage.versionKey) 54 | json = aDecoder.decodeObjectForKey(iPicImage.jsonKey) 55 | } 56 | 57 | public func encodeWithCoder(aCoder: NSCoder) { 58 | aCoder.encodeObject(id, forKey: iPicImage.idKey) 59 | aCoder.encodeObject(imageFilePath, forKey: iPicImage.imageFilePathKey) 60 | aCoder.encodeObject(imageData, forKey: iPicImage.imageDataKey) 61 | 62 | aCoder.encodeInteger(version, forKey: iPicImage.versionKey) 63 | aCoder.encodeObject(json, forKey: iPicImage.jsonKey) 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2016 Jason <quietjason@gmail.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | Title 38 | iPicUploader 39 | Type 40 | PSGroupSpecifier 41 | 42 | 43 | FooterText 44 | Generated by CocoaPods - https://cocoapods.org 45 | Title 46 | 47 | Type 48 | PSGroupSpecifier 49 | 50 | 51 | StringsTable 52 | Acknowledgements 53 | Title 54 | Acknowledgements 55 | 56 | 57 | -------------------------------------------------------------------------------- /iPicUploader/Classes/iPicUploadResult.swift: -------------------------------------------------------------------------------- 1 | // 2 | // iPicUploadResult.swift 3 | // iPicUploadImageDemo 4 | // 5 | // Created by Jason Zheng on 8/31/16. 6 | // Copyright © 2016 Jason Zheng. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public class iPicUploadResult: NSObject, NSCoding { 12 | public static let sharedClassName: String = "net.toolinbox.iPic.iPicUploadResult" 13 | 14 | private static let idKey = "id" 15 | private static let imageLinkKey = "imageLink" 16 | private static let errorKey = "error" 17 | 18 | private static let versionKey = "version" 19 | private static let jsonKey = "json" 20 | 21 | public var id = NSUUID().UUIDString 22 | public var imageLink: String? 23 | public var error: NSError? 24 | 25 | public var version = 1 26 | public var json: AnyObject? 27 | 28 | public init(imageLink: String?, error: NSError?) { 29 | super.init() 30 | 31 | self.imageLink = imageLink 32 | self.error = error 33 | } 34 | 35 | // MARK: - NSCoding 36 | 37 | public required init?(coder aDecoder: NSCoder) { 38 | super.init() 39 | 40 | id = (aDecoder.decodeObjectForKey(iPicUploadResult.idKey) as? String) ?? "" 41 | imageLink = aDecoder.decodeObjectForKey(iPicUploadResult.imageLinkKey) as? String 42 | error = aDecoder.decodeObjectForKey(iPicUploadResult.errorKey) as? NSError 43 | 44 | version = aDecoder.decodeIntegerForKey(iPicUploadResult.versionKey) 45 | json = aDecoder.decodeObjectForKey(iPicUploadResult.jsonKey) 46 | } 47 | 48 | public func encodeWithCoder(aCoder: NSCoder) { 49 | aCoder.encodeObject(id, forKey: iPicUploadResult.idKey) 50 | aCoder.encodeObject(imageLink, forKey: iPicUploadResult.imageLinkKey) 51 | aCoder.encodeObject(error, forKey: iPicUploadResult.errorKey) 52 | 53 | aCoder.encodeInteger(version, forKey: iPicUploadResult.versionKey) 54 | aCoder.encodeObject(json, forKey: iPicUploadResult.jsonKey) 55 | } 56 | } 57 | 58 | public struct iPicUploadError { 59 | 60 | public static let Unknown = iPicUploadError.create(-1, "Unknown error.") 61 | public static let iPicNotInstalled = iPicUploadError.create(-11, "iPic wasn't installed.") 62 | public static let iPicIncompatible = iPicUploadError.create(-12, "iPic isn't compatible.") 63 | public static let FileInaccessable = iPicUploadError.create(-21, "The file isn't accessable.") 64 | public static let InvalidImageFile = iPicUploadError.create(-22, "Invalid image file.") 65 | public static let InvalidImageHost = iPicUploadError.create(-31, "Invalid image host.") 66 | public static let FailedToUpload = iPicUploadError.create(-32, "Failed to upload.") 67 | public static let TimeOut = iPicUploadError.create(-41, "Time out.") 68 | 69 | private static let iPicUploaderDomain = "net.toolinbox.ipic.uploader" 70 | 71 | private static func create(code: Int, _ description: String) -> NSError { 72 | return NSError(domain: iPicUploaderDomain, code: code, userInfo: [NSLocalizedDescriptionKey: description]) 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /iPicUploader/Classes/iPicUploadHelper.swift: -------------------------------------------------------------------------------- 1 | // 2 | // iPicUploadHelper.swift 3 | // iPicUploadImageDemo 4 | // 5 | // Created by Jason Zheng on 8/31/16. 6 | // Copyright © 2016 Jason Zheng. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | public class iPicUploadHelper { 12 | private static let iPicBundleIdentifier = "net.toolinbox.ipic" 13 | private static let iPicURLScheme = "ipic://" 14 | 15 | // MARK: Static Method 16 | 17 | static func isiPicRunning() -> Bool { 18 | return !NSRunningApplication.runningApplicationsWithBundleIdentifier(iPicBundleIdentifier).isEmpty 19 | } 20 | 21 | static func launchiPic() -> NSError? { 22 | guard !isiPicRunning() else { 23 | return nil 24 | } 25 | 26 | do { 27 | let schemeURL = NSURL(string: iPicURLScheme)! 28 | try NSWorkspace.sharedWorkspace().openURL(schemeURL, options: .WithoutActivation, configuration: [:]) 29 | return nil 30 | } catch { 31 | return iPicUploadError.iPicNotInstalled 32 | } 33 | } 34 | 35 | static func generateiPicImage(imageFilePath: String) -> (iPicImage?, NSError?) { 36 | guard let data = NSData(contentsOfFile: imageFilePath) else { 37 | return (nil, iPicUploadError.FileInaccessable) 38 | } 39 | 40 | guard let _ = NSImage(data: data) else { 41 | return (nil, iPicUploadError.InvalidImageFile) 42 | } 43 | 44 | let image = iPicImage(imageFilePath: imageFilePath) 45 | image.imageData = data 46 | 47 | return (image, nil) 48 | } 49 | 50 | static func generateiPicImage(image: NSImage) -> (iPicImage?, NSError?) { 51 | guard let imageData = imageDataOf(image, type: .NSJPEGFileType) else { 52 | return (nil, iPicUploadError.Unknown) // Should not happen 53 | } 54 | 55 | let image = iPicImage(imageData: imageData) 56 | 57 | return (image, nil) 58 | } 59 | 60 | static public func generateImageDataListFrom(pasteboard: NSPasteboard) -> [NSData] { 61 | var imageDataList = [NSData]() 62 | 63 | if let pasteboardItems = pasteboard.pasteboardItems { 64 | for pasteboardItem in pasteboardItems { 65 | if let imageData = generateImageDataFrom(pasteboardItem) { 66 | imageDataList.append(imageData) 67 | } 68 | } 69 | } 70 | 71 | return imageDataList 72 | } 73 | 74 | static private func generateImageDataFrom(pasteboardItem: NSPasteboardItem) -> NSData? { 75 | for type in pasteboardItem.types { 76 | if let data = pasteboardItem.dataForType(type) { 77 | if type == String(kUTTypeFileURL) { 78 | let url = NSURL(dataRepresentation: data, relativeToURL: nil) 79 | if let imageData = NSData(contentsOfURL: url), _ = NSImage(data: imageData) { 80 | return imageData 81 | } 82 | 83 | } else if let _ = NSImage(data: data) { 84 | return data 85 | } 86 | } 87 | } 88 | 89 | return nil 90 | } 91 | 92 | static func imageDataOf(image: NSImage, type: NSBitmapImageFileType) -> NSData? { 93 | guard let imageData = image.TIFFRepresentation else { 94 | return nil 95 | } 96 | 97 | if type == NSBitmapImageFileType.NSTIFFFileType { 98 | return imageData 99 | } 100 | 101 | guard let imageRep = NSBitmapImageRep(data: imageData) else { 102 | return nil 103 | } 104 | 105 | return imageRep.representationUsingType(type, properties: [:]) 106 | } 107 | 108 | static func delay(delay:Double, closure:()->()) { 109 | dispatch_after( 110 | dispatch_time( 111 | DISPATCH_TIME_NOW, 112 | Int64(delay * Double(NSEC_PER_SEC)) 113 | ), 114 | dispatch_get_main_queue(), closure) 115 | } 116 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # iPic 2 | 3 | ![](https://farm8.staticflickr.com/7322/28018346695_f1461c7a09_o.jpg) 4 | 5 | iPic could automatically upload images and save Markdown links on macOS. 6 | 7 | - Upload images by drag & drop. 8 | - Upload images by services with shortcut [Command + U]. 9 | - Upload copied images with shortcut [Shift + Command + U]. 10 | - Support Imgur, Flickr, Amazon S3 and other image hosts. 11 | - Support image link of Markdown format. 12 | - [Video introduction](http://toolinbox.net/en/iPic/) 13 | 14 | [Download iPic](https://itunes.apple.com/app/id1101244278?ls=1&mt=12) and have a try. 15 | 16 | # iPicUploader 17 | 18 | iPic opens the ability to upload images. It means if your App also needs to upload images, no need to build from scratch. Just use iPicUploader, your App could also upload images to Imgur, Flickr, Amazon S3 and other image hosts. 19 | 20 | ## iPicUploader Usage 21 | 22 | Upload image file: 23 | 24 | ```swift 25 | let imageFilePath = "/Path/to/the/pic.jpg" 26 | 27 | iPic.uploadImage(imageFilePath, handler: { (imageLink, error) in 28 | if let imageLink = imageLink { 29 | // Image uploaded 30 | 31 | } else if let error = error { 32 | // Some error happened 33 | } 34 | }) 35 | 36 | ``` 37 | 38 | Upload image data: 39 | 40 | ```swift 41 | let imageFilePath = "/Path/to/the/pic.jpg" 42 | let imageData = NSData(contentsOfFile: imageFilePath)! 43 | 44 | iPic.uploadImage(imageData, handler: { (imageLink, error) in 45 | if let imageLink = imageLink { 46 | // Image uploaded 47 | 48 | } else if let error = error { 49 | // Some error happened 50 | } 51 | }) 52 | 53 | ``` 54 | 55 | Upload NSImage: 56 | 57 | ```swift 58 | let imageFilePath = "/Path/to/the/pic.jpg" 59 | let image = NSImage(contentsOfFile: imageFilePath) 60 | 61 | iPic.uploadImage(image, handler: { (imageLink, error) in 62 | if let imageLink = imageLink { 63 | // Image uploaded 64 | 65 | } else if let error = error { 66 | // Some error happened 67 | } 68 | }) 69 | 70 | ``` 71 | 72 | 73 | ## iPicUploader Example 74 | 75 | iPicUploader also includes a full example. You will feel easy to start. To run the example project, just clone current repository and open *iPicUploader.xcworkspace*. 76 | 77 | Note: 78 | 79 | - As the demo needs to upload images by iPic, you need to [download iPic](http://toolinbox.net/html/DownloadiPicWithService.html) at first. 80 | - No worry, you will also be guided to download iPic in the example. 81 | - The example already dealt with these cases: 82 | - If iPic wasn't installed, guide user to download. 83 | - If iPic wasn't running, launch iPic automatically. 84 | - If iPic is running but not compatible, guide user to download latest version. 85 | 86 | Now, let's have a look how the example upload images. 87 | 88 | ### 1. Upload Images by Drag & Drop 89 | 90 | ![](https://farm9.staticflickr.com/8085/29362952261_29d4282e7d_o.gif) 91 | 92 | As you can see, iPicUploader supports upload of multiple images at a time. 93 | 94 | ### 2. Upload Images by Select Images Files 95 | 96 | ![](https://farm9.staticflickr.com/8437/29408369616_bd961fc777_o.gif) 97 | 98 | ### 3. Upload Images by Copy Image and Paste 99 | 100 | ![](https://farm9.staticflickr.com/8533/29408372976_7b39f9898f_o.gif) 101 | 102 | Beside copy image files, you can also copy the image in other Apps to upload. 103 | 104 | ## Requirements 105 | 106 | As iPic runs on macOS 10.11 and newer version, iPicUploader also needs macOS 10.11+ 107 | 108 | ## Installation 109 | 110 | iPicUploader is available through [CocoaPods](http://cocoapods.org). To install 111 | it, simply add the following line to your Podfile: 112 | 113 | ```ruby 114 | pod "iPicUploader" 115 | ``` 116 | 117 | ## License 118 | 119 | iPicUploader is available under the MIT license. 120 | 121 | 122 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 12 | local source="${BUILT_PRODUCTS_DIR}/$1" 13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 15 | elif [ -r "$1" ]; then 16 | local source="$1" 17 | fi 18 | 19 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 20 | 21 | if [ -L "${source}" ]; then 22 | echo "Symlinked..." 23 | source="$(readlink "${source}")" 24 | fi 25 | 26 | # use filter instead of exclude so missing patterns dont' throw errors 27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 29 | 30 | local basename 31 | basename="$(basename -s .framework "$1")" 32 | binary="${destination}/${basename}.framework/${basename}" 33 | if ! [ -r "$binary" ]; then 34 | binary="${destination}/${basename}" 35 | fi 36 | 37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 39 | strip_invalid_archs "$binary" 40 | fi 41 | 42 | # Resign the code if required by the build settings to avoid unstable apps 43 | code_sign_if_enabled "${destination}/$(basename "$1")" 44 | 45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 47 | local swift_runtime_libs 48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 49 | for lib in $swift_runtime_libs; do 50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 52 | code_sign_if_enabled "${destination}/${lib}" 53 | done 54 | fi 55 | } 56 | 57 | # Signs a framework with the provided identity 58 | code_sign_if_enabled() { 59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 60 | # Use the current code_sign_identitiy 61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 62 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" 63 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" 64 | fi 65 | } 66 | 67 | # Strip invalid architectures 68 | strip_invalid_archs() { 69 | binary="$1" 70 | # Get architectures for current file 71 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 72 | stripped="" 73 | for arch in $archs; do 74 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 75 | # Strip non-valid architectures in-place 76 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 77 | stripped="$stripped $arch" 78 | fi 79 | done 80 | if [[ "$stripped" ]]; then 81 | echo "Stripped $binary of architectures:$stripped" 82 | fi 83 | } 84 | 85 | 86 | if [[ "$CONFIGURATION" == "Debug" ]]; then 87 | install_framework "$BUILT_PRODUCTS_DIR/iPicUploader/iPicUploader.framework" 88 | fi 89 | if [[ "$CONFIGURATION" == "Release" ]]; then 90 | install_framework "$BUILT_PRODUCTS_DIR/iPicUploader/iPicUploader.framework" 91 | fi 92 | -------------------------------------------------------------------------------- /iPicUploader/Classes/iPicPasteboardHelper.swift: -------------------------------------------------------------------------------- 1 | // 2 | // iPicPasteboardHelper.swift 3 | // iPic 4 | // 5 | // Created by Jason Zheng on 8/19/16. 6 | // Copyright © 2016 Jason Zheng. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | public typealias iPicPasteboardHandler = ((NSPasteboard) -> Void) 12 | 13 | public let iPicPasteboardName = "net.toolinbox.ipic.pasteboard" 14 | public let PasteboardTypeiPicImage = "net.toolinbox.ipic.pasteboard.iPicImage" 15 | public let PasteboardTypeiPicUploadResult = "net.toolinbox.ipic.pasteboard.iPicUploadResult" 16 | public let PasteboardTypeiPicUploaderVersion = "net.toolinbox.ipic.pasteboard.iPicUploaderVersion" 17 | public let PasteboardTypeiPicUploaderVersionResult = "net.toolinbox.ipic.pasteboard.iPicUploaderVersionResult" 18 | 19 | let iPicPasteboard = iPicPasteboardHelper.sharedInstance 20 | 21 | public class iPicPasteboardHelper { 22 | // Singleton 23 | static let sharedInstance = iPicPasteboardHelper() 24 | private init() {} 25 | 26 | private let pasteboard = NSPasteboard(name: iPicPasteboardName) 27 | 28 | private weak var pasteboardObservingTimer: NSTimer? 29 | private var pasteboardObservingTimerInterval: NSTimeInterval = 0.75 30 | private var pasteboardChangedCount = 0 31 | 32 | public var handler: iPicPasteboardHandler? 33 | 34 | // MARK: Public Method 35 | 36 | public func startObserving() { 37 | guard pasteboardObservingTimer == nil else { 38 | return 39 | } 40 | 41 | pasteboardObservingTimer = NSTimer.scheduledTimerWithTimeInterval( 42 | pasteboardObservingTimerInterval, 43 | target: self, 44 | selector: #selector(iPicPasteboardHelper.observePasteboard), 45 | userInfo: nil, 46 | repeats: true) 47 | pasteboardObservingTimer?.tolerance = pasteboardObservingTimerInterval * 0.3 48 | pasteboardObservingTimer?.fire() 49 | } 50 | 51 | public func stopObserving() { 52 | pasteboardObservingTimer?.invalidate() 53 | pasteboardObservingTimer = nil 54 | } 55 | 56 | public func writeiPicImage(image: iPicImage) -> Bool { 57 | clearPasteboardContents() 58 | 59 | let pasteboardItem = parseiPicImageToPasteboardItem(image) 60 | return pasteboard.writeObjects([pasteboardItem]) 61 | } 62 | 63 | public func writeiPicUploaderVersionRequest() -> Bool { 64 | clearPasteboardContents() 65 | 66 | let pasteboardItem = NSPasteboardItem() 67 | pasteboardItem.setString("", forType: PasteboardTypeiPicUploaderVersion) 68 | 69 | return pasteboard.writeObjects([pasteboardItem]) 70 | } 71 | 72 | public func parseUploadResult(pasteboard: NSPasteboard) -> iPicUploadResult? { 73 | if let type = pasteboard.availableTypeFromArray([PasteboardTypeiPicUploadResult]) { 74 | if let data = pasteboard.dataForType(type) { 75 | NSKeyedUnarchiver.setClass(iPicUploadResult.self, forClassName: iPicUploadResult.sharedClassName) 76 | return NSKeyedUnarchiver.unarchiveObjectWithData(data) as? iPicUploadResult 77 | } 78 | } 79 | 80 | return nil 81 | } 82 | 83 | public func parseiPicUploaderVersionResult(pasteboard: NSPasteboard) -> Int? { 84 | if let versionString = pasteboard.stringForType(PasteboardTypeiPicUploaderVersionResult) { 85 | return Int(versionString) 86 | } 87 | 88 | return nil 89 | } 90 | 91 | // MARK: Helper 92 | 93 | @objc private func observePasteboard() { 94 | let count = pasteboard.changeCount 95 | if pasteboardChangedCount < count { 96 | pasteboardChangedCount = count 97 | 98 | handler?(pasteboard) 99 | } 100 | } 101 | 102 | private func parseiPicImageToPasteboardItem(image: iPicImage) -> NSPasteboardItem { 103 | let pasteboardItem = NSPasteboardItem() 104 | 105 | NSKeyedArchiver.setClassName(iPicImage.sharedClassName, forClass: iPicImage.self) 106 | let data = NSKeyedArchiver.archivedDataWithRootObject(image) 107 | pasteboardItem.setData(data, forType: PasteboardTypeiPicImage) 108 | 109 | return pasteboardItem 110 | } 111 | 112 | private func clearPasteboardContents() { 113 | pasteboard.clearContents() 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/MainWindowController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MainWindowController.swift 3 | // iPicUploadImageDemo 4 | // 5 | // Created by Jason Zheng on 8/31/16. 6 | // Copyright © 2016 Jason Zheng. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | import iPicUploader 11 | 12 | class MainWindowController: NSWindowController { 13 | 14 | @IBOutlet weak var imageView: iPicImageView! 15 | @IBOutlet var resultTextView: NSTextView! 16 | 17 | var uploadedIndex = 0 18 | 19 | override var windowNibName: String? { 20 | return "MainWindowController" 21 | } 22 | 23 | override func windowDidLoad() { 24 | super.windowDidLoad() 25 | 26 | imageView.state = .Normal 27 | imageView.uploadHandler = uploadHandler 28 | 29 | let attrString = NSAttributedString(string: NSLocalizedString("Image Links:", comment: "Title")) 30 | resultTextView.textStorage?.appendAttributedString(attrString) 31 | } 32 | 33 | // MARK: Action 34 | 35 | @IBAction func selectImageFiles(sender: NSButton!) { 36 | let openPanel = NSOpenPanel() 37 | openPanel.canChooseDirectories = false 38 | openPanel.canChooseFiles = true 39 | openPanel.allowsMultipleSelection = true 40 | openPanel.prompt = NSLocalizedString("Select", comment: "Open Panel") 41 | 42 | openPanel.beginSheetModalForWindow(self.window!) { (response) in 43 | if response == NSFileHandlingPanelOKButton { 44 | for url in openPanel.URLs { 45 | if let imageFilePath = url.path { 46 | NSOperationQueue.mainQueue().addOperationWithBlock { 47 | self.imageView.state = .Uploading 48 | } 49 | iPic.uploadImage(imageFilePath, handler: self.uploadHandler) 50 | } 51 | } 52 | } 53 | } 54 | } 55 | 56 | @IBAction func pasteImages(sender: NSButton!) { 57 | let imageList = iPicUploadHelper.generateImageDataListFrom(NSPasteboard.generalPasteboard()) 58 | guard !imageList.isEmpty else { 59 | let message = NSLocalizedString("Failed to Upload", comment: "Title") 60 | let information = "No image in pasteboard." 61 | self.showAlert(message, information: information) 62 | 63 | return 64 | } 65 | 66 | for imageData in imageList { 67 | self.imageView.state = .Uploading 68 | iPic.uploadImage(imageData, handler: uploadHandler) 69 | } 70 | } 71 | 72 | // MARK: Helper 73 | 74 | private func uploadHandler(imageLink: String?, error: NSError?) { 75 | NSOperationQueue.mainQueue().addOperationWithBlock { 76 | if let imageLink = imageLink { 77 | self.imageView.state = .Uploaded 78 | if let imageURL = NSURL(string: imageLink) { 79 | self.imageView.image = NSImage(contentsOfURL: imageURL) 80 | } 81 | 82 | self.appendLink(imageLink) 83 | 84 | } else if let error = error { 85 | self.imageView.state = .Normal 86 | 87 | let message = NSLocalizedString("Failed to Upload", comment: "Title") 88 | let information = error.localizedDescription 89 | 90 | if error == iPicUploadError.iPicNotInstalled || error == iPicUploadError.iPicIncompatible { 91 | let alert = NSAlert() 92 | alert.messageText = message 93 | alert.informativeText = information 94 | 95 | alert.addButtonWithTitle(NSLocalizedString("Download iPic", comment: "Title")) 96 | alert.addButtonWithTitle(NSLocalizedString("Cancel", comment: "Title")) 97 | 98 | alert.beginSheetModalForWindow(self.window!, completionHandler: { (response) in 99 | if response == NSAlertFirstButtonReturn { 100 | if let url = NSURL(string: iPic.iPicDownloadLink) { 101 | NSWorkspace.sharedWorkspace().openURL(url) 102 | } 103 | } 104 | }) 105 | } else { 106 | self.showAlert(message, information: information) 107 | } 108 | } 109 | } 110 | } 111 | 112 | private func appendLink(link: String) { 113 | let fontAttr = [NSFontAttributeName: NSFont.systemFontOfSize(NSFont.systemFontSize() - 2)] 114 | let resultStr = NSMutableAttributedString(string: link, attributes: fontAttr) 115 | let attrs = [NSLinkAttributeName: NSString(string: link)] 116 | resultStr.addAttributes(attrs, range: NSRange(0.. "$RESOURCES_TO_COPY" 8 | 9 | XCASSET_FILES=() 10 | 11 | case "${TARGETED_DEVICE_FAMILY}" in 12 | 1,2) 13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 14 | ;; 15 | 1) 16 | TARGET_DEVICE_ARGS="--target-device iphone" 17 | ;; 18 | 2) 19 | TARGET_DEVICE_ARGS="--target-device ipad" 20 | ;; 21 | *) 22 | TARGET_DEVICE_ARGS="--target-device mac" 23 | ;; 24 | esac 25 | 26 | realpath() { 27 | DIRECTORY="$(cd "${1%/*}" && pwd)" 28 | FILENAME="${1##*/}" 29 | echo "$DIRECTORY/$FILENAME" 30 | } 31 | 32 | install_resource() 33 | { 34 | if [[ "$1" = /* ]] ; then 35 | RESOURCE_PATH="$1" 36 | else 37 | RESOURCE_PATH="${PODS_ROOT}/$1" 38 | fi 39 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 40 | cat << EOM 41 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 42 | EOM 43 | exit 1 44 | fi 45 | case $RESOURCE_PATH in 46 | *.storyboard) 47 | 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}" 48 | 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} 49 | ;; 50 | *.xib) 51 | 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}" 52 | 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} 53 | ;; 54 | *.framework) 55 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 56 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 57 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 58 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 59 | ;; 60 | *.xcdatamodel) 61 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 62 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 63 | ;; 64 | *.xcdatamodeld) 65 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 66 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 67 | ;; 68 | *.xcmappingmodel) 69 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 70 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 71 | ;; 72 | *.xcassets) 73 | ABSOLUTE_XCASSET_FILE=$(realpath "$RESOURCE_PATH") 74 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 75 | ;; 76 | *) 77 | echo "$RESOURCE_PATH" 78 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 79 | ;; 80 | esac 81 | } 82 | 83 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 84 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 85 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 86 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 87 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 88 | fi 89 | rm -f "$RESOURCES_TO_COPY" 90 | 91 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 92 | then 93 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 94 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 95 | while read line; do 96 | if [[ $line != "`realpath $PODS_ROOT`*" ]]; then 97 | XCASSET_FILES+=("$line") 98 | fi 99 | done <<<"$OTHER_XCASSETS" 100 | 101 | 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}" 102 | fi 103 | -------------------------------------------------------------------------------- /iPicUploader/Classes/iPicUploader.swift: -------------------------------------------------------------------------------- 1 | // 2 | // iPicUploader.swift 3 | // iPicUploadImageDemo 4 | // 5 | // Created by Jason Zheng on 8/31/16. 6 | // Copyright © 2016 Jason Zheng. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | public let iPic = iPicUploader.sharedInstance 12 | 13 | public class iPicUploader { 14 | // Singleton 15 | public static let sharedInstance = iPicUploader() 16 | private init() { 17 | iPicPasteboard.handler = dealWithUploadResult 18 | } 19 | 20 | public let version = 1 21 | private var versionIniPic: Int? 22 | 23 | private var pendingImages = [String: iPicImage]() 24 | private let pendingImagesLocker = NSRecursiveLock() 25 | 26 | private let uploadTimeoutSeconds: NSTimeInterval = 30 27 | private let requestVersionTimeoutSeconds: NSTimeInterval = 3 28 | 29 | // TODO Change it normal download link after latest iPic is online. 30 | public let iPicDownloadLink = "http://toolinbox.net/html/DownloadiPicWithService.html" 31 | 32 | // MARK: Public Method 33 | 34 | public func uploadImage(imageFilePath: String, handler: iPicUploadHandler) { 35 | 36 | let (theImage, error) = iPicUploadHelper.generateiPicImage(imageFilePath) 37 | guard let image = theImage else { 38 | handler(imageLink: nil, error: error) 39 | return 40 | } 41 | 42 | doUploadImage(image, handler: handler) 43 | } 44 | 45 | public func uploadImage(image: NSImage, handler: iPicUploadHandler) { 46 | 47 | let (theImage, error) = iPicUploadHelper.generateiPicImage(image) 48 | guard let image = theImage else { 49 | handler(imageLink: nil, error: error) 50 | return 51 | } 52 | 53 | doUploadImage(image, handler: handler) 54 | } 55 | 56 | public func uploadImage(imageData: NSData, handler: iPicUploadHandler) { 57 | let image = iPicImage(imageData: imageData) 58 | doUploadImage(image, handler: handler) 59 | } 60 | 61 | // MARK: Helper 62 | 63 | private func doUploadImage(image: iPicImage, handler: iPicUploadHandler) { 64 | 65 | // Launch iPic. 66 | if let error = iPicUploadHelper.launchiPic() { 67 | handler(imageLink: nil, error: error) 68 | return 69 | } 70 | 71 | // Store iPicImage with its handler. 72 | image.handler = handler 73 | lock { 74 | self.pendingImages[image.id] = image 75 | } 76 | 77 | // Start observing pasteboard. 78 | iPicPasteboard.startObserving() 79 | 80 | // Check iPicUploader version in iPic 81 | if let versionIniPic = versionIniPic { 82 | doUploadImage(image, handler: handler, versionIniPic: versionIniPic) 83 | 84 | } else { 85 | // Request iPicUploader version in iPic 86 | requestiPicUploaderVersionIniPic() 87 | 88 | // Remove iPicImage after timeout. 89 | iPicUploadHelper.delay(requestVersionTimeoutSeconds) { 90 | if let versionIniPic = self.versionIniPic { 91 | self.doUploadImage(image, handler: handler, versionIniPic: versionIniPic) 92 | 93 | } else { 94 | self.finishUploadImage(image.id, error: iPicUploadError.iPicIncompatible) 95 | } 96 | } 97 | } 98 | } 99 | 100 | private func doUploadImage(image: iPicImage, handler: iPicUploadHandler, versionIniPic: Int) { 101 | if versionIniPic >= version { 102 | // Start upload. 103 | uploadPendingImages() 104 | 105 | // Remove iPicImage after timeout. 106 | iPicUploadHelper.delay(uploadTimeoutSeconds) { 107 | self.finishUploadImage(image.id, error: iPicUploadError.TimeOut) 108 | } 109 | 110 | } else { 111 | self.finishUploadImage(image.id, error: iPicUploadError.iPicIncompatible) 112 | } 113 | } 114 | 115 | private func uploadPendingImages() { 116 | var image: iPicImage? 117 | 118 | lock { 119 | if let (_, pendingImage) = self.pendingImages.first { 120 | image = pendingImage 121 | } 122 | } 123 | 124 | if let image = image { 125 | iPicPasteboard.writeiPicImage(image) 126 | } 127 | } 128 | 129 | private func finishUploadImage(id: String, error: NSError) { 130 | let uploadResult = iPicUploadResult(imageLink: nil, error: error) 131 | uploadResult.id = id 132 | finishUploadImage(uploadResult) 133 | } 134 | 135 | private func finishUploadImage(uploadResult: iPicUploadResult) { 136 | var image: iPicImage? 137 | var hasNoPendingImages = false 138 | 139 | lock { 140 | image = self.pendingImages[uploadResult.id] 141 | 142 | self.pendingImages[uploadResult.id] = nil 143 | hasNoPendingImages = self.pendingImages.isEmpty 144 | } 145 | 146 | // Callback the handler. 147 | if image != nil { 148 | image?.handler?(imageLink: uploadResult.imageLink, error: uploadResult.error) 149 | } 150 | 151 | if hasNoPendingImages { 152 | // Stop pasteboard observing if has not pending images. 153 | iPicPasteboard.stopObserving() 154 | } else { 155 | // Continue to upload other pending images. 156 | uploadPendingImages() 157 | } 158 | } 159 | 160 | private func dealWithUploadResult(pasteboard: NSPasteboard) { 161 | if let uploadResult = iPicPasteboard.parseUploadResult(pasteboard) { 162 | finishUploadImage(uploadResult) 163 | } else if let version = iPicPasteboard.parseiPicUploaderVersionResult(pasteboard) { 164 | versionIniPic = version 165 | } 166 | } 167 | 168 | private func requestiPicUploaderVersionIniPic() { 169 | iPicPasteboard.writeiPicUploaderVersionRequest() 170 | } 171 | 172 | private func lock(closure:()->()) { 173 | pendingImagesLocker.lock() 174 | closure() 175 | pendingImagesLocker.unlock() 176 | } 177 | } -------------------------------------------------------------------------------- /Example/iPicUploaderExample/MainWindowController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 53 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 89 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | -------------------------------------------------------------------------------- /Example/iPicUploader.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 472FEE059EC9679BEA6D0D8D /* Pods_iPicUploaderExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A774072AA871C7B3C4A7EA04 /* Pods_iPicUploaderExample.framework */; }; 11 | 96402E371D79629B008E5256 /* Pods_iPicUploaderExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96402E361D79629B008E5256 /* Pods_iPicUploaderExample.framework */; }; 12 | 967DD9871D7BCAC800844689 /* iPicImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 967DD9861D7BCAC800844689 /* iPicImageView.swift */; }; 13 | 968A23EE1D7812B30024A923 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 968A23ED1D7812B30024A923 /* AppDelegate.swift */; }; 14 | 968A23F01D7812B30024A923 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 968A23EF1D7812B30024A923 /* Assets.xcassets */; }; 15 | 968A23F31D7812B30024A923 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 968A23F11D7812B30024A923 /* MainMenu.xib */; }; 16 | 968A23FA1D7813470024A923 /* MainWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 968A23F81D7813470024A923 /* MainWindowController.swift */; }; 17 | 968A23FB1D7813470024A923 /* MainWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 968A23F91D7813470024A923 /* MainWindowController.xib */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXFileReference section */ 21 | 0DA43568D10A5CF646121DFC /* iPicUploader.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = iPicUploader.podspec; path = ../iPicUploader.podspec; sourceTree = ""; }; 22 | 41B69D21F86BAD4FC9B0207C /* Pods-iPicUploader_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iPicUploader_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-iPicUploader_Tests/Pods-iPicUploader_Tests.release.xcconfig"; sourceTree = ""; }; 23 | 52DEF03819EB113379CEC352 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 24 | 5DEAC66BA4EE5B8F92151772 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 25 | 602ED34BF9D06E5D4C48D645 /* Pods-iPicUploaderExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iPicUploaderExample.debug.xcconfig"; path = "Pods/Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample.debug.xcconfig"; sourceTree = ""; }; 26 | 7713B8BC4B035FAADBF02F93 /* Pods-iPicUploaderExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iPicUploaderExample.release.xcconfig"; path = "Pods/Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample.release.xcconfig"; sourceTree = ""; }; 27 | 8DC419D392221451B9803D18 /* Pods_iPicUploader_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iPicUploader_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 28 | 96402E311D796280008E5256 /* iPicUploader.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iPicUploader.framework; path = "../../../../../../BigData/XCode/DerivedData/iPicUploader-bfkiawblvsvrpxfhpmpcrdctabuu/Build/Products/Debug/iPicUploader/iPicUploader.framework"; sourceTree = ""; }; 29 | 96402E361D79629B008E5256 /* Pods_iPicUploaderExample.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Pods_iPicUploaderExample.framework; path = "../../../../../../BigData/XCode/DerivedData/iPicUploader-bfkiawblvsvrpxfhpmpcrdctabuu/Build/Products/Debug/Pods_iPicUploaderExample.framework"; sourceTree = ""; }; 30 | 967DD9301D7ACD2E00844689 /* iPicUploaderExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = iPicUploaderExample.entitlements; sourceTree = ""; }; 31 | 967DD9861D7BCAC800844689 /* iPicImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = iPicImageView.swift; sourceTree = ""; }; 32 | 968A23EB1D7812B30024A923 /* iPicUploaderExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPicUploaderExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 33 | 968A23ED1D7812B30024A923 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 34 | 968A23EF1D7812B30024A923 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 35 | 968A23F21D7812B30024A923 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 36 | 968A23F41D7812B30024A923 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 37 | 968A23F81D7813470024A923 /* MainWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainWindowController.swift; sourceTree = ""; }; 38 | 968A23F91D7813470024A923 /* MainWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainWindowController.xib; sourceTree = ""; }; 39 | 968A24061D7819C70024A923 /* iPicUploader.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iPicUploader.framework; path = "Pods/../build/Debug-iphoneos/iPicUploader/iPicUploader.framework"; sourceTree = ""; }; 40 | 968A243F1D7822F90024A923 /* Pods_iPicUploaderExample.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Pods_iPicUploaderExample.framework; path = Pods/../build/Debug/Pods_iPicUploaderExample.framework; sourceTree = ""; }; 41 | A774072AA871C7B3C4A7EA04 /* Pods_iPicUploaderExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iPicUploaderExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 42 | FD98DCBCCB7F276E6F7DFBB4 /* Pods-iPicUploader_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iPicUploader_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-iPicUploader_Tests/Pods-iPicUploader_Tests.debug.xcconfig"; sourceTree = ""; }; 43 | /* End PBXFileReference section */ 44 | 45 | /* Begin PBXFrameworksBuildPhase section */ 46 | 968A23E81D7812B30024A923 /* Frameworks */ = { 47 | isa = PBXFrameworksBuildPhase; 48 | buildActionMask = 2147483647; 49 | files = ( 50 | 96402E371D79629B008E5256 /* Pods_iPicUploaderExample.framework in Frameworks */, 51 | 472FEE059EC9679BEA6D0D8D /* Pods_iPicUploaderExample.framework in Frameworks */, 52 | ); 53 | runOnlyForDeploymentPostprocessing = 0; 54 | }; 55 | /* End PBXFrameworksBuildPhase section */ 56 | 57 | /* Begin PBXGroup section */ 58 | 607FACC71AFB9204008FA782 = { 59 | isa = PBXGroup; 60 | children = ( 61 | 968A23EC1D7812B30024A923 /* iPicUploaderExample */, 62 | 607FACF51AFB993E008FA782 /* Podspec Metadata */, 63 | 607FACD11AFB9204008FA782 /* Products */, 64 | B3E1EF5DE2959120977B5C0D /* Pods */, 65 | A323D05D5D9A451A99A62C33 /* Frameworks */, 66 | ); 67 | sourceTree = ""; 68 | }; 69 | 607FACD11AFB9204008FA782 /* Products */ = { 70 | isa = PBXGroup; 71 | children = ( 72 | 968A23EB1D7812B30024A923 /* iPicUploaderExample.app */, 73 | ); 74 | name = Products; 75 | sourceTree = ""; 76 | }; 77 | 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { 78 | isa = PBXGroup; 79 | children = ( 80 | 0DA43568D10A5CF646121DFC /* iPicUploader.podspec */, 81 | 5DEAC66BA4EE5B8F92151772 /* README.md */, 82 | 52DEF03819EB113379CEC352 /* LICENSE */, 83 | ); 84 | name = "Podspec Metadata"; 85 | sourceTree = ""; 86 | }; 87 | 967DD9311D7ACEB600844689 /* Resources */ = { 88 | isa = PBXGroup; 89 | children = ( 90 | 968A23EF1D7812B30024A923 /* Assets.xcassets */, 91 | 968A23F11D7812B30024A923 /* MainMenu.xib */, 92 | 968A23F41D7812B30024A923 /* Info.plist */, 93 | 967DD9301D7ACD2E00844689 /* iPicUploaderExample.entitlements */, 94 | ); 95 | name = Resources; 96 | sourceTree = ""; 97 | }; 98 | 968A23EC1D7812B30024A923 /* iPicUploaderExample */ = { 99 | isa = PBXGroup; 100 | children = ( 101 | 967DD9861D7BCAC800844689 /* iPicImageView.swift */, 102 | 968A23F81D7813470024A923 /* MainWindowController.swift */, 103 | 968A23F91D7813470024A923 /* MainWindowController.xib */, 104 | 968A23ED1D7812B30024A923 /* AppDelegate.swift */, 105 | 967DD9311D7ACEB600844689 /* Resources */, 106 | ); 107 | path = iPicUploaderExample; 108 | sourceTree = ""; 109 | }; 110 | A323D05D5D9A451A99A62C33 /* Frameworks */ = { 111 | isa = PBXGroup; 112 | children = ( 113 | 96402E361D79629B008E5256 /* Pods_iPicUploaderExample.framework */, 114 | 96402E311D796280008E5256 /* iPicUploader.framework */, 115 | 968A243F1D7822F90024A923 /* Pods_iPicUploaderExample.framework */, 116 | 968A24061D7819C70024A923 /* iPicUploader.framework */, 117 | 8DC419D392221451B9803D18 /* Pods_iPicUploader_Tests.framework */, 118 | A774072AA871C7B3C4A7EA04 /* Pods_iPicUploaderExample.framework */, 119 | ); 120 | name = Frameworks; 121 | sourceTree = ""; 122 | }; 123 | B3E1EF5DE2959120977B5C0D /* Pods */ = { 124 | isa = PBXGroup; 125 | children = ( 126 | FD98DCBCCB7F276E6F7DFBB4 /* Pods-iPicUploader_Tests.debug.xcconfig */, 127 | 41B69D21F86BAD4FC9B0207C /* Pods-iPicUploader_Tests.release.xcconfig */, 128 | 602ED34BF9D06E5D4C48D645 /* Pods-iPicUploaderExample.debug.xcconfig */, 129 | 7713B8BC4B035FAADBF02F93 /* Pods-iPicUploaderExample.release.xcconfig */, 130 | ); 131 | name = Pods; 132 | sourceTree = ""; 133 | }; 134 | /* End PBXGroup section */ 135 | 136 | /* Begin PBXNativeTarget section */ 137 | 968A23EA1D7812B30024A923 /* iPicUploaderExample */ = { 138 | isa = PBXNativeTarget; 139 | buildConfigurationList = 968A23F71D7812B30024A923 /* Build configuration list for PBXNativeTarget "iPicUploaderExample" */; 140 | buildPhases = ( 141 | FA9A559DDDA8486C3BACFCB5 /* [CP] Check Pods Manifest.lock */, 142 | 968A23E71D7812B30024A923 /* Sources */, 143 | 968A23E81D7812B30024A923 /* Frameworks */, 144 | 968A23E91D7812B30024A923 /* Resources */, 145 | E9E570F1AA055B20683A61EB /* [CP] Embed Pods Frameworks */, 146 | B721DDFEF5256D7FBA704E2F /* [CP] Copy Pods Resources */, 147 | ); 148 | buildRules = ( 149 | ); 150 | dependencies = ( 151 | ); 152 | name = iPicUploaderExample; 153 | productName = iPicUploaderExample; 154 | productReference = 968A23EB1D7812B30024A923 /* iPicUploaderExample.app */; 155 | productType = "com.apple.product-type.application"; 156 | }; 157 | /* End PBXNativeTarget section */ 158 | 159 | /* Begin PBXProject section */ 160 | 607FACC81AFB9204008FA782 /* Project object */ = { 161 | isa = PBXProject; 162 | attributes = { 163 | LastSwiftUpdateCheck = 0730; 164 | LastUpgradeCheck = 0720; 165 | ORGANIZATIONNAME = CocoaPods; 166 | TargetAttributes = { 167 | 968A23EA1D7812B30024A923 = { 168 | CreatedOnToolsVersion = 7.3; 169 | SystemCapabilities = { 170 | com.apple.Sandbox = { 171 | enabled = 1; 172 | }; 173 | }; 174 | }; 175 | }; 176 | }; 177 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "iPicUploader" */; 178 | compatibilityVersion = "Xcode 3.2"; 179 | developmentRegion = English; 180 | hasScannedForEncodings = 0; 181 | knownRegions = ( 182 | en, 183 | Base, 184 | ); 185 | mainGroup = 607FACC71AFB9204008FA782; 186 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */; 187 | projectDirPath = ""; 188 | projectRoot = ""; 189 | targets = ( 190 | 968A23EA1D7812B30024A923 /* iPicUploaderExample */, 191 | ); 192 | }; 193 | /* End PBXProject section */ 194 | 195 | /* Begin PBXResourcesBuildPhase section */ 196 | 968A23E91D7812B30024A923 /* Resources */ = { 197 | isa = PBXResourcesBuildPhase; 198 | buildActionMask = 2147483647; 199 | files = ( 200 | 968A23F01D7812B30024A923 /* Assets.xcassets in Resources */, 201 | 968A23FB1D7813470024A923 /* MainWindowController.xib in Resources */, 202 | 968A23F31D7812B30024A923 /* MainMenu.xib in Resources */, 203 | ); 204 | runOnlyForDeploymentPostprocessing = 0; 205 | }; 206 | /* End PBXResourcesBuildPhase section */ 207 | 208 | /* Begin PBXShellScriptBuildPhase section */ 209 | B721DDFEF5256D7FBA704E2F /* [CP] Copy Pods Resources */ = { 210 | isa = PBXShellScriptBuildPhase; 211 | buildActionMask = 2147483647; 212 | files = ( 213 | ); 214 | inputPaths = ( 215 | ); 216 | name = "[CP] Copy Pods Resources"; 217 | outputPaths = ( 218 | ); 219 | runOnlyForDeploymentPostprocessing = 0; 220 | shellPath = /bin/sh; 221 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample-resources.sh\"\n"; 222 | showEnvVarsInLog = 0; 223 | }; 224 | E9E570F1AA055B20683A61EB /* [CP] Embed Pods Frameworks */ = { 225 | isa = PBXShellScriptBuildPhase; 226 | buildActionMask = 2147483647; 227 | files = ( 228 | ); 229 | inputPaths = ( 230 | ); 231 | name = "[CP] Embed Pods Frameworks"; 232 | outputPaths = ( 233 | ); 234 | runOnlyForDeploymentPostprocessing = 0; 235 | shellPath = /bin/sh; 236 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample-frameworks.sh\"\n"; 237 | showEnvVarsInLog = 0; 238 | }; 239 | FA9A559DDDA8486C3BACFCB5 /* [CP] Check Pods Manifest.lock */ = { 240 | isa = PBXShellScriptBuildPhase; 241 | buildActionMask = 2147483647; 242 | files = ( 243 | ); 244 | inputPaths = ( 245 | ); 246 | name = "[CP] Check Pods Manifest.lock"; 247 | outputPaths = ( 248 | ); 249 | runOnlyForDeploymentPostprocessing = 0; 250 | shellPath = /bin/sh; 251 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; 252 | showEnvVarsInLog = 0; 253 | }; 254 | /* End PBXShellScriptBuildPhase section */ 255 | 256 | /* Begin PBXSourcesBuildPhase section */ 257 | 968A23E71D7812B30024A923 /* Sources */ = { 258 | isa = PBXSourcesBuildPhase; 259 | buildActionMask = 2147483647; 260 | files = ( 261 | 968A23FA1D7813470024A923 /* MainWindowController.swift in Sources */, 262 | 967DD9871D7BCAC800844689 /* iPicImageView.swift in Sources */, 263 | 968A23EE1D7812B30024A923 /* AppDelegate.swift in Sources */, 264 | ); 265 | runOnlyForDeploymentPostprocessing = 0; 266 | }; 267 | /* End PBXSourcesBuildPhase section */ 268 | 269 | /* Begin PBXVariantGroup section */ 270 | 968A23F11D7812B30024A923 /* MainMenu.xib */ = { 271 | isa = PBXVariantGroup; 272 | children = ( 273 | 968A23F21D7812B30024A923 /* Base */, 274 | ); 275 | name = MainMenu.xib; 276 | sourceTree = ""; 277 | }; 278 | /* End PBXVariantGroup section */ 279 | 280 | /* Begin XCBuildConfiguration section */ 281 | 607FACED1AFB9204008FA782 /* Debug */ = { 282 | isa = XCBuildConfiguration; 283 | buildSettings = { 284 | ALWAYS_SEARCH_USER_PATHS = NO; 285 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 286 | CLANG_CXX_LIBRARY = "libc++"; 287 | CLANG_ENABLE_MODULES = YES; 288 | CLANG_ENABLE_OBJC_ARC = YES; 289 | CLANG_WARN_BOOL_CONVERSION = YES; 290 | CLANG_WARN_CONSTANT_CONVERSION = YES; 291 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 292 | CLANG_WARN_EMPTY_BODY = YES; 293 | CLANG_WARN_ENUM_CONVERSION = YES; 294 | CLANG_WARN_INT_CONVERSION = YES; 295 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 296 | CLANG_WARN_UNREACHABLE_CODE = YES; 297 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 298 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 299 | COPY_PHASE_STRIP = NO; 300 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 301 | ENABLE_STRICT_OBJC_MSGSEND = YES; 302 | ENABLE_TESTABILITY = YES; 303 | GCC_C_LANGUAGE_STANDARD = gnu99; 304 | GCC_DYNAMIC_NO_PIC = NO; 305 | GCC_NO_COMMON_BLOCKS = YES; 306 | GCC_OPTIMIZATION_LEVEL = 0; 307 | GCC_PREPROCESSOR_DEFINITIONS = ( 308 | "DEBUG=1", 309 | "$(inherited)", 310 | ); 311 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 312 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 313 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 314 | GCC_WARN_UNDECLARED_SELECTOR = YES; 315 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 316 | GCC_WARN_UNUSED_FUNCTION = YES; 317 | GCC_WARN_UNUSED_VARIABLE = YES; 318 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 319 | MTL_ENABLE_DEBUG_INFO = YES; 320 | ONLY_ACTIVE_ARCH = YES; 321 | SDKROOT = iphoneos; 322 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 323 | }; 324 | name = Debug; 325 | }; 326 | 607FACEE1AFB9204008FA782 /* Release */ = { 327 | isa = XCBuildConfiguration; 328 | buildSettings = { 329 | ALWAYS_SEARCH_USER_PATHS = NO; 330 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 331 | CLANG_CXX_LIBRARY = "libc++"; 332 | CLANG_ENABLE_MODULES = YES; 333 | CLANG_ENABLE_OBJC_ARC = YES; 334 | CLANG_WARN_BOOL_CONVERSION = YES; 335 | CLANG_WARN_CONSTANT_CONVERSION = YES; 336 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 337 | CLANG_WARN_EMPTY_BODY = YES; 338 | CLANG_WARN_ENUM_CONVERSION = YES; 339 | CLANG_WARN_INT_CONVERSION = YES; 340 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 341 | CLANG_WARN_UNREACHABLE_CODE = YES; 342 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 343 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 344 | COPY_PHASE_STRIP = NO; 345 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 346 | ENABLE_NS_ASSERTIONS = NO; 347 | ENABLE_STRICT_OBJC_MSGSEND = YES; 348 | GCC_C_LANGUAGE_STANDARD = gnu99; 349 | GCC_NO_COMMON_BLOCKS = YES; 350 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 351 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 352 | GCC_WARN_UNDECLARED_SELECTOR = YES; 353 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 354 | GCC_WARN_UNUSED_FUNCTION = YES; 355 | GCC_WARN_UNUSED_VARIABLE = YES; 356 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 357 | MTL_ENABLE_DEBUG_INFO = NO; 358 | SDKROOT = iphoneos; 359 | VALIDATE_PRODUCT = YES; 360 | }; 361 | name = Release; 362 | }; 363 | 968A23F51D7812B30024A923 /* Debug */ = { 364 | isa = XCBuildConfiguration; 365 | baseConfigurationReference = 602ED34BF9D06E5D4C48D645 /* Pods-iPicUploaderExample.debug.xcconfig */; 366 | buildSettings = { 367 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 368 | CLANG_ANALYZER_NONNULL = YES; 369 | CODE_SIGN_ENTITLEMENTS = iPicUploaderExample/iPicUploaderExample.entitlements; 370 | CODE_SIGN_IDENTITY = "-"; 371 | COMBINE_HIDPI_IMAGES = YES; 372 | DEBUG_INFORMATION_FORMAT = dwarf; 373 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 374 | INFOPLIST_FILE = iPicUploaderExample/Info.plist; 375 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; 376 | MACOSX_DEPLOYMENT_TARGET = 10.11; 377 | PRODUCT_BUNDLE_IDENTIFIER = net.toolinbox.iPicUploaderExample; 378 | PRODUCT_NAME = "$(TARGET_NAME)"; 379 | SDKROOT = macosx; 380 | }; 381 | name = Debug; 382 | }; 383 | 968A23F61D7812B30024A923 /* Release */ = { 384 | isa = XCBuildConfiguration; 385 | baseConfigurationReference = 7713B8BC4B035FAADBF02F93 /* Pods-iPicUploaderExample.release.xcconfig */; 386 | buildSettings = { 387 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 388 | CLANG_ANALYZER_NONNULL = YES; 389 | CODE_SIGN_ENTITLEMENTS = iPicUploaderExample/iPicUploaderExample.entitlements; 390 | CODE_SIGN_IDENTITY = "-"; 391 | COMBINE_HIDPI_IMAGES = YES; 392 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 393 | INFOPLIST_FILE = iPicUploaderExample/Info.plist; 394 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; 395 | MACOSX_DEPLOYMENT_TARGET = 10.11; 396 | PRODUCT_BUNDLE_IDENTIFIER = net.toolinbox.iPicUploaderExample; 397 | PRODUCT_NAME = "$(TARGET_NAME)"; 398 | SDKROOT = macosx; 399 | }; 400 | name = Release; 401 | }; 402 | /* End XCBuildConfiguration section */ 403 | 404 | /* Begin XCConfigurationList section */ 405 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "iPicUploader" */ = { 406 | isa = XCConfigurationList; 407 | buildConfigurations = ( 408 | 607FACED1AFB9204008FA782 /* Debug */, 409 | 607FACEE1AFB9204008FA782 /* Release */, 410 | ); 411 | defaultConfigurationIsVisible = 0; 412 | defaultConfigurationName = Release; 413 | }; 414 | 968A23F71D7812B30024A923 /* Build configuration list for PBXNativeTarget "iPicUploaderExample" */ = { 415 | isa = XCConfigurationList; 416 | buildConfigurations = ( 417 | 968A23F51D7812B30024A923 /* Debug */, 418 | 968A23F61D7812B30024A923 /* Release */, 419 | ); 420 | defaultConfigurationIsVisible = 0; 421 | defaultConfigurationName = Release; 422 | }; 423 | /* End XCConfigurationList section */ 424 | }; 425 | rootObject = 607FACC81AFB9204008FA782 /* Project object */; 426 | } 427 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 020ACBE03355F6CBC3A92F4CE38624CC /* iPicUploadResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10B42EA318C491893F0900443A2A0670 /* iPicUploadResult.swift */; }; 11 | 195FEDE6B749E03BCC160D32C0877ED1 /* Pods-iPicUploaderExample-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C98ABF7E90A3F61BFF6E72E8E53A3A23 /* Pods-iPicUploaderExample-dummy.m */; }; 12 | 1B4B7326F161C85DC96E7884EB44CAB9 /* iPicUploader-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 53AF51C505CF059A532A6864A0A6DA88 /* iPicUploader-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 13 | 312D5F3A72B20D8D87E408F1E70511AF /* Pods-iPicUploaderExample-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B8FD2E8EBDB4E6A09A76E826CA045F0 /* Pods-iPicUploaderExample-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 14 | 5631C0D0AE504368BB36AA74B51F3F26 /* iPicPasteboardHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC3B85543423F9699C26E86FB1E33DBD /* iPicPasteboardHelper.swift */; }; 15 | 6015FEE7AF444E0A3B338EFDD20E816A /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CA6EBC2E57D96052268211209D6AA52 /* Cocoa.framework */; }; 16 | 6D5C3D883B67B684097866DEEFFFF6AA /* iPicUploader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83F160A3C90D6FFB14F907CEE9ADDB06 /* iPicUploader.swift */; }; 17 | 71988728DECC7D6CA5051C9A7A94B4CA /* iPicUploader-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EE36716029DC30F8C00801C3066CDF6 /* iPicUploader-dummy.m */; }; 18 | 967DD9A81D7C054B00844689 /* iPicUploaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 967DD9A71D7C054B00844689 /* iPicUploaderTests.swift */; }; 19 | 967DD9AA1D7C054B00844689 /* iPicUploader.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D85A5F6E5087917F1E325E041A5E35AF /* iPicUploader.framework */; }; 20 | 967DD9B21D7C058D00844689 /* iPic.png in Resources */ = {isa = PBXBuildFile; fileRef = 967DD9B11D7C058D00844689 /* iPic.png */; }; 21 | 967DD9B71D7C059900844689 /* iPicImageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 967DD9B31D7C059900844689 /* iPicImageTests.swift */; }; 22 | 967DD9B81D7C059900844689 /* iPicUploadHelperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 967DD9B41D7C059900844689 /* iPicUploadHelperTests.swift */; }; 23 | 967DD9B91D7C059900844689 /* iPicUploadResultTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 967DD9B51D7C059900844689 /* iPicUploadResultTests.swift */; }; 24 | 967DD9BA1D7C059900844689 /* UnitTestsConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 967DD9B61D7C059900844689 /* UnitTestsConstants.swift */; }; 25 | 9C3985FDBA243E1B9DD7A2E517BDBD77 /* iPicImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FDC1765C999EABBA21DC67C556993B4 /* iPicImage.swift */; }; 26 | CAF87129F9EFCDD874C481BC48E99BCC /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CA6EBC2E57D96052268211209D6AA52 /* Cocoa.framework */; }; 27 | D8F21E0B9E1CF78E16E3A8B420C3F1BB /* iPicUploadHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7F5FAB53A39654AAF849EC746441E3B /* iPicUploadHelper.swift */; }; 28 | /* End PBXBuildFile section */ 29 | 30 | /* Begin PBXContainerItemProxy section */ 31 | 738F9D9052C2269BC2A4B66B5E323A18 /* PBXContainerItemProxy */ = { 32 | isa = PBXContainerItemProxy; 33 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 34 | proxyType = 1; 35 | remoteGlobalIDString = 05B7F7C75CFDAA8BAF32E04D548E3A7A; 36 | remoteInfo = iPicUploader; 37 | }; 38 | 967DD9AB1D7C054B00844689 /* PBXContainerItemProxy */ = { 39 | isa = PBXContainerItemProxy; 40 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 41 | proxyType = 1; 42 | remoteGlobalIDString = 05B7F7C75CFDAA8BAF32E04D548E3A7A; 43 | remoteInfo = iPicUploader; 44 | }; 45 | /* End PBXContainerItemProxy section */ 46 | 47 | /* Begin PBXFileReference section */ 48 | 10B42EA318C491893F0900443A2A0670 /* iPicUploadResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = iPicUploadResult.swift; sourceTree = ""; }; 49 | 13BBEC260DFEC059DF25801BDDDF55B3 /* Pods-iPicUploaderExample.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-iPicUploaderExample.modulemap"; sourceTree = ""; }; 50 | 1CA6EBC2E57D96052268211209D6AA52 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; }; 51 | 205313F3332997F867D86645050C748E /* Pods-iPicUploaderExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-iPicUploaderExample.release.xcconfig"; sourceTree = ""; }; 52 | 35CFA2FF1FA094928C9406C2F947C014 /* iPicUploader.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = iPicUploader.modulemap; sourceTree = ""; }; 53 | 3A660CA2D1E60D83AEDA5E31AC602AAD /* Pods-iPicUploaderExample-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-iPicUploaderExample-resources.sh"; sourceTree = ""; }; 54 | 3FDC1765C999EABBA21DC67C556993B4 /* iPicImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = iPicImage.swift; sourceTree = ""; }; 55 | 4EE36716029DC30F8C00801C3066CDF6 /* iPicUploader-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "iPicUploader-dummy.m"; sourceTree = ""; }; 56 | 53AF51C505CF059A532A6864A0A6DA88 /* iPicUploader-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "iPicUploader-umbrella.h"; sourceTree = ""; }; 57 | 650A536FA73DBFEE64F1ECA14CD7F76E /* Pods-iPicUploaderExample-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-iPicUploaderExample-acknowledgements.plist"; sourceTree = ""; }; 58 | 6B8FD2E8EBDB4E6A09A76E826CA045F0 /* Pods-iPicUploaderExample-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-iPicUploaderExample-umbrella.h"; sourceTree = ""; }; 59 | 73686E5028A3488C8AAC224DD9F32E4F /* Pods-iPicUploaderExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-iPicUploaderExample.debug.xcconfig"; sourceTree = ""; }; 60 | 7D2CEB8D01ECB51A0F8DF56E738997DC /* Pods-iPicUploaderExample-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-iPicUploaderExample-acknowledgements.markdown"; sourceTree = ""; }; 61 | 83F160A3C90D6FFB14F907CEE9ADDB06 /* iPicUploader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = iPicUploader.swift; sourceTree = ""; }; 62 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 63 | 967DD9A51D7C054B00844689 /* iPicUploaderTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iPicUploaderTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 64 | 967DD9A71D7C054B00844689 /* iPicUploaderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iPicUploaderTests.swift; sourceTree = ""; }; 65 | 967DD9A91D7C054B00844689 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 66 | 967DD9B11D7C058D00844689 /* iPic.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = iPic.png; sourceTree = ""; }; 67 | 967DD9B31D7C059900844689 /* iPicImageTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = iPicImageTests.swift; path = iPicUploaderTests/iPicImageTests.swift; sourceTree = SOURCE_ROOT; }; 68 | 967DD9B41D7C059900844689 /* iPicUploadHelperTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = iPicUploadHelperTests.swift; path = iPicUploaderTests/iPicUploadHelperTests.swift; sourceTree = SOURCE_ROOT; }; 69 | 967DD9B51D7C059900844689 /* iPicUploadResultTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = iPicUploadResultTests.swift; path = iPicUploaderTests/iPicUploadResultTests.swift; sourceTree = SOURCE_ROOT; }; 70 | 967DD9B61D7C059900844689 /* UnitTestsConstants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UnitTestsConstants.swift; path = iPicUploaderTests/UnitTestsConstants.swift; sourceTree = SOURCE_ROOT; }; 71 | A6D0DCF86077F1C45CC553605670A3AF /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 72 | A7F5FAB53A39654AAF849EC746441E3B /* iPicUploadHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = iPicUploadHelper.swift; sourceTree = ""; }; 73 | BC3B85543423F9699C26E86FB1E33DBD /* iPicPasteboardHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = iPicPasteboardHelper.swift; sourceTree = ""; }; 74 | C98ABF7E90A3F61BFF6E72E8E53A3A23 /* Pods-iPicUploaderExample-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-iPicUploaderExample-dummy.m"; sourceTree = ""; }; 75 | D225E0E6D8E6E9A6CC1FD8630457D35C /* Pods-iPicUploaderExample-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-iPicUploaderExample-frameworks.sh"; sourceTree = ""; }; 76 | D85A5F6E5087917F1E325E041A5E35AF /* iPicUploader.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = iPicUploader.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 77 | D96D0BC9103D2A3A134FA10E244FB260 /* Pods_iPicUploaderExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iPicUploaderExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 78 | DD06A8354E754C44FD8C33083D89CE07 /* iPicUploader.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = iPicUploader.xcconfig; sourceTree = ""; }; 79 | DF57DC475DA52C0460578ED7069533E0 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 80 | E9E52521CB7A016ACE312200866F05F2 /* iPicUploader-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "iPicUploader-prefix.pch"; sourceTree = ""; }; 81 | /* End PBXFileReference section */ 82 | 83 | /* Begin PBXFrameworksBuildPhase section */ 84 | 0030041839B6451B16D57138E60AAE0B /* Frameworks */ = { 85 | isa = PBXFrameworksBuildPhase; 86 | buildActionMask = 2147483647; 87 | files = ( 88 | 6015FEE7AF444E0A3B338EFDD20E816A /* Cocoa.framework in Frameworks */, 89 | ); 90 | runOnlyForDeploymentPostprocessing = 0; 91 | }; 92 | 08C4E747466680898501FFE4B77E9353 /* Frameworks */ = { 93 | isa = PBXFrameworksBuildPhase; 94 | buildActionMask = 2147483647; 95 | files = ( 96 | CAF87129F9EFCDD874C481BC48E99BCC /* Cocoa.framework in Frameworks */, 97 | ); 98 | runOnlyForDeploymentPostprocessing = 0; 99 | }; 100 | 967DD9A21D7C054B00844689 /* Frameworks */ = { 101 | isa = PBXFrameworksBuildPhase; 102 | buildActionMask = 2147483647; 103 | files = ( 104 | 967DD9AA1D7C054B00844689 /* iPicUploader.framework in Frameworks */, 105 | ); 106 | runOnlyForDeploymentPostprocessing = 0; 107 | }; 108 | /* End PBXFrameworksBuildPhase section */ 109 | 110 | /* Begin PBXGroup section */ 111 | 0CA9237C481B5367C77554398DAC953C /* Support Files */ = { 112 | isa = PBXGroup; 113 | children = ( 114 | A6D0DCF86077F1C45CC553605670A3AF /* Info.plist */, 115 | 35CFA2FF1FA094928C9406C2F947C014 /* iPicUploader.modulemap */, 116 | DD06A8354E754C44FD8C33083D89CE07 /* iPicUploader.xcconfig */, 117 | 4EE36716029DC30F8C00801C3066CDF6 /* iPicUploader-dummy.m */, 118 | E9E52521CB7A016ACE312200866F05F2 /* iPicUploader-prefix.pch */, 119 | 53AF51C505CF059A532A6864A0A6DA88 /* iPicUploader-umbrella.h */, 120 | ); 121 | name = "Support Files"; 122 | path = "Example/Pods/Target Support Files/iPicUploader"; 123 | sourceTree = ""; 124 | }; 125 | 1FC73D032E4C351F42C3C3CF1730DD3D /* Pods-iPicUploaderExample */ = { 126 | isa = PBXGroup; 127 | children = ( 128 | DF57DC475DA52C0460578ED7069533E0 /* Info.plist */, 129 | 13BBEC260DFEC059DF25801BDDDF55B3 /* Pods-iPicUploaderExample.modulemap */, 130 | 7D2CEB8D01ECB51A0F8DF56E738997DC /* Pods-iPicUploaderExample-acknowledgements.markdown */, 131 | 650A536FA73DBFEE64F1ECA14CD7F76E /* Pods-iPicUploaderExample-acknowledgements.plist */, 132 | C98ABF7E90A3F61BFF6E72E8E53A3A23 /* Pods-iPicUploaderExample-dummy.m */, 133 | D225E0E6D8E6E9A6CC1FD8630457D35C /* Pods-iPicUploaderExample-frameworks.sh */, 134 | 3A660CA2D1E60D83AEDA5E31AC602AAD /* Pods-iPicUploaderExample-resources.sh */, 135 | 6B8FD2E8EBDB4E6A09A76E826CA045F0 /* Pods-iPicUploaderExample-umbrella.h */, 136 | 73686E5028A3488C8AAC224DD9F32E4F /* Pods-iPicUploaderExample.debug.xcconfig */, 137 | 205313F3332997F867D86645050C748E /* Pods-iPicUploaderExample.release.xcconfig */, 138 | ); 139 | name = "Pods-iPicUploaderExample"; 140 | path = "Target Support Files/Pods-iPicUploaderExample"; 141 | sourceTree = ""; 142 | }; 143 | 28C17CEF104526ACA07B6EEE217EC43E /* OS X */ = { 144 | isa = PBXGroup; 145 | children = ( 146 | 1CA6EBC2E57D96052268211209D6AA52 /* Cocoa.framework */, 147 | ); 148 | name = "OS X"; 149 | sourceTree = ""; 150 | }; 151 | 32E61614A9C71EB74B023017BA889128 /* Classes */ = { 152 | isa = PBXGroup; 153 | children = ( 154 | 3FDC1765C999EABBA21DC67C556993B4 /* iPicImage.swift */, 155 | BC3B85543423F9699C26E86FB1E33DBD /* iPicPasteboardHelper.swift */, 156 | 83F160A3C90D6FFB14F907CEE9ADDB06 /* iPicUploader.swift */, 157 | A7F5FAB53A39654AAF849EC746441E3B /* iPicUploadHelper.swift */, 158 | 10B42EA318C491893F0900443A2A0670 /* iPicUploadResult.swift */, 159 | ); 160 | path = Classes; 161 | sourceTree = ""; 162 | }; 163 | 39E9EE8210D861DFD82346C1F5EB7218 /* Frameworks */ = { 164 | isa = PBXGroup; 165 | children = ( 166 | 28C17CEF104526ACA07B6EEE217EC43E /* OS X */, 167 | ); 168 | name = Frameworks; 169 | sourceTree = ""; 170 | }; 171 | 512DC1CCD79E854E14D520CFECAA4A0F /* iPicUploader */ = { 172 | isa = PBXGroup; 173 | children = ( 174 | 8CB402E2B757562A91BFE92721E7C1B5 /* iPicUploader */, 175 | 0CA9237C481B5367C77554398DAC953C /* Support Files */, 176 | ); 177 | name = iPicUploader; 178 | path = ../..; 179 | sourceTree = ""; 180 | }; 181 | 7DB346D0F39D3F0E887471402A8071AB = { 182 | isa = PBXGroup; 183 | children = ( 184 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 185 | 8BD6619CD43C1AE999C2BDCABB64CE43 /* Development Pods */, 186 | 967DD9A61D7C054B00844689 /* iPicUploaderTests */, 187 | 39E9EE8210D861DFD82346C1F5EB7218 /* Frameworks */, 188 | D23C68AEA436E8ACF971982FAD40F1B4 /* Products */, 189 | CDEB7E9023119033449272C721B492B2 /* Targets Support Files */, 190 | ); 191 | sourceTree = ""; 192 | }; 193 | 8BD6619CD43C1AE999C2BDCABB64CE43 /* Development Pods */ = { 194 | isa = PBXGroup; 195 | children = ( 196 | 512DC1CCD79E854E14D520CFECAA4A0F /* iPicUploader */, 197 | ); 198 | name = "Development Pods"; 199 | sourceTree = ""; 200 | }; 201 | 8CB402E2B757562A91BFE92721E7C1B5 /* iPicUploader */ = { 202 | isa = PBXGroup; 203 | children = ( 204 | 32E61614A9C71EB74B023017BA889128 /* Classes */, 205 | ); 206 | path = iPicUploader; 207 | sourceTree = ""; 208 | }; 209 | 967DD9A61D7C054B00844689 /* iPicUploaderTests */ = { 210 | isa = PBXGroup; 211 | children = ( 212 | 967DD9B01D7C058D00844689 /* Resources */, 213 | 967DD9B31D7C059900844689 /* iPicImageTests.swift */, 214 | 967DD9A71D7C054B00844689 /* iPicUploaderTests.swift */, 215 | 967DD9B41D7C059900844689 /* iPicUploadHelperTests.swift */, 216 | 967DD9B51D7C059900844689 /* iPicUploadResultTests.swift */, 217 | 967DD9B61D7C059900844689 /* UnitTestsConstants.swift */, 218 | 967DD9A91D7C054B00844689 /* Info.plist */, 219 | ); 220 | path = iPicUploaderTests; 221 | sourceTree = ""; 222 | }; 223 | 967DD9B01D7C058D00844689 /* Resources */ = { 224 | isa = PBXGroup; 225 | children = ( 226 | 967DD9B11D7C058D00844689 /* iPic.png */, 227 | ); 228 | path = Resources; 229 | sourceTree = ""; 230 | }; 231 | CDEB7E9023119033449272C721B492B2 /* Targets Support Files */ = { 232 | isa = PBXGroup; 233 | children = ( 234 | 1FC73D032E4C351F42C3C3CF1730DD3D /* Pods-iPicUploaderExample */, 235 | ); 236 | name = "Targets Support Files"; 237 | sourceTree = ""; 238 | }; 239 | D23C68AEA436E8ACF971982FAD40F1B4 /* Products */ = { 240 | isa = PBXGroup; 241 | children = ( 242 | D85A5F6E5087917F1E325E041A5E35AF /* iPicUploader.framework */, 243 | D96D0BC9103D2A3A134FA10E244FB260 /* Pods_iPicUploaderExample.framework */, 244 | 967DD9A51D7C054B00844689 /* iPicUploaderTests.xctest */, 245 | ); 246 | name = Products; 247 | sourceTree = ""; 248 | }; 249 | /* End PBXGroup section */ 250 | 251 | /* Begin PBXHeadersBuildPhase section */ 252 | 914550B6FF6C9899CCCDF7676DE06C90 /* Headers */ = { 253 | isa = PBXHeadersBuildPhase; 254 | buildActionMask = 2147483647; 255 | files = ( 256 | 1B4B7326F161C85DC96E7884EB44CAB9 /* iPicUploader-umbrella.h in Headers */, 257 | ); 258 | runOnlyForDeploymentPostprocessing = 0; 259 | }; 260 | EF863E36E48FE60CE0AE611167CF6974 /* Headers */ = { 261 | isa = PBXHeadersBuildPhase; 262 | buildActionMask = 2147483647; 263 | files = ( 264 | 312D5F3A72B20D8D87E408F1E70511AF /* Pods-iPicUploaderExample-umbrella.h in Headers */, 265 | ); 266 | runOnlyForDeploymentPostprocessing = 0; 267 | }; 268 | /* End PBXHeadersBuildPhase section */ 269 | 270 | /* Begin PBXNativeTarget section */ 271 | 05B7F7C75CFDAA8BAF32E04D548E3A7A /* iPicUploader */ = { 272 | isa = PBXNativeTarget; 273 | buildConfigurationList = 17F1E7830122502D71E34A9CC639824F /* Build configuration list for PBXNativeTarget "iPicUploader" */; 274 | buildPhases = ( 275 | 7127F2A23360323DB6C1B747E13E3AB9 /* Sources */, 276 | 0030041839B6451B16D57138E60AAE0B /* Frameworks */, 277 | 914550B6FF6C9899CCCDF7676DE06C90 /* Headers */, 278 | ); 279 | buildRules = ( 280 | ); 281 | dependencies = ( 282 | ); 283 | name = iPicUploader; 284 | productName = iPicUploader; 285 | productReference = D85A5F6E5087917F1E325E041A5E35AF /* iPicUploader.framework */; 286 | productType = "com.apple.product-type.framework"; 287 | }; 288 | 8764F74149ABB60C0B994D09D5B1639A /* Pods-iPicUploaderExample */ = { 289 | isa = PBXNativeTarget; 290 | buildConfigurationList = 2000544414190B154DAC3D71829C1098 /* Build configuration list for PBXNativeTarget "Pods-iPicUploaderExample" */; 291 | buildPhases = ( 292 | 4DBD563DABD3946BEBD251D3B67F802A /* Sources */, 293 | 08C4E747466680898501FFE4B77E9353 /* Frameworks */, 294 | EF863E36E48FE60CE0AE611167CF6974 /* Headers */, 295 | ); 296 | buildRules = ( 297 | ); 298 | dependencies = ( 299 | B977F253EE9307722C4EB1DC729D029A /* PBXTargetDependency */, 300 | ); 301 | name = "Pods-iPicUploaderExample"; 302 | productName = "Pods-iPicUploaderExample"; 303 | productReference = D96D0BC9103D2A3A134FA10E244FB260 /* Pods_iPicUploaderExample.framework */; 304 | productType = "com.apple.product-type.framework"; 305 | }; 306 | 967DD9A41D7C054B00844689 /* iPicUploaderTests */ = { 307 | isa = PBXNativeTarget; 308 | buildConfigurationList = 967DD9AF1D7C054B00844689 /* Build configuration list for PBXNativeTarget "iPicUploaderTests" */; 309 | buildPhases = ( 310 | 967DD9A11D7C054B00844689 /* Sources */, 311 | 967DD9A21D7C054B00844689 /* Frameworks */, 312 | 967DD9A31D7C054B00844689 /* Resources */, 313 | ); 314 | buildRules = ( 315 | ); 316 | dependencies = ( 317 | 967DD9AC1D7C054B00844689 /* PBXTargetDependency */, 318 | ); 319 | name = iPicUploaderTests; 320 | productName = iPicUploaderTests; 321 | productReference = 967DD9A51D7C054B00844689 /* iPicUploaderTests.xctest */; 322 | productType = "com.apple.product-type.bundle.unit-test"; 323 | }; 324 | /* End PBXNativeTarget section */ 325 | 326 | /* Begin PBXProject section */ 327 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { 328 | isa = PBXProject; 329 | attributes = { 330 | LastSwiftUpdateCheck = 0730; 331 | LastUpgradeCheck = 0700; 332 | TargetAttributes = { 333 | 967DD9A41D7C054B00844689 = { 334 | CreatedOnToolsVersion = 7.3; 335 | }; 336 | }; 337 | }; 338 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; 339 | compatibilityVersion = "Xcode 3.2"; 340 | developmentRegion = English; 341 | hasScannedForEncodings = 0; 342 | knownRegions = ( 343 | en, 344 | ); 345 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB; 346 | productRefGroup = D23C68AEA436E8ACF971982FAD40F1B4 /* Products */; 347 | projectDirPath = ""; 348 | projectRoot = ""; 349 | targets = ( 350 | 05B7F7C75CFDAA8BAF32E04D548E3A7A /* iPicUploader */, 351 | 8764F74149ABB60C0B994D09D5B1639A /* Pods-iPicUploaderExample */, 352 | 967DD9A41D7C054B00844689 /* iPicUploaderTests */, 353 | ); 354 | }; 355 | /* End PBXProject section */ 356 | 357 | /* Begin PBXResourcesBuildPhase section */ 358 | 967DD9A31D7C054B00844689 /* Resources */ = { 359 | isa = PBXResourcesBuildPhase; 360 | buildActionMask = 2147483647; 361 | files = ( 362 | 967DD9B21D7C058D00844689 /* iPic.png in Resources */, 363 | ); 364 | runOnlyForDeploymentPostprocessing = 0; 365 | }; 366 | /* End PBXResourcesBuildPhase section */ 367 | 368 | /* Begin PBXSourcesBuildPhase section */ 369 | 4DBD563DABD3946BEBD251D3B67F802A /* Sources */ = { 370 | isa = PBXSourcesBuildPhase; 371 | buildActionMask = 2147483647; 372 | files = ( 373 | 195FEDE6B749E03BCC160D32C0877ED1 /* Pods-iPicUploaderExample-dummy.m in Sources */, 374 | ); 375 | runOnlyForDeploymentPostprocessing = 0; 376 | }; 377 | 7127F2A23360323DB6C1B747E13E3AB9 /* Sources */ = { 378 | isa = PBXSourcesBuildPhase; 379 | buildActionMask = 2147483647; 380 | files = ( 381 | 9C3985FDBA243E1B9DD7A2E517BDBD77 /* iPicImage.swift in Sources */, 382 | 5631C0D0AE504368BB36AA74B51F3F26 /* iPicPasteboardHelper.swift in Sources */, 383 | 71988728DECC7D6CA5051C9A7A94B4CA /* iPicUploader-dummy.m in Sources */, 384 | 6D5C3D883B67B684097866DEEFFFF6AA /* iPicUploader.swift in Sources */, 385 | D8F21E0B9E1CF78E16E3A8B420C3F1BB /* iPicUploadHelper.swift in Sources */, 386 | 020ACBE03355F6CBC3A92F4CE38624CC /* iPicUploadResult.swift in Sources */, 387 | ); 388 | runOnlyForDeploymentPostprocessing = 0; 389 | }; 390 | 967DD9A11D7C054B00844689 /* Sources */ = { 391 | isa = PBXSourcesBuildPhase; 392 | buildActionMask = 2147483647; 393 | files = ( 394 | 967DD9B71D7C059900844689 /* iPicImageTests.swift in Sources */, 395 | 967DD9BA1D7C059900844689 /* UnitTestsConstants.swift in Sources */, 396 | 967DD9B81D7C059900844689 /* iPicUploadHelperTests.swift in Sources */, 397 | 967DD9B91D7C059900844689 /* iPicUploadResultTests.swift in Sources */, 398 | 967DD9A81D7C054B00844689 /* iPicUploaderTests.swift in Sources */, 399 | ); 400 | runOnlyForDeploymentPostprocessing = 0; 401 | }; 402 | /* End PBXSourcesBuildPhase section */ 403 | 404 | /* Begin PBXTargetDependency section */ 405 | 967DD9AC1D7C054B00844689 /* PBXTargetDependency */ = { 406 | isa = PBXTargetDependency; 407 | target = 05B7F7C75CFDAA8BAF32E04D548E3A7A /* iPicUploader */; 408 | targetProxy = 967DD9AB1D7C054B00844689 /* PBXContainerItemProxy */; 409 | }; 410 | B977F253EE9307722C4EB1DC729D029A /* PBXTargetDependency */ = { 411 | isa = PBXTargetDependency; 412 | name = iPicUploader; 413 | target = 05B7F7C75CFDAA8BAF32E04D548E3A7A /* iPicUploader */; 414 | targetProxy = 738F9D9052C2269BC2A4B66B5E323A18 /* PBXContainerItemProxy */; 415 | }; 416 | /* End PBXTargetDependency section */ 417 | 418 | /* Begin XCBuildConfiguration section */ 419 | 0577E960F68FF02722D75DA2D211E3A8 /* Debug */ = { 420 | isa = XCBuildConfiguration; 421 | buildSettings = { 422 | ALWAYS_SEARCH_USER_PATHS = NO; 423 | CLANG_ANALYZER_NONNULL = YES; 424 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 425 | CLANG_CXX_LIBRARY = "libc++"; 426 | CLANG_ENABLE_MODULES = YES; 427 | CLANG_ENABLE_OBJC_ARC = YES; 428 | CLANG_WARN_BOOL_CONVERSION = YES; 429 | CLANG_WARN_CONSTANT_CONVERSION = YES; 430 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 431 | CLANG_WARN_EMPTY_BODY = YES; 432 | CLANG_WARN_ENUM_CONVERSION = YES; 433 | CLANG_WARN_INT_CONVERSION = YES; 434 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 435 | CLANG_WARN_UNREACHABLE_CODE = YES; 436 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 437 | COPY_PHASE_STRIP = NO; 438 | ENABLE_TESTABILITY = YES; 439 | GCC_C_LANGUAGE_STANDARD = gnu99; 440 | GCC_DYNAMIC_NO_PIC = NO; 441 | GCC_OPTIMIZATION_LEVEL = 0; 442 | GCC_PREPROCESSOR_DEFINITIONS = ( 443 | "POD_CONFIGURATION_DEBUG=1", 444 | "DEBUG=1", 445 | "$(inherited)", 446 | ); 447 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 448 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 449 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 450 | GCC_WARN_UNDECLARED_SELECTOR = YES; 451 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 452 | GCC_WARN_UNUSED_FUNCTION = YES; 453 | GCC_WARN_UNUSED_VARIABLE = YES; 454 | MACOSX_DEPLOYMENT_TARGET = 10.11; 455 | ONLY_ACTIVE_ARCH = YES; 456 | STRIP_INSTALLED_PRODUCT = NO; 457 | SYMROOT = "${SRCROOT}/../build"; 458 | }; 459 | name = Debug; 460 | }; 461 | 2DB25C769151B0EEA5D84D5A020F809E /* Debug */ = { 462 | isa = XCBuildConfiguration; 463 | baseConfigurationReference = DD06A8354E754C44FD8C33083D89CE07 /* iPicUploader.xcconfig */; 464 | buildSettings = { 465 | CODE_SIGN_IDENTITY = "-"; 466 | COMBINE_HIDPI_IMAGES = YES; 467 | CURRENT_PROJECT_VERSION = 1; 468 | DEBUG_INFORMATION_FORMAT = dwarf; 469 | DEFINES_MODULE = YES; 470 | DYLIB_COMPATIBILITY_VERSION = 1; 471 | DYLIB_CURRENT_VERSION = 1; 472 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 473 | ENABLE_STRICT_OBJC_MSGSEND = YES; 474 | FRAMEWORK_VERSION = A; 475 | GCC_NO_COMMON_BLOCKS = YES; 476 | GCC_PREFIX_HEADER = "Target Support Files/iPicUploader/iPicUploader-prefix.pch"; 477 | INFOPLIST_FILE = "Target Support Files/iPicUploader/Info.plist"; 478 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 479 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; 480 | MACOSX_DEPLOYMENT_TARGET = 10.11; 481 | MODULEMAP_FILE = "Target Support Files/iPicUploader/iPicUploader.modulemap"; 482 | MTL_ENABLE_DEBUG_INFO = YES; 483 | PRODUCT_NAME = iPicUploader; 484 | SDKROOT = macosx; 485 | SKIP_INSTALL = YES; 486 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 487 | VERSIONING_SYSTEM = "apple-generic"; 488 | VERSION_INFO_PREFIX = ""; 489 | }; 490 | name = Debug; 491 | }; 492 | 2FAF9FD4C2114CFB8751D904F1ECE5C5 /* Debug */ = { 493 | isa = XCBuildConfiguration; 494 | baseConfigurationReference = 73686E5028A3488C8AAC224DD9F32E4F /* Pods-iPicUploaderExample.debug.xcconfig */; 495 | buildSettings = { 496 | CODE_SIGN_IDENTITY = "-"; 497 | COMBINE_HIDPI_IMAGES = YES; 498 | CURRENT_PROJECT_VERSION = 1; 499 | DEBUG_INFORMATION_FORMAT = dwarf; 500 | DEFINES_MODULE = YES; 501 | DYLIB_COMPATIBILITY_VERSION = 1; 502 | DYLIB_CURRENT_VERSION = 1; 503 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 504 | ENABLE_STRICT_OBJC_MSGSEND = YES; 505 | FRAMEWORK_VERSION = A; 506 | GCC_NO_COMMON_BLOCKS = YES; 507 | INFOPLIST_FILE = "Target Support Files/Pods-iPicUploaderExample/Info.plist"; 508 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 509 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; 510 | MACH_O_TYPE = staticlib; 511 | MACOSX_DEPLOYMENT_TARGET = 10.11; 512 | MODULEMAP_FILE = "Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample.modulemap"; 513 | MTL_ENABLE_DEBUG_INFO = YES; 514 | OTHER_LDFLAGS = ""; 515 | OTHER_LIBTOOLFLAGS = ""; 516 | PODS_ROOT = "$(SRCROOT)"; 517 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 518 | PRODUCT_NAME = Pods_iPicUploaderExample; 519 | SDKROOT = macosx; 520 | SKIP_INSTALL = YES; 521 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 522 | VERSIONING_SYSTEM = "apple-generic"; 523 | VERSION_INFO_PREFIX = ""; 524 | }; 525 | name = Debug; 526 | }; 527 | 42067A795A6FA0B02D55EA00EC0DE0DB /* Release */ = { 528 | isa = XCBuildConfiguration; 529 | baseConfigurationReference = 205313F3332997F867D86645050C748E /* Pods-iPicUploaderExample.release.xcconfig */; 530 | buildSettings = { 531 | CODE_SIGN_IDENTITY = "-"; 532 | COMBINE_HIDPI_IMAGES = YES; 533 | CURRENT_PROJECT_VERSION = 1; 534 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 535 | DEFINES_MODULE = YES; 536 | DYLIB_COMPATIBILITY_VERSION = 1; 537 | DYLIB_CURRENT_VERSION = 1; 538 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 539 | ENABLE_STRICT_OBJC_MSGSEND = YES; 540 | FRAMEWORK_VERSION = A; 541 | GCC_NO_COMMON_BLOCKS = YES; 542 | INFOPLIST_FILE = "Target Support Files/Pods-iPicUploaderExample/Info.plist"; 543 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 544 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; 545 | MACH_O_TYPE = staticlib; 546 | MACOSX_DEPLOYMENT_TARGET = 10.11; 547 | MODULEMAP_FILE = "Target Support Files/Pods-iPicUploaderExample/Pods-iPicUploaderExample.modulemap"; 548 | MTL_ENABLE_DEBUG_INFO = NO; 549 | OTHER_LDFLAGS = ""; 550 | OTHER_LIBTOOLFLAGS = ""; 551 | PODS_ROOT = "$(SRCROOT)"; 552 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 553 | PRODUCT_NAME = Pods_iPicUploaderExample; 554 | SDKROOT = macosx; 555 | SKIP_INSTALL = YES; 556 | VERSIONING_SYSTEM = "apple-generic"; 557 | VERSION_INFO_PREFIX = ""; 558 | }; 559 | name = Release; 560 | }; 561 | 578820E498FFD85CA5D93A33D365FBED /* Release */ = { 562 | isa = XCBuildConfiguration; 563 | buildSettings = { 564 | ALWAYS_SEARCH_USER_PATHS = NO; 565 | CLANG_ANALYZER_NONNULL = YES; 566 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 567 | CLANG_CXX_LIBRARY = "libc++"; 568 | CLANG_ENABLE_MODULES = YES; 569 | CLANG_ENABLE_OBJC_ARC = YES; 570 | CLANG_WARN_BOOL_CONVERSION = YES; 571 | CLANG_WARN_CONSTANT_CONVERSION = YES; 572 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 573 | CLANG_WARN_EMPTY_BODY = YES; 574 | CLANG_WARN_ENUM_CONVERSION = YES; 575 | CLANG_WARN_INT_CONVERSION = YES; 576 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 577 | CLANG_WARN_UNREACHABLE_CODE = YES; 578 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 579 | COPY_PHASE_STRIP = YES; 580 | ENABLE_NS_ASSERTIONS = NO; 581 | GCC_C_LANGUAGE_STANDARD = gnu99; 582 | GCC_PREPROCESSOR_DEFINITIONS = ( 583 | "POD_CONFIGURATION_RELEASE=1", 584 | "$(inherited)", 585 | ); 586 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 587 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 588 | GCC_WARN_UNDECLARED_SELECTOR = YES; 589 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 590 | GCC_WARN_UNUSED_FUNCTION = YES; 591 | GCC_WARN_UNUSED_VARIABLE = YES; 592 | MACOSX_DEPLOYMENT_TARGET = 10.11; 593 | STRIP_INSTALLED_PRODUCT = NO; 594 | SYMROOT = "${SRCROOT}/../build"; 595 | VALIDATE_PRODUCT = YES; 596 | }; 597 | name = Release; 598 | }; 599 | 910960B6D65FD8A11FC86F26C72698BF /* Release */ = { 600 | isa = XCBuildConfiguration; 601 | baseConfigurationReference = DD06A8354E754C44FD8C33083D89CE07 /* iPicUploader.xcconfig */; 602 | buildSettings = { 603 | CODE_SIGN_IDENTITY = "-"; 604 | COMBINE_HIDPI_IMAGES = YES; 605 | CURRENT_PROJECT_VERSION = 1; 606 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 607 | DEFINES_MODULE = YES; 608 | DYLIB_COMPATIBILITY_VERSION = 1; 609 | DYLIB_CURRENT_VERSION = 1; 610 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 611 | ENABLE_STRICT_OBJC_MSGSEND = YES; 612 | FRAMEWORK_VERSION = A; 613 | GCC_NO_COMMON_BLOCKS = YES; 614 | GCC_PREFIX_HEADER = "Target Support Files/iPicUploader/iPicUploader-prefix.pch"; 615 | INFOPLIST_FILE = "Target Support Files/iPicUploader/Info.plist"; 616 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 617 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; 618 | MACOSX_DEPLOYMENT_TARGET = 10.11; 619 | MODULEMAP_FILE = "Target Support Files/iPicUploader/iPicUploader.modulemap"; 620 | MTL_ENABLE_DEBUG_INFO = NO; 621 | PRODUCT_NAME = iPicUploader; 622 | SDKROOT = macosx; 623 | SKIP_INSTALL = YES; 624 | VERSIONING_SYSTEM = "apple-generic"; 625 | VERSION_INFO_PREFIX = ""; 626 | }; 627 | name = Release; 628 | }; 629 | 967DD9AD1D7C054B00844689 /* Debug */ = { 630 | isa = XCBuildConfiguration; 631 | baseConfigurationReference = DD06A8354E754C44FD8C33083D89CE07 /* iPicUploader.xcconfig */; 632 | buildSettings = { 633 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 634 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 635 | CODE_SIGN_IDENTITY = "-"; 636 | COMBINE_HIDPI_IMAGES = YES; 637 | DEBUG_INFORMATION_FORMAT = dwarf; 638 | ENABLE_STRICT_OBJC_MSGSEND = YES; 639 | GCC_NO_COMMON_BLOCKS = YES; 640 | GCC_PREPROCESSOR_DEFINITIONS = ( 641 | "DEBUG=1", 642 | "$(inherited)", 643 | ); 644 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 645 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 646 | INFOPLIST_FILE = iPicUploaderTests/Info.plist; 647 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; 648 | MTL_ENABLE_DEBUG_INFO = YES; 649 | PRODUCT_BUNDLE_IDENTIFIER = net.toolinbox.pod.iPicUploaderTests; 650 | PRODUCT_NAME = "$(TARGET_NAME)"; 651 | SDKROOT = macosx; 652 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 653 | }; 654 | name = Debug; 655 | }; 656 | 967DD9AE1D7C054B00844689 /* Release */ = { 657 | isa = XCBuildConfiguration; 658 | baseConfigurationReference = DD06A8354E754C44FD8C33083D89CE07 /* iPicUploader.xcconfig */; 659 | buildSettings = { 660 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 661 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 662 | CODE_SIGN_IDENTITY = "-"; 663 | COMBINE_HIDPI_IMAGES = YES; 664 | COPY_PHASE_STRIP = NO; 665 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 666 | ENABLE_STRICT_OBJC_MSGSEND = YES; 667 | GCC_NO_COMMON_BLOCKS = YES; 668 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 669 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 670 | INFOPLIST_FILE = iPicUploaderTests/Info.plist; 671 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; 672 | MTL_ENABLE_DEBUG_INFO = NO; 673 | PRODUCT_BUNDLE_IDENTIFIER = net.toolinbox.pod.iPicUploaderTests; 674 | PRODUCT_NAME = "$(TARGET_NAME)"; 675 | SDKROOT = macosx; 676 | }; 677 | name = Release; 678 | }; 679 | /* End XCBuildConfiguration section */ 680 | 681 | /* Begin XCConfigurationList section */ 682 | 17F1E7830122502D71E34A9CC639824F /* Build configuration list for PBXNativeTarget "iPicUploader" */ = { 683 | isa = XCConfigurationList; 684 | buildConfigurations = ( 685 | 2DB25C769151B0EEA5D84D5A020F809E /* Debug */, 686 | 910960B6D65FD8A11FC86F26C72698BF /* Release */, 687 | ); 688 | defaultConfigurationIsVisible = 0; 689 | defaultConfigurationName = Release; 690 | }; 691 | 2000544414190B154DAC3D71829C1098 /* Build configuration list for PBXNativeTarget "Pods-iPicUploaderExample" */ = { 692 | isa = XCConfigurationList; 693 | buildConfigurations = ( 694 | 2FAF9FD4C2114CFB8751D904F1ECE5C5 /* Debug */, 695 | 42067A795A6FA0B02D55EA00EC0DE0DB /* Release */, 696 | ); 697 | defaultConfigurationIsVisible = 0; 698 | defaultConfigurationName = Release; 699 | }; 700 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { 701 | isa = XCConfigurationList; 702 | buildConfigurations = ( 703 | 0577E960F68FF02722D75DA2D211E3A8 /* Debug */, 704 | 578820E498FFD85CA5D93A33D365FBED /* Release */, 705 | ); 706 | defaultConfigurationIsVisible = 0; 707 | defaultConfigurationName = Release; 708 | }; 709 | 967DD9AF1D7C054B00844689 /* Build configuration list for PBXNativeTarget "iPicUploaderTests" */ = { 710 | isa = XCConfigurationList; 711 | buildConfigurations = ( 712 | 967DD9AD1D7C054B00844689 /* Debug */, 713 | 967DD9AE1D7C054B00844689 /* Release */, 714 | ); 715 | defaultConfigurationIsVisible = 0; 716 | }; 717 | /* End XCConfigurationList section */ 718 | }; 719 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 720 | } 721 | -------------------------------------------------------------------------------- /Example/iPicUploaderExample/Base.lproj/MainMenu.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | Default 536 | 537 | 538 | 539 | 540 | 541 | 542 | Left to Right 543 | 544 | 545 | 546 | 547 | 548 | 549 | Right to Left 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | Default 561 | 562 | 563 | 564 | 565 | 566 | 567 | Left to Right 568 | 569 | 570 | 571 | 572 | 573 | 574 | Right to Left 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | --------------------------------------------------------------------------------