From 951d206600275ad478b9af497f04afeda6e376c9 Mon Sep 17 00:00:00 2001 From: Mikhail Churbanov Date: Mon, 21 May 2018 09:12:57 +0300 Subject: [PATCH] Initial commit --- .gitignore | 37 + .travis.yml | 14 + Example/Podfile | 6 + Example/Podfile.lock | 16 + .../Local Podspecs/ProxyResolver.podspec.json | 22 + Example/Pods/Manifest.lock | 16 + Example/Pods/Pods.xcodeproj/project.pbxproj | 590 ++++++++++++++ .../Pods-ProxyResolver_Tests/Info.plist | 26 + ...xyResolver_Tests-acknowledgements.markdown | 26 + ...ProxyResolver_Tests-acknowledgements.plist | 58 ++ .../Pods-ProxyResolver_Tests-dummy.m | 5 + .../Pods-ProxyResolver_Tests-frameworks.sh | 153 ++++ .../Pods-ProxyResolver_Tests-resources.sh | 118 +++ .../Pods-ProxyResolver_Tests-umbrella.h | 16 + .../Pods-ProxyResolver_Tests.debug.xcconfig | 12 + .../Pods-ProxyResolver_Tests.modulemap | 6 + .../Pods-ProxyResolver_Tests.release.xcconfig | 12 + .../ProxyResolver/Info.plist | 26 + .../ProxyResolver/ProxyResolver-dummy.m | 5 + .../ProxyResolver/ProxyResolver-prefix.pch | 12 + .../ProxyResolver/ProxyResolver-umbrella.h | 16 + .../ProxyResolver/ProxyResolver.modulemap | 6 + .../ProxyResolver/ProxyResolver.xcconfig | 10 + .../ProxyResolver.xcodeproj/project.pbxproj | 373 +++++++++ .../contents.xcworkspacedata | 7 + .../xcschemes/ProxyResolver-Example.xcscheme | 101 +++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + Example/ProxyResolver/AppDelegate.swift | 26 + .../AppIcon.appiconset/Contents.json | 58 ++ .../ProxyResolver/Base.lproj/Main.storyboard | 717 ++++++++++++++++++ Example/ProxyResolver/Info.plist | 30 + Example/ProxyResolver/PROJECT.entitlements | 10 + Example/ProxyResolver/ViewController.swift | 27 + Example/Tests/Info.plist | 22 + Example/Tests/Tests.swift | 35 + LICENSE | 19 + ProxyResolver.podspec | 43 ++ ProxyResolver/Assets/.gitkeep | 0 ProxyResolver/Classes/.gitkeep | 0 ProxyResolver/Classes/ProxyResolver.swift | 268 +++++++ README.md | 29 + _Pods.xcodeproj | 1 + 43 files changed, 2992 insertions(+) create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 Example/Podfile create mode 100644 Example/Podfile.lock create mode 100644 Example/Pods/Local Podspecs/ProxyResolver.podspec.json create mode 100644 Example/Pods/Manifest.lock create mode 100644 Example/Pods/Pods.xcodeproj/project.pbxproj create mode 100644 Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Info.plist create mode 100644 Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-acknowledgements.markdown create mode 100644 Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-acknowledgements.plist create mode 100644 Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-dummy.m create mode 100755 Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-frameworks.sh create mode 100755 Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-resources.sh create mode 100644 Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-umbrella.h create mode 100644 Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.debug.xcconfig create mode 100644 Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.modulemap create mode 100644 Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.release.xcconfig create mode 100644 Example/Pods/Target Support Files/ProxyResolver/Info.plist create mode 100644 Example/Pods/Target Support Files/ProxyResolver/ProxyResolver-dummy.m create mode 100644 Example/Pods/Target Support Files/ProxyResolver/ProxyResolver-prefix.pch create mode 100644 Example/Pods/Target Support Files/ProxyResolver/ProxyResolver-umbrella.h create mode 100644 Example/Pods/Target Support Files/ProxyResolver/ProxyResolver.modulemap create mode 100644 Example/Pods/Target Support Files/ProxyResolver/ProxyResolver.xcconfig create mode 100644 Example/ProxyResolver.xcodeproj/project.pbxproj create mode 100644 Example/ProxyResolver.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Example/ProxyResolver.xcodeproj/xcshareddata/xcschemes/ProxyResolver-Example.xcscheme create mode 100644 Example/ProxyResolver.xcworkspace/contents.xcworkspacedata create mode 100644 Example/ProxyResolver.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Example/ProxyResolver/AppDelegate.swift create mode 100644 Example/ProxyResolver/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Example/ProxyResolver/Base.lproj/Main.storyboard create mode 100644 Example/ProxyResolver/Info.plist create mode 100644 Example/ProxyResolver/PROJECT.entitlements create mode 100644 Example/ProxyResolver/ViewController.swift create mode 100644 Example/Tests/Info.plist create mode 100644 Example/Tests/Tests.swift create mode 100644 LICENSE create mode 100644 ProxyResolver.podspec create mode 100644 ProxyResolver/Assets/.gitkeep create mode 100644 ProxyResolver/Classes/.gitkeep create mode 100644 ProxyResolver/Classes/ProxyResolver.swift create mode 100644 README.md create mode 120000 _Pods.xcodeproj diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..93c86d3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +# OS X +.DS_Store + +# Xcode +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata/ +*.xccheckout +profile +*.moved-aside +DerivedData +*.hmap +*.ipa + +# Bundler +.bundle + +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build + +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control +# +# Note: if you ignore the Pods directory, make sure to uncomment +# `pod install` in .travis.yml +# +# Pods/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..df422ec --- /dev/null +++ b/.travis.yml @@ -0,0 +1,14 @@ +# references: +# * https://www.objc.io/issues/6-build-tools/travis-ci/ +# * https://github.com/supermarin/xcpretty#usage + +osx_image: xcode7.3 +language: objective-c +# cache: cocoapods +# podfile: Example/Podfile +# before_install: +# - gem install cocoapods # Since Travis is not always on latest version +# - pod install --project-directory=Example +script: +- set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/ProxyResolver.xcworkspace -scheme ProxyResolver-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty +- pod lib lint diff --git a/Example/Podfile b/Example/Podfile new file mode 100644 index 0000000..5a7059a --- /dev/null +++ b/Example/Podfile @@ -0,0 +1,6 @@ +use_frameworks! +target 'ProxyResolver_Tests' do + pod 'ProxyResolver', :path => '../' + + +end diff --git a/Example/Podfile.lock b/Example/Podfile.lock new file mode 100644 index 0000000..069810e --- /dev/null +++ b/Example/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - ProxyResolver (0.1.0) + +DEPENDENCIES: + - ProxyResolver (from `../`) + +EXTERNAL SOURCES: + ProxyResolver: + :path: "../" + +SPEC CHECKSUMS: + ProxyResolver: 84a21dca61451f530b92c1574efeb30d922ef2f1 + +PODFILE CHECKSUM: 83d2fdc72278efd4831f9bbf5e193100d25c8d91 + +COCOAPODS: 1.5.0 diff --git a/Example/Pods/Local Podspecs/ProxyResolver.podspec.json b/Example/Pods/Local Podspecs/ProxyResolver.podspec.json new file mode 100644 index 0000000..ee350da --- /dev/null +++ b/Example/Pods/Local Podspecs/ProxyResolver.podspec.json @@ -0,0 +1,22 @@ +{ + "name": "ProxyResolver", + "version": "0.1.0", + "summary": "A short description of ProxyResolver.", + "description": "TODO: Add long description of the pod here.", + "homepage": "https://github.com/rinold/ProxyResolver", + "license": { + "type": "MIT", + "file": "LICENSE" + }, + "authors": { + "rinold": "mihail.churbanov@gmail.com" + }, + "source": { + "git": "https://github.com/rinold/ProxyResolver.git", + "tag": "0.1.0" + }, + "platforms": { + "osx": "10.10" + }, + "source_files": "ProxyResolver/Classes/**/*" +} diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock new file mode 100644 index 0000000..069810e --- /dev/null +++ b/Example/Pods/Manifest.lock @@ -0,0 +1,16 @@ +PODS: + - ProxyResolver (0.1.0) + +DEPENDENCIES: + - ProxyResolver (from `../`) + +EXTERNAL SOURCES: + ProxyResolver: + :path: "../" + +SPEC CHECKSUMS: + ProxyResolver: 84a21dca61451f530b92c1574efeb30d922ef2f1 + +PODFILE CHECKSUM: 83d2fdc72278efd4831f9bbf5e193100d25c8d91 + +COCOAPODS: 1.5.0 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..1561de5 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,590 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 8986EC39490C81C2D8D74336C583EC5D /* ProxyResolver-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 82B89B81E2C0B7A18E8BA8C866413244 /* ProxyResolver-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A68EB223A289CC48A0408E9733A3BA91 /* Pods-ProxyResolver_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F8ABF926AA61668006F55BE1CE37B2FA /* Pods-ProxyResolver_Tests-dummy.m */; }; + BDFA00143101BD16F1FDD42D41A2B2F6 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DF428FC7C7A6555B2B02D8E238C8D8F2 /* Cocoa.framework */; }; + C82C6EFEFD7CC8DA2FD52059DB889C49 /* Pods-ProxyResolver_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4488644F212DC26BDECDAB00A19E5018 /* Pods-ProxyResolver_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D1FCBD77A1FF7DFAEA805D7B2AE1C96D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DF428FC7C7A6555B2B02D8E238C8D8F2 /* Cocoa.framework */; }; + DF3D62697BFAFF02BA7903B5FC8DCF46 /* ProxyResolver-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 69ECA608EDA5F7F53DAAB10C40B64396 /* ProxyResolver-dummy.m */; }; + F55AF46DACB40F6E27EBCE3E6B9A1EE5 /* ProxyResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 290F267214720829226B81DA3F8E72D0 /* ProxyResolver.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 51FD30A51718EBACC5CA67B1DF7ED3F0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 975D448524FFDAD24C92AAEC3F9C7712; + remoteInfo = ProxyResolver; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 04A997F3BEE997585804C1CECD68769C /* Pods-ProxyResolver_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ProxyResolver_Tests.debug.xcconfig"; sourceTree = ""; }; + 06F847494D07A255D808DC3227958DF2 /* ProxyResolver.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; path = ProxyResolver.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 0954F6250043FD86AB3CE327C4F31DAB /* Pods-ProxyResolver_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ProxyResolver_Tests.release.xcconfig"; sourceTree = ""; }; + 0FC944C9E6603CECE2CAC9CBBD67F1B6 /* Pods-ProxyResolver_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ProxyResolver_Tests.modulemap"; sourceTree = ""; }; + 13D28F2E13EA381C5C25E4E849D7382C /* ProxyResolver.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ProxyResolver.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 290F267214720829226B81DA3F8E72D0 /* ProxyResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProxyResolver.swift; path = ProxyResolver/Classes/ProxyResolver.swift; sourceTree = ""; }; + 4488644F212DC26BDECDAB00A19E5018 /* Pods-ProxyResolver_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ProxyResolver_Tests-umbrella.h"; sourceTree = ""; }; + 61B4645F4AC22C21DBBE89FA110A81A3 /* Pods_ProxyResolver_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ProxyResolver_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69ECA608EDA5F7F53DAAB10C40B64396 /* ProxyResolver-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ProxyResolver-dummy.m"; sourceTree = ""; }; + 6A49EE540D0F60FF1ACF68A4749C3F3E /* Pods-ProxyResolver_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ProxyResolver_Tests-frameworks.sh"; sourceTree = ""; }; + 6B9996A7A16E8C6B0E63D6D19D7A2ECE /* Pods-ProxyResolver_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ProxyResolver_Tests-resources.sh"; sourceTree = ""; }; + 717E68A4F3A6B52D7D1CEB5F2DC7A6BE /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 757A8CADE38E19D0EABB20FF9553C599 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + 77B65CFDEA083AF7A9A9C920C247715F /* Pods-ProxyResolver_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ProxyResolver_Tests-acknowledgements.plist"; sourceTree = ""; }; + 82B89B81E2C0B7A18E8BA8C866413244 /* ProxyResolver-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ProxyResolver-umbrella.h"; sourceTree = ""; }; + 868D956146D2297AB73355E5DB10E162 /* ProxyResolver.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ProxyResolver.xcconfig; sourceTree = ""; }; + 92222897C37AC943B012725BDB01A4B1 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9A9A352E5868B27F72B5008E7849DFDF /* Pods-ProxyResolver_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ProxyResolver_Tests-acknowledgements.markdown"; sourceTree = ""; }; + B47B5886A3CDFE66749E0DB41C3F264F /* ProxyResolver.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ProxyResolver.modulemap; sourceTree = ""; }; + B9C80F41C8BEF7BA832363793F055B13 /* ProxyResolver-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ProxyResolver-prefix.pch"; sourceTree = ""; }; + DF428FC7C7A6555B2B02D8E238C8D8F2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; }; + F8ABF926AA61668006F55BE1CE37B2FA /* Pods-ProxyResolver_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ProxyResolver_Tests-dummy.m"; sourceTree = ""; }; + FED035864107CFDF25935EAD10ABA165 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + E13B7CD7B58636DA928D67A85A81C907 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BDFA00143101BD16F1FDD42D41A2B2F6 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + ED4793605D4CF9C6E204C4E97F89E45F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D1FCBD77A1FF7DFAEA805D7B2AE1C96D /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 17A77EF4A942DE9FF65A7E736C07F0CE /* Pod */ = { + isa = PBXGroup; + children = ( + 757A8CADE38E19D0EABB20FF9553C599 /* LICENSE */, + 06F847494D07A255D808DC3227958DF2 /* ProxyResolver.podspec */, + FED035864107CFDF25935EAD10ABA165 /* README.md */, + ); + name = Pod; + sourceTree = ""; + }; + 1C916EE2E7BF037A70521857290D10B3 /* ProxyResolver */ = { + isa = PBXGroup; + children = ( + 290F267214720829226B81DA3F8E72D0 /* ProxyResolver.swift */, + 17A77EF4A942DE9FF65A7E736C07F0CE /* Pod */, + A802541D8599C4578AEB25ADE416F9A6 /* Support Files */, + ); + name = ProxyResolver; + path = ../..; + sourceTree = ""; + }; + 39E9EE8210D861DFD82346C1F5EB7218 /* Frameworks */ = { + isa = PBXGroup; + children = ( + FA7AC8429882A95AA0810A9DCDED54FF /* OS X */, + ); + name = Frameworks; + sourceTree = ""; + }; + 5D1729875112885740CADB70E378228F /* Development Pods */ = { + isa = PBXGroup; + children = ( + 1C916EE2E7BF037A70521857290D10B3 /* ProxyResolver */, + ); + name = "Development Pods"; + sourceTree = ""; + }; + 7DB346D0F39D3F0E887471402A8071AB = { + isa = PBXGroup; + children = ( + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, + 5D1729875112885740CADB70E378228F /* Development Pods */, + 39E9EE8210D861DFD82346C1F5EB7218 /* Frameworks */, + A1FE60ACB5D1B58C4076942FAEB6CF59 /* Products */, + 9D260DAB039AC85585B88820BDCBF1FE /* Targets Support Files */, + ); + sourceTree = ""; + }; + 9D260DAB039AC85585B88820BDCBF1FE /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + D4AB9DDB1A3BF3EE5D9E9E079A613EB3 /* Pods-ProxyResolver_Tests */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + A1FE60ACB5D1B58C4076942FAEB6CF59 /* Products */ = { + isa = PBXGroup; + children = ( + 61B4645F4AC22C21DBBE89FA110A81A3 /* Pods_ProxyResolver_Tests.framework */, + 13D28F2E13EA381C5C25E4E849D7382C /* ProxyResolver.framework */, + ); + name = Products; + sourceTree = ""; + }; + A802541D8599C4578AEB25ADE416F9A6 /* Support Files */ = { + isa = PBXGroup; + children = ( + 92222897C37AC943B012725BDB01A4B1 /* Info.plist */, + B47B5886A3CDFE66749E0DB41C3F264F /* ProxyResolver.modulemap */, + 868D956146D2297AB73355E5DB10E162 /* ProxyResolver.xcconfig */, + 69ECA608EDA5F7F53DAAB10C40B64396 /* ProxyResolver-dummy.m */, + B9C80F41C8BEF7BA832363793F055B13 /* ProxyResolver-prefix.pch */, + 82B89B81E2C0B7A18E8BA8C866413244 /* ProxyResolver-umbrella.h */, + ); + name = "Support Files"; + path = "Example/Pods/Target Support Files/ProxyResolver"; + sourceTree = ""; + }; + D4AB9DDB1A3BF3EE5D9E9E079A613EB3 /* Pods-ProxyResolver_Tests */ = { + isa = PBXGroup; + children = ( + 717E68A4F3A6B52D7D1CEB5F2DC7A6BE /* Info.plist */, + 0FC944C9E6603CECE2CAC9CBBD67F1B6 /* Pods-ProxyResolver_Tests.modulemap */, + 9A9A352E5868B27F72B5008E7849DFDF /* Pods-ProxyResolver_Tests-acknowledgements.markdown */, + 77B65CFDEA083AF7A9A9C920C247715F /* Pods-ProxyResolver_Tests-acknowledgements.plist */, + F8ABF926AA61668006F55BE1CE37B2FA /* Pods-ProxyResolver_Tests-dummy.m */, + 6A49EE540D0F60FF1ACF68A4749C3F3E /* Pods-ProxyResolver_Tests-frameworks.sh */, + 6B9996A7A16E8C6B0E63D6D19D7A2ECE /* Pods-ProxyResolver_Tests-resources.sh */, + 4488644F212DC26BDECDAB00A19E5018 /* Pods-ProxyResolver_Tests-umbrella.h */, + 04A997F3BEE997585804C1CECD68769C /* Pods-ProxyResolver_Tests.debug.xcconfig */, + 0954F6250043FD86AB3CE327C4F31DAB /* Pods-ProxyResolver_Tests.release.xcconfig */, + ); + name = "Pods-ProxyResolver_Tests"; + path = "Target Support Files/Pods-ProxyResolver_Tests"; + sourceTree = ""; + }; + FA7AC8429882A95AA0810A9DCDED54FF /* OS X */ = { + isa = PBXGroup; + children = ( + DF428FC7C7A6555B2B02D8E238C8D8F2 /* Cocoa.framework */, + ); + name = "OS X"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 835A3B7A7889BBE0B02A7C2381544A2C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 8986EC39490C81C2D8D74336C583EC5D /* ProxyResolver-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F154DB0427E3CBBE2DFD6D233A247BBB /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + C82C6EFEFD7CC8DA2FD52059DB889C49 /* Pods-ProxyResolver_Tests-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 975D448524FFDAD24C92AAEC3F9C7712 /* ProxyResolver */ = { + isa = PBXNativeTarget; + buildConfigurationList = 108EF0622E0290D11CAAA8B41E27337F /* Build configuration list for PBXNativeTarget "ProxyResolver" */; + buildPhases = ( + F10DEEE892CB35336693C9AFB4CD9C62 /* Sources */, + ED4793605D4CF9C6E204C4E97F89E45F /* Frameworks */, + 835A3B7A7889BBE0B02A7C2381544A2C /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ProxyResolver; + productName = ProxyResolver; + productReference = 13D28F2E13EA381C5C25E4E849D7382C /* ProxyResolver.framework */; + productType = "com.apple.product-type.framework"; + }; + DDEAED8B86768D68DE830B668A3B5020 /* Pods-ProxyResolver_Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 30945EE70D49E083D4FA6EBFAB6788BD /* Build configuration list for PBXNativeTarget "Pods-ProxyResolver_Tests" */; + buildPhases = ( + B2D350DEBC10085526751B8825F257C0 /* Sources */, + E13B7CD7B58636DA928D67A85A81C907 /* Frameworks */, + F154DB0427E3CBBE2DFD6D233A247BBB /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 4E33442239C1C40E72D71F77A5CD4087 /* PBXTargetDependency */, + ); + name = "Pods-ProxyResolver_Tests"; + productName = "Pods-ProxyResolver_Tests"; + productReference = 61B4645F4AC22C21DBBE89FA110A81A3 /* Pods_ProxyResolver_Tests.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0930; + LastUpgradeCheck = 0930; + }; + buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 7DB346D0F39D3F0E887471402A8071AB; + productRefGroup = A1FE60ACB5D1B58C4076942FAEB6CF59 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DDEAED8B86768D68DE830B668A3B5020 /* Pods-ProxyResolver_Tests */, + 975D448524FFDAD24C92AAEC3F9C7712 /* ProxyResolver */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + B2D350DEBC10085526751B8825F257C0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A68EB223A289CC48A0408E9733A3BA91 /* Pods-ProxyResolver_Tests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F10DEEE892CB35336693C9AFB4CD9C62 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DF3D62697BFAFF02BA7903B5FC8DCF46 /* ProxyResolver-dummy.m in Sources */, + F55AF46DACB40F6E27EBCE3E6B9A1EE5 /* ProxyResolver.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 4E33442239C1C40E72D71F77A5CD4087 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ProxyResolver; + target = 975D448524FFDAD24C92AAEC3F9C7712 /* ProxyResolver */; + targetProxy = 51FD30A51718EBACC5CA67B1DF7ED3F0 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 740FA9757F2F1876EE366527FBD83161 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0954F6250043FD86AB3CE327C4F31DAB /* Pods-ProxyResolver_Tests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = "Target Support Files/Pods-ProxyResolver_Tests/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MODULEMAP_FILE = "Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 74C7C140DCE092A8E61C5B08E0045893 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 868D956146D2297AB73355E5DB10E162 /* ProxyResolver.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + GCC_PREFIX_HEADER = "Target Support Files/ProxyResolver/ProxyResolver-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ProxyResolver/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MODULEMAP_FILE = "Target Support Files/ProxyResolver/ProxyResolver.modulemap"; + PRODUCT_MODULE_NAME = ProxyResolver; + PRODUCT_NAME = ProxyResolver; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 878CAFA10587D3A9C301344FF93E83BE /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 04A997F3BEE997585804C1CECD68769C /* Pods-ProxyResolver_Tests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = "Target Support Files/Pods-ProxyResolver_Tests/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MODULEMAP_FILE = "Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 885072FBE917853E9C621EA32511C1DA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + B4B1084888239C70511A640F10A4B868 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 868D956146D2297AB73355E5DB10E162 /* ProxyResolver.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + GCC_PREFIX_HEADER = "Target Support Files/ProxyResolver/ProxyResolver-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ProxyResolver/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MODULEMAP_FILE = "Target Support Files/ProxyResolver/ProxyResolver.modulemap"; + PRODUCT_MODULE_NAME = ProxyResolver; + PRODUCT_NAME = ProxyResolver; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.0; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + E574923E2959CFEF4FEBC7B272DBC6AD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 108EF0622E0290D11CAAA8B41E27337F /* Build configuration list for PBXNativeTarget "ProxyResolver" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 74C7C140DCE092A8E61C5B08E0045893 /* Debug */, + B4B1084888239C70511A640F10A4B868 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 885072FBE917853E9C621EA32511C1DA /* Debug */, + E574923E2959CFEF4FEBC7B272DBC6AD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 30945EE70D49E083D4FA6EBFAB6788BD /* Build configuration list for PBXNativeTarget "Pods-ProxyResolver_Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 878CAFA10587D3A9C301344FF93E83BE /* Debug */, + 740FA9757F2F1876EE366527FBD83161 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; +} diff --git a/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Info.plist b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-acknowledgements.markdown new file mode 100644 index 0000000..50e152b --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-acknowledgements.markdown @@ -0,0 +1,26 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## ProxyResolver + +Copyright (c) 2018 rinold + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-acknowledgements.plist new file mode 100644 index 0000000..1c7aab7 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-acknowledgements.plist @@ -0,0 +1,58 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2018 rinold <mihail.churbanov@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + License + MIT + Title + ProxyResolver + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-dummy.m b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-dummy.m new file mode 100644 index 0000000..7045883 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_ProxyResolver_Tests : NSObject +@end +@implementation PodsDummy_Pods_ProxyResolver_Tests +@end diff --git a/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-frameworks.sh new file mode 100755 index 0000000..d35849b --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-frameworks.sh @@ -0,0 +1,153 @@ +#!/bin/sh +set -e +set -u +set -o pipefail + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi + fi +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi + stripped="" + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi + STRIP_BINARY_RETVAL=1 +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/ProxyResolver/ProxyResolver.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/ProxyResolver/ProxyResolver.framework" +fi +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait +fi diff --git a/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-resources.sh b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-resources.sh new file mode 100755 index 0000000..fe3f9c7 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-resources.sh @@ -0,0 +1,118 @@ +#!/bin/sh +set -e +set -u +set -o pipefail + +if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then + # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy + # resources to, so exit 0 (signalling the script phase was successful). + exit 0 +fi + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +case "${TARGETED_DEVICE_FAMILY:-}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + 3) + TARGET_DEVICE_ARGS="--target-device tv" + ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + +install_resource() +{ + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.framework) + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + *) + echo "$RESOURCE_PATH" || true + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] +then + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "${PODS_ROOT}*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then + 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}" + else + 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}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_BUILD_DIR}/assetcatalog_generated_info.plist" + fi +fi diff --git a/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-umbrella.h b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-umbrella.h new file mode 100644 index 0000000..b549492 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_ProxyResolver_TestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_ProxyResolver_TestsVersionString[]; + diff --git a/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.debug.xcconfig new file mode 100644 index 0000000..48b3583 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.debug.xcconfig @@ -0,0 +1,12 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +CODE_SIGN_IDENTITY = +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ProxyResolver" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/../Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ProxyResolver/ProxyResolver.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "ProxyResolver" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.modulemap b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.modulemap new file mode 100644 index 0000000..c5d842e --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.modulemap @@ -0,0 +1,6 @@ +framework module Pods_ProxyResolver_Tests { + umbrella header "Pods-ProxyResolver_Tests-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.release.xcconfig new file mode 100644 index 0000000..48b3583 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.release.xcconfig @@ -0,0 +1,12 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +CODE_SIGN_IDENTITY = +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ProxyResolver" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/../Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ProxyResolver/ProxyResolver.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "ProxyResolver" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/ProxyResolver/Info.plist b/Example/Pods/Target Support Files/ProxyResolver/Info.plist new file mode 100644 index 0000000..161a9d3 --- /dev/null +++ b/Example/Pods/Target Support Files/ProxyResolver/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver-dummy.m b/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver-dummy.m new file mode 100644 index 0000000..d32fd4b --- /dev/null +++ b/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_ProxyResolver : NSObject +@end +@implementation PodsDummy_ProxyResolver +@end diff --git a/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver-prefix.pch b/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver-prefix.pch new file mode 100644 index 0000000..082f8af --- /dev/null +++ b/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver-umbrella.h b/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver-umbrella.h new file mode 100644 index 0000000..66ad193 --- /dev/null +++ b/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double ProxyResolverVersionNumber; +FOUNDATION_EXPORT const unsigned char ProxyResolverVersionString[]; + diff --git a/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver.modulemap b/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver.modulemap new file mode 100644 index 0000000..87b455c --- /dev/null +++ b/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver.modulemap @@ -0,0 +1,6 @@ +framework module ProxyResolver { + umbrella header "ProxyResolver-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver.xcconfig b/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver.xcconfig new file mode 100644 index 0000000..9ff73f2 --- /dev/null +++ b/Example/Pods/Target Support Files/ProxyResolver/ProxyResolver.xcconfig @@ -0,0 +1,10 @@ +CODE_SIGN_IDENTITY = +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ProxyResolver +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Example/ProxyResolver.xcodeproj/project.pbxproj b/Example/ProxyResolver.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ca9af3b --- /dev/null +++ b/Example/ProxyResolver.xcodeproj/project.pbxproj @@ -0,0 +1,373 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 48; + objects = { + +/* Begin PBXBuildFile section */ + 06DE4704FA0228CC2D9E3496 /* Pods_ProxyResolver_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B80EFBEC201C50284B711205 /* Pods_ProxyResolver_Tests.framework */; }; + ED83F68F20348A760038D96B /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED83F68E20348A760038D96B /* Tests.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 347BF105EC759B79F24539B7 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; + 8AAA4E47E0734EEDD4DDB5E6 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; + 8F80CD134F37EFDAAFA584F3 /* ProxyResolver.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = ProxyResolver.podspec; path = ../ProxyResolver.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + B80EFBEC201C50284B711205 /* Pods_ProxyResolver_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ProxyResolver_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DDAC30BC6915D6D09ACF4A1A /* Pods-ProxyResolver_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ProxyResolver_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.debug.xcconfig"; sourceTree = ""; }; + ED83F68A20348A760038D96B /* ProxyResolver_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ProxyResolver_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + ED83F68E20348A760038D96B /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; }; + ED83F69020348A760038D96B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EEC81CCF6661B9641CBFF927 /* Pods-ProxyResolver_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ProxyResolver_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + ED83F68720348A760038D96B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 06DE4704FA0228CC2D9E3496 /* Pods_ProxyResolver_Tests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9422209F44329501F22E88D9 /* Pods */ = { + isa = PBXGroup; + children = ( + DDAC30BC6915D6D09ACF4A1A /* Pods-ProxyResolver_Tests.debug.xcconfig */, + EEC81CCF6661B9641CBFF927 /* Pods-ProxyResolver_Tests.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; + ED83F66F20348A760038D96B = { + isa = PBXGroup; + children = ( + ED83F69A20348B650038D96B /* Podspec Metadata */, + ED83F68D20348A760038D96B /* Tests */, + ED83F67920348A760038D96B /* Products */, + 9422209F44329501F22E88D9 /* Pods */, + FE224693D163D999350D14D0 /* Frameworks */, + ); + sourceTree = ""; + }; + ED83F67920348A760038D96B /* Products */ = { + isa = PBXGroup; + children = ( + ED83F68A20348A760038D96B /* ProxyResolver_Tests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + ED83F68D20348A760038D96B /* Tests */ = { + isa = PBXGroup; + children = ( + ED83F68E20348A760038D96B /* Tests.swift */, + ED83F69020348A760038D96B /* Info.plist */, + ); + path = Tests; + sourceTree = ""; + }; + ED83F69A20348B650038D96B /* Podspec Metadata */ = { + isa = PBXGroup; + children = ( + 8F80CD134F37EFDAAFA584F3 /* ProxyResolver.podspec */, + 8AAA4E47E0734EEDD4DDB5E6 /* README.md */, + 347BF105EC759B79F24539B7 /* LICENSE */, + ); + name = "Podspec Metadata"; + sourceTree = ""; + }; + FE224693D163D999350D14D0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B80EFBEC201C50284B711205 /* Pods_ProxyResolver_Tests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + ED83F68920348A760038D96B /* ProxyResolver_Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = ED83F69620348A760038D96B /* Build configuration list for PBXNativeTarget "ProxyResolver_Tests" */; + buildPhases = ( + BACD943ED45F8CB33EDC0E0F /* [CP] Check Pods Manifest.lock */, + ED83F68620348A760038D96B /* Sources */, + ED83F68720348A760038D96B /* Frameworks */, + ED83F68820348A760038D96B /* Resources */, + AA569F9B1C91A3ECF05AA518 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ProxyResolver_Tests; + productName = ProxyResolverTests; + productReference = ED83F68A20348A760038D96B /* ProxyResolver_Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + ED83F67020348A760038D96B /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0900; + LastUpgradeCheck = 0900; + ORGANIZATIONNAME = CocoaPods; + TargetAttributes = { + ED83F68920348A760038D96B = { + CreatedOnToolsVersion = 9.0; + ProvisioningStyle = Automatic; + TestTargetID = ED83F67720348A760038D96B; + }; + }; + }; + buildConfigurationList = ED83F67320348A760038D96B /* Build configuration list for PBXProject "ProxyResolver" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = ED83F66F20348A760038D96B; + productRefGroup = ED83F67920348A760038D96B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + ED83F68920348A760038D96B /* ProxyResolver_Tests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + ED83F68820348A760038D96B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + AA569F9B1C91A3ECF05AA518 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/ProxyResolver/ProxyResolver.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ProxyResolver.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-ProxyResolver_Tests/Pods-ProxyResolver_Tests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + BACD943ED45F8CB33EDC0E0F /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-ProxyResolver_Tests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + ED83F68620348A760038D96B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ED83F68F20348A760038D96B /* Tests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + ED83F69120348A760038D96B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + ED83F69220348A760038D96B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + }; + name = Release; + }; + ED83F69720348A760038D96B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DDAC30BC6915D6D09ACF4A1A /* Pods-ProxyResolver_Tests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.ProxyResolver-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TEST_HOST = ""; + }; + name = Debug; + }; + ED83F69820348A760038D96B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EEC81CCF6661B9641CBFF927 /* Pods-ProxyResolver_Tests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.ProxyResolver-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TEST_HOST = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + ED83F67320348A760038D96B /* Build configuration list for PBXProject "ProxyResolver" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + ED83F69120348A760038D96B /* Debug */, + ED83F69220348A760038D96B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + ED83F69620348A760038D96B /* Build configuration list for PBXNativeTarget "ProxyResolver_Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + ED83F69720348A760038D96B /* Debug */, + ED83F69820348A760038D96B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = ED83F67020348A760038D96B /* Project object */; +} diff --git a/Example/ProxyResolver.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/ProxyResolver.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..be99c8c --- /dev/null +++ b/Example/ProxyResolver.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Example/ProxyResolver.xcodeproj/xcshareddata/xcschemes/ProxyResolver-Example.xcscheme b/Example/ProxyResolver.xcodeproj/xcshareddata/xcschemes/ProxyResolver-Example.xcscheme new file mode 100644 index 0000000..f28493e --- /dev/null +++ b/Example/ProxyResolver.xcodeproj/xcshareddata/xcschemes/ProxyResolver-Example.xcscheme @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/ProxyResolver.xcworkspace/contents.xcworkspacedata b/Example/ProxyResolver.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..904b461 --- /dev/null +++ b/Example/ProxyResolver.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Example/ProxyResolver.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/ProxyResolver.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Example/ProxyResolver.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/ProxyResolver/AppDelegate.swift b/Example/ProxyResolver/AppDelegate.swift new file mode 100644 index 0000000..38d7068 --- /dev/null +++ b/Example/ProxyResolver/AppDelegate.swift @@ -0,0 +1,26 @@ +// +// AppDelegate.swift +// ProxyResolver +// +// Created by rinold on 05/20/2018. +// Copyright (c) 2018 rinold. All rights reserved. +// + +import Cocoa + +@NSApplicationMain +class AppDelegate: NSObject, NSApplicationDelegate { + + + + func applicationDidFinishLaunching(_ aNotification: Notification) { + // Insert code here to initialize your application + } + + func applicationWillTerminate(_ aNotification: Notification) { + // Insert code here to tear down your application + } + + +} + diff --git a/Example/ProxyResolver/Assets.xcassets/AppIcon.appiconset/Contents.json b/Example/ProxyResolver/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..16b39b6 --- /dev/null +++ b/Example/ProxyResolver/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,58 @@ +{ + "images" : [ + { + "idiom" : "mac", + "size" : "16x16", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "16x16", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "32x32", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "32x32", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "128x128", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "128x128", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "256x256", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "256x256", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/Example/ProxyResolver/Base.lproj/Main.storyboard b/Example/ProxyResolver/Base.lproj/Main.storyboard new file mode 100644 index 0000000..34e1dd5 --- /dev/null +++ b/Example/ProxyResolver/Base.lproj/Main.storyboard @@ -0,0 +1,717 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/ProxyResolver/Info.plist b/Example/ProxyResolver/Info.plist new file mode 100644 index 0000000..e40caef --- /dev/null +++ b/Example/ProxyResolver/Info.plist @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSMainStoryboardFile + Main + NSPrincipalClass + NSApplication + + diff --git a/Example/ProxyResolver/PROJECT.entitlements b/Example/ProxyResolver/PROJECT.entitlements new file mode 100644 index 0000000..f2ef3ae --- /dev/null +++ b/Example/ProxyResolver/PROJECT.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + + diff --git a/Example/ProxyResolver/ViewController.swift b/Example/ProxyResolver/ViewController.swift new file mode 100644 index 0000000..d801fc9 --- /dev/null +++ b/Example/ProxyResolver/ViewController.swift @@ -0,0 +1,27 @@ +// +// ViewController.swift +// ProxyResolver +// +// Created by rinold on 05/20/2018. +// Copyright (c) 2018 rinold. All rights reserved. +// + +import Cocoa + +class ViewController: NSViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + override var representedObject: Any? { + didSet { + // Update the view, if already loaded. + } + } + + +} + diff --git a/Example/Tests/Info.plist b/Example/Tests/Info.plist new file mode 100644 index 0000000..6c40a6c --- /dev/null +++ b/Example/Tests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/Example/Tests/Tests.swift b/Example/Tests/Tests.swift new file mode 100644 index 0000000..43503df --- /dev/null +++ b/Example/Tests/Tests.swift @@ -0,0 +1,35 @@ +import XCTest +import ProxyResolver + +class Tests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + let expectation = XCTestExpectation(description: "Completion called") + let proxy = ProxyResolver() + let url = URL(string: "http://google.com")! + proxy.resolve(for: url) { result in + expectation.fulfill() + } + wait(for: [expectation], timeout: 10.0) + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measure() { + // Put the code you want to measure the time of here. + } + } + +} + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3d68a39 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2018 rinold + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/ProxyResolver.podspec b/ProxyResolver.podspec new file mode 100644 index 0000000..70e2165 --- /dev/null +++ b/ProxyResolver.podspec @@ -0,0 +1,43 @@ +# +# Be sure to run `pod lib lint ProxyResolver.podspec' to ensure this is a +# valid spec before submitting. +# +# Any lines starting with a # are optional, but their use is encouraged +# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html +# + +Pod::Spec.new do |s| + s.name = 'ProxyResolver' + s.version = '0.1.0' + s.summary = 'A short description of ProxyResolver.' + +# This description is used to generate tags and improve search results. +# * Think: What does it do? Why did you write it? What is the focus? +# * Try to keep it short, snappy and to the point. +# * Write the description between the DESC delimiters below. +# * Finally, don't worry about the indent, CocoaPods strips it! + + s.description = <<-DESC +TODO: Add long description of the pod here. + DESC + + s.homepage = 'https://github.com/rinold/ProxyResolver' + # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' + s.license = { :type => 'MIT', :file => 'LICENSE' } + s.author = { 'rinold' => 'mihail.churbanov@gmail.com' } + s.source = { :git => 'https://github.com/rinold/ProxyResolver.git', :tag => s.version.to_s } + # s.social_media_url = 'https://twitter.com/' + + s.platform = :osx + s.osx.deployment_target = "10.10" + + s.source_files = 'ProxyResolver/Classes/**/*' + + # s.resource_bundles = { + # 'ProxyResolver' => ['ProxyResolver/Assets/*.png'] + # } + + # s.public_header_files = 'Pod/Classes/**/*.h' + # s.frameworks = 'Cocoa' + # s.dependency 'AFNetworking', '~> 2.3' +end diff --git a/ProxyResolver/Assets/.gitkeep b/ProxyResolver/Assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ProxyResolver/Classes/.gitkeep b/ProxyResolver/Classes/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ProxyResolver/Classes/ProxyResolver.swift b/ProxyResolver/Classes/ProxyResolver.swift new file mode 100644 index 0000000..ee065cb --- /dev/null +++ b/ProxyResolver/Classes/ProxyResolver.swift @@ -0,0 +1,268 @@ +// +// ProxyResolver.swift +// ProxyConfig +// +// Created by Mikhail Churbanov on 16/04/2018. +// Copyright © 2018 Mikhail Churbanov. All rights reserved. +// + +import Foundation + +public enum ProxyType { + case none + case autoConfigurationUrl + case autoConfigurationScript + case http + case https + case socks + + fileprivate init?(from cfProxyType: CFString) { + switch cfProxyType { + case kCFProxyTypeNone: + self = .none + case kCFProxyTypeAutoConfigurationURL: + self = .autoConfigurationUrl + case kCFProxyTypeAutoConfigurationJavaScript: + self = .autoConfigurationScript + case kCFProxyTypeHTTP: + self = .http + case kCFProxyTypeHTTPS: + self = .https + case kCFProxyTypeSOCKS: + self = .socks + + default: return nil + } + } +} + +public struct Credentials { + public let username: String + public let password: String +} + +public struct Proxy { + public let type: ProxyType + public let host: String + public let port: UInt32 + + public var credentials: Credentials? { + return ProxyResolver.getCredentials(for: host) + } + + public static let none = Proxy(type: .none, host: "", port: 0) +} + +public enum ResolutionResult { + case success(ResultType?) + case failure(Error) +} + +public enum ProxyResolutionError: Error { + case proxyTypeUnsupported(String) + case unexpectedError(Error?) + case allFailed([Error]) +} + +public typealias ProxyResolutionCompletion = (ResolutionResult) -> Void +public typealias ProxiesResolutionCompletion = (ResolutionResult<[Proxy]>) -> Void + +// MARK: - ProxyResolver class + +public class ProxyResolver { + + private let supportedAutoConfigUrlShemes = ["http", "https"] + private let shemeNormalizationRules = ["ws": "http", + "wss": "https"] + + // MARK: Public Methods + + public init() {} // TODO: Configuration for properties above + + public func resolve(for url: URL, completion: @escaping ProxyResolutionCompletion) { + guard let normalizedUrl = urlWithNormalizedSheme(from: url) else { return } + guard let proxiesConfig = getSystemConfigProxies(for: normalizedUrl), + let firstProxyConfig = proxiesConfig.first + else { + let error = ProxyResolutionError.unexpectedError(nil) + completion(.failure(error)) + return + } + var i = 0 + var errors = [Error]() + var tryNextOnErrorCompletion: ProxyResolutionCompletion! + tryNextOnErrorCompletion = { result in + i += 1 + switch result { + case .failure(let error): + errors.append(error) + guard i < proxiesConfig.count else { + let error = ProxyResolutionError.allFailed(errors) + completion(.failure(error)) + return + } + self.resolveProxy(from: proxiesConfig[i], for: normalizedUrl, completion: tryNextOnErrorCompletion) + return + case .success(let proxy): + completion(.success(proxy)) + return + } + } + resolveProxy(from: firstProxyConfig, for: normalizedUrl, completion: tryNextOnErrorCompletion) + } + + public func resolveAll(for url: URL, completion: @escaping ProxiesResolutionCompletion) { + guard let normalizedUrl = urlWithNormalizedSheme(from: url) else { return } + guard let proxies = getSystemConfigProxies(for: normalizedUrl) else { return } + // resolveProxies(from: proxies, for: url, completion: completion) + } + + // MARK: Private Methods + + private func getSystemConfigProxies(for url: URL) -> [[CFString: AnyObject]]? { + guard let systemSettings = CFNetworkCopySystemProxySettings()?.takeRetainedValue() else { return nil } + let cfProxies = CFNetworkCopyProxiesForURL(url as CFURL, systemSettings).takeRetainedValue() + return cfProxies as? [[CFString: AnyObject]] + } + + private func resolveProxies(from proxies: [CFDictionary], for url: URL, completion: @escaping ProxyResolutionCompletion) { + for proxyConfig in proxies.compactMap({ $0 as? [CFString: AnyObject] }) { + print (proxyConfig) + // getProxy(from: proxyConfig, for: url) + } + } + + private func resolveProxy(from config: [CFString: AnyObject], for url: URL, + completion: @escaping ProxyResolutionCompletion) { + + guard let proxyTypeValue = config[kCFProxyTypeKey] else { + let error = ProxyResolutionError.unexpectedError(nil) + completion(.failure(error)) + return + } + let cfProxyType = proxyTypeValue as! CFString + guard let proxyType = ProxyType(from: cfProxyType) else { + let error = ProxyResolutionError.proxyTypeUnsupported(cfProxyType as String) + completion(.failure(error)) + return + } + + switch proxyType { + case .autoConfigurationUrl: + guard let cfAutoConfigUrl = config[kCFProxyAutoConfigurationURLKey], + let urlString = cfAutoConfigUrl as? String, + let scriptUrl = URL(string: urlString) + else { + return + } + fetchPacScript(from: scriptUrl) { scriptContent, error in + guard let scriptContent = scriptContent else { return } + self.executePac(script: scriptContent, for: url) + } + + case .autoConfigurationScript: + guard let cfAutoConfigScript = config[kCFProxyAutoConfigurationJavaScriptKey], + let scriptContent = cfAutoConfigScript as? String + else { + return + } + executePac(script: scriptContent, for: url) + + case .http, .https, .socks: + guard let cfProxyHost = config[kCFProxyHostNameKey], + let proxyHost = cfProxyHost as? String, + let cfProxyPort = config[kCFProxyPortNumberKey], + let proxyPort = (cfProxyPort as? NSNumber)?.uint32Value + else { + let error = ProxyResolutionError.unexpectedError(nil) + completion(.failure(error)) + return + } + let proxy = Proxy(type: proxyType, host: proxyHost, port: proxyPort) + completion(.success(proxy)) + + case .none: + completion(.success(nil)) + } + } + + private func fetchPacScript(from url: URL, completion: @escaping (String?, Error?) -> Void) { + if url.isFileURL, let scriptContents = try? String(contentsOfFile: url.absoluteString) { + completion(scriptContents, nil) + return + } + + guard let scheme = url.scheme?.lowercased(), + supportedAutoConfigUrlShemes.contains(scheme) + else { + completion(nil, nil) + return + } + + let request = URLRequest(url: url) + let task = URLSession.shared.dataTask(with: request) { (data, response, error) in + if error == nil, let data = data, let scriptContents = String(data: data, encoding: .utf8) { + completion(scriptContents, nil) + } else { + completion(nil, error) + } + } + task.resume() + } + + private func executePac(script: String, for url: URL) { + // From: http://developer.apple.com/samplecode/CFProxySupportTool/listing1.html + // Work around . This dummy call to + // CFNetworkCopyProxiesForURL initialise some state within CFNetwork + // that is required by CFNetworkCopyProxiesForAutoConfigurationScript. + _ = CFNetworkCopyProxiesForURL(url as CFURL, NSDictionary()).takeRetainedValue() + + var error: Unmanaged? + let proxiesCopy = CFNetworkCopyProxiesForAutoConfigurationScript(script as CFString, url as CFURL, &error) + guard error == nil, + let cfProxies = proxiesCopy?.takeRetainedValue(), + let proxies = cfProxies as? [CFDictionary] + else { + return + } + + resolveProxies(from: proxies, for: url) { proxies in + + } + } + + // MARK: - Private Helper Methods + + private func urlWithNormalizedSheme(from url: URL) -> URL? { + guard var urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: true), + let scheme = urlComponents.scheme + else { + return nil + } + urlComponents.scheme = shemeNormalizationRules[scheme] ?? scheme + return urlComponents.url + } + + fileprivate class func getCredentials(for host: String) -> Credentials? { + let query: [String: Any] = [kSecClass as String: kSecClassInternetPassword, + kSecAttrServer as String: host, + kSecMatchLimit as String: kSecMatchLimitOne, + kSecReturnAttributes as String: true, + kSecReturnData as String: true] + + var item: CFTypeRef? + let status = SecItemCopyMatching(query as CFDictionary, &item) + guard status == errSecSuccess else { return nil } + + guard let existingItem = item as? [String : Any], + let passwordData = existingItem[kSecValueData as String] as? Data, + let password = String(data: passwordData, encoding: .utf8), + let account = existingItem[kSecAttrAccount as String] as? String + else { + return nil + } + + return Credentials(username: account, password: password) + } + +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..0bd5b07 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# ProxyResolver + +[![CI Status](https://img.shields.io/travis/rinold/ProxyResolver.svg?style=flat)](https://travis-ci.org/rinold/ProxyResolver) +[![Version](https://img.shields.io/cocoapods/v/ProxyResolver.svg?style=flat)](https://cocoapods.org/pods/ProxyResolver) +[![License](https://img.shields.io/cocoapods/l/ProxyResolver.svg?style=flat)](https://cocoapods.org/pods/ProxyResolver) +[![Platform](https://img.shields.io/cocoapods/p/ProxyResolver.svg?style=flat)](https://cocoapods.org/pods/ProxyResolver) + +## Example + +To run the example project, clone the repo, and run `pod install` from the Example directory first. + +## Requirements + +## Installation + +ProxyResolver is available through [CocoaPods](https://cocoapods.org). To install +it, simply add the following line to your Podfile: + +```ruby +pod 'ProxyResolver' +``` + +## Author + +rinold, mihail.churbanov@gmail.com + +## License + +ProxyResolver is available under the MIT license. See the LICENSE file for more info. diff --git a/_Pods.xcodeproj b/_Pods.xcodeproj new file mode 120000 index 0000000..3c5a8e7 --- /dev/null +++ b/_Pods.xcodeproj @@ -0,0 +1 @@ +Example/Pods/Pods.xcodeproj \ No newline at end of file