├── .gitignore ├── .gitmodules ├── .travis.yml ├── AFNetworkActivityLogger.podspec ├── AFNetworkActivityLogger.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── xcshareddata │ └── xcschemes │ ├── AFNetworkActivityLogger OS X.xcscheme │ ├── AFNetworkActivityLogger iOS.xcscheme │ ├── AFNetworkActivityLogger tvOS.xcscheme │ └── AFNetworkActivityLogger watchOS.xcscheme ├── AFNetworkActivityLogger.xcworkspace └── contents.xcworkspacedata ├── AFNetworkActivityLogger ├── AFNetworkActivityConsoleLogger.h ├── AFNetworkActivityConsoleLogger.m ├── AFNetworkActivityLogger.h ├── AFNetworkActivityLogger.m └── AFNetworkActivityLoggerProtocol.h ├── CHANGELOG.md ├── Cartfile ├── Cartfile.resolved ├── LICENSE ├── README.md ├── Supporting Files ├── AFNetworkActivityLogger.h ├── Info.plist └── modulemap.module ├── Tests ├── AFNetworkActivityLoggerTests.m └── Info.plist └── fastlane ├── .env ├── .env.default ├── .env.deploy ├── .env.ios10_xcode8 ├── .env.ios11_xcode9 ├── .env.ios8_xcode7 ├── .env.ios9_xcode7 ├── .env.osx ├── .env.tvos11_xcode9 ├── Fastfile └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io/api/xcode 2 | 3 | ### Xcode ### 4 | # Xcode 5 | # 6 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 7 | .DS_Store 8 | ## Build generated 9 | #build/ 10 | DerivedData 11 | 12 | ## Various settings 13 | *.pbxuser 14 | !default.pbxuser 15 | *.mode1v3 16 | !default.mode1v3 17 | *.mode2v3 18 | !default.mode2v3 19 | *.perspectivev3 20 | !default.perspectivev3 21 | xcuserdata 22 | 23 | ## Other 24 | *.xccheckout 25 | *.moved-aside 26 | *.xcuserstate 27 | 28 | # Fastlane 29 | /fastlane/report.xml 30 | /fastlane/.env*private* 31 | fastlane/test-output/* 32 | Carthage/Build 33 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "Carthage/Checkouts/AFNetworking"] 2 | url = https://github.com/AFNetworking/AFNetworking.git 3 | path = Carthage/Checkouts/AFNetworking 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: objective-c 2 | osx_image: xcode7.1 3 | sudo: false 4 | env: 5 | global: 6 | - LC_CTYPE=en_US.UTF-8 7 | - LANG=en_US.UTF-8 8 | - LANGUAGE=en_US.UTF-8 9 | - FASTLANE_LANE=test_framework 10 | matrix: 11 | include: 12 | - osx_image: xcode9.2 13 | env: FASTLANE_LANE=code_coverage FASTLANE_ENV=default 14 | - osx_image: xcode9.2 15 | env: FASTLANE_ENV=ios11_xcode9 16 | - osx_image: xcode9.2 17 | env: FASTLANE_ENV=tvos11_xcode9 18 | - osx_image: xcode9.2 19 | env: FASTLANE_ENV=osx 20 | - osx_image: xcode8.3 21 | env: FASTLANE_ENV=ios10_xcode8 22 | - osx_image: xcode7.3 23 | env: FASTLANE_ENV=ios9_xcode7 24 | - osx_image: xcode7.3 25 | env: FASTLANE_ENV=ios8_xcode7 26 | before_install: 27 | # Force bundler 1.12.5 because version 1.13 has issues, see https://github.com/fastlane/fastlane/issues/6065#issuecomment-246044617 28 | - gem uninstall bundler -v '>1.12.5' --force --executables || echo "bundler >1.12.5 is not installed" 29 | - gem install bundler -v 1.12.5 --no-rdoc --no-ri --no-document --quiet 30 | - gem install fastlane --no-rdoc --no-ri --no-document --quiet 31 | - gem install cocoapods --no-rdoc --no-ri --no-document --quiet 32 | - gem install xcpretty --no-rdoc --no-ri --no-document --quiet 33 | script: 34 | - set -o pipefail 35 | - carthage build 36 | - fastlane $FASTLANE_LANE configuration:Debug --env $FASTLANE_ENV 37 | - fastlane $FASTLANE_LANE configuration:Release --env $FASTLANE_ENV 38 | after_success: 39 | - if [ "$FASTLANE_LANE" == "code_coverage" ]; then 40 | bash <(curl -s https://codecov.io/bash); 41 | fi 42 | after_failure: 43 | - cat -n ~/Library/Logs/scan/* 44 | - cat -n $TMPDIR/com.apple.dt.XCTest-status/Session*.log 45 | - cat -n ~/Library/Logs/DiagnosticReports/xctest*.crash 46 | # deploy: 47 | # provider: script 48 | # script: fastlane complete_framework_release --env deploy 49 | # on: 50 | # tags: true 51 | -------------------------------------------------------------------------------- /AFNetworkActivityLogger.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = 'AFNetworkActivityLogger' 3 | s.version = '3.0.0' 4 | s.license = 'MIT' 5 | s.summary = 'AFNetworking 3.0 Extension for Network Request Logging' 6 | s.homepage = 'https://github.com/AFNetworking/AFNetworkActivityLogger' 7 | s.authors = { 'Mattt Thompson' => 'm@mattt.me' } 8 | s.source = { :git => 'https://github.com/AFNetworking/AFNetworkActivityLogger.git', :tag => s.version } 9 | s.source_files = 'AFNetworkActivityLogger' 10 | s.requires_arc = true 11 | s.ios.deployment_target = '7.0' 12 | s.osx.deployment_target = '10.9' 13 | s.watchos.deployment_target = '2.0' 14 | s.tvos.deployment_target = '9.0' 15 | 16 | s.dependency 'AFNetworking/NSURLSession', '~> 3.0' 17 | end 18 | -------------------------------------------------------------------------------- /AFNetworkActivityLogger.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 297DF56B1C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 297DF5691C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; 11 | 297DF56C1C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 297DF5691C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; 12 | 297DF56D1C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 297DF5691C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; 13 | 297DF56E1C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 297DF5691C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; 14 | 297DF5751C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 297DF5731C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; 15 | 297DF5761C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 297DF5731C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; 16 | 297DF5771C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 297DF5731C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; 17 | 297DF5781C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 297DF5731C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; 18 | 297DF5791C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 297DF5741C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m */; }; 19 | 297DF57A1C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 297DF5741C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m */; }; 20 | 297DF57B1C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 297DF5741C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m */; }; 21 | 297DF57C1C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 297DF5741C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m */; }; 22 | 297DF5841C1F1CA2001FA807 /* AFNetworkActivityLoggerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 297DF5831C1F1CA2001FA807 /* AFNetworkActivityLoggerTests.m */; }; 23 | 297DF5861C1F1CA2001FA807 /* AFNetworkActivityLogger.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29D96E651BCC34CD00F571A5 /* AFNetworkActivityLogger.framework */; }; 24 | 297DF58C1C1F1CF1001FA807 /* AFNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29D96E781BCC3B9B00F571A5 /* AFNetworking.framework */; }; 25 | 29D77AAA1BCC49E9005B1EF5 /* AFNetworkActivityLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 29D96E721BCC357B00F571A5 /* AFNetworkActivityLogger.m */; }; 26 | 29D77AAC1BCC4A01005B1EF5 /* AFNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29D77AAB1BCC4A01005B1EF5 /* AFNetworking.framework */; }; 27 | 29D77AAE1BCC4A68005B1EF5 /* AFNetworkActivityLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D96E711BCC357B00F571A5 /* AFNetworkActivityLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; 28 | 29D77AAF1BCC4A6E005B1EF5 /* AFNetworkActivityLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D96E901BCC3F1D00F571A5 /* AFNetworkActivityLogger.h */; }; 29 | 29D77ABD1BCC4C41005B1EF5 /* AFNetworkActivityLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 29D96E721BCC357B00F571A5 /* AFNetworkActivityLogger.m */; }; 30 | 29D77ABE1BCC4C65005B1EF5 /* AFNetworkActivityLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D96E711BCC357B00F571A5 /* AFNetworkActivityLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; 31 | 29D77ABF1BCC4C6C005B1EF5 /* AFNetworkActivityLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D96E901BCC3F1D00F571A5 /* AFNetworkActivityLogger.h */; }; 32 | 29D77AC21BCC4C8F005B1EF5 /* AFNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29D77AC11BCC4C8F005B1EF5 /* AFNetworking.framework */; }; 33 | 29D77AD11BCC4D96005B1EF5 /* AFNetworkActivityLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 29D96E721BCC357B00F571A5 /* AFNetworkActivityLogger.m */; }; 34 | 29D77AD31BCC4DA2005B1EF5 /* AFNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29D77AD21BCC4DA2005B1EF5 /* AFNetworking.framework */; }; 35 | 29D77AD51BCC4DB9005B1EF5 /* AFNetworkActivityLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D96E711BCC357B00F571A5 /* AFNetworkActivityLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; 36 | 29D77AD61BCC4DBF005B1EF5 /* AFNetworkActivityLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D96E901BCC3F1D00F571A5 /* AFNetworkActivityLogger.h */; }; 37 | 29D96E731BCC357B00F571A5 /* AFNetworkActivityLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D96E711BCC357B00F571A5 /* AFNetworkActivityLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38 | 29D96E741BCC357B00F571A5 /* AFNetworkActivityLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 29D96E721BCC357B00F571A5 /* AFNetworkActivityLogger.m */; }; 39 | 29D96E791BCC3B9B00F571A5 /* AFNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29D96E781BCC3B9B00F571A5 /* AFNetworking.framework */; }; 40 | 29D96E921BCC3F1D00F571A5 /* AFNetworkActivityLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D96E901BCC3F1D00F571A5 /* AFNetworkActivityLogger.h */; }; 41 | 29F28C241C1F1D84006BD785 /* AFNetworking.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29D96E781BCC3B9B00F571A5 /* AFNetworking.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 42 | 29F28C2E1C1F2628006BD785 /* AFNetworkActivityLogger.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29D77AC91BCC4D4D005B1EF5 /* AFNetworkActivityLogger.framework */; }; 43 | 29F28C341C1F265C006BD785 /* AFNetworkActivityLoggerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 297DF5831C1F1CA2001FA807 /* AFNetworkActivityLoggerTests.m */; }; 44 | 29F28C351C1F2666006BD785 /* AFNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29D77AD21BCC4DA2005B1EF5 /* AFNetworking.framework */; }; 45 | 29F28C371C1F267A006BD785 /* AFNetworking.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29D77AD21BCC4DA2005B1EF5 /* AFNetworking.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 46 | 29F28C411C1F2C54006BD785 /* AFNetworkActivityLogger.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29D77AA21BCC49C9005B1EF5 /* AFNetworkActivityLogger.framework */; }; 47 | 29F28C471C1F2C76006BD785 /* AFNetworkActivityLoggerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 297DF5831C1F1CA2001FA807 /* AFNetworkActivityLoggerTests.m */; }; 48 | 29F28C481C1F2C81006BD785 /* AFNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29D77AAB1BCC4A01005B1EF5 /* AFNetworking.framework */; }; 49 | 29F28C4B1C1F2C9D006BD785 /* AFNetworking.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 29D77AAB1BCC4A01005B1EF5 /* AFNetworking.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 50 | /* End PBXBuildFile section */ 51 | 52 | /* Begin PBXContainerItemProxy section */ 53 | 297DF5871C1F1CA2001FA807 /* PBXContainerItemProxy */ = { 54 | isa = PBXContainerItemProxy; 55 | containerPortal = 29D96E5C1BCC34CD00F571A5 /* Project object */; 56 | proxyType = 1; 57 | remoteGlobalIDString = 29D96E641BCC34CD00F571A5; 58 | remoteInfo = "AFNetworkActivityLogger iOS"; 59 | }; 60 | 29F28C2F1C1F2628006BD785 /* PBXContainerItemProxy */ = { 61 | isa = PBXContainerItemProxy; 62 | containerPortal = 29D96E5C1BCC34CD00F571A5 /* Project object */; 63 | proxyType = 1; 64 | remoteGlobalIDString = 29D77AC81BCC4D4D005B1EF5; 65 | remoteInfo = "AFNetworkActivityLogger tvOS"; 66 | }; 67 | 29F28C421C1F2C54006BD785 /* PBXContainerItemProxy */ = { 68 | isa = PBXContainerItemProxy; 69 | containerPortal = 29D96E5C1BCC34CD00F571A5 /* Project object */; 70 | proxyType = 1; 71 | remoteGlobalIDString = 29D77AA11BCC49C9005B1EF5; 72 | remoteInfo = "AFNetworkActivityLogger OS X"; 73 | }; 74 | /* End PBXContainerItemProxy section */ 75 | 76 | /* Begin PBXCopyFilesBuildPhase section */ 77 | 29D77AC01BCC4C7F005B1EF5 /* CopyFiles */ = { 78 | isa = PBXCopyFilesBuildPhase; 79 | buildActionMask = 2147483647; 80 | dstPath = ""; 81 | dstSubfolderSpec = 7; 82 | files = ( 83 | ); 84 | runOnlyForDeploymentPostprocessing = 0; 85 | }; 86 | 29F28C231C1F1D7E006BD785 /* CopyFiles */ = { 87 | isa = PBXCopyFilesBuildPhase; 88 | buildActionMask = 2147483647; 89 | dstPath = ""; 90 | dstSubfolderSpec = 10; 91 | files = ( 92 | 29F28C241C1F1D84006BD785 /* AFNetworking.framework in CopyFiles */, 93 | ); 94 | runOnlyForDeploymentPostprocessing = 0; 95 | }; 96 | 29F28C361C1F2671006BD785 /* CopyFiles */ = { 97 | isa = PBXCopyFilesBuildPhase; 98 | buildActionMask = 2147483647; 99 | dstPath = ""; 100 | dstSubfolderSpec = 10; 101 | files = ( 102 | 29F28C371C1F267A006BD785 /* AFNetworking.framework in CopyFiles */, 103 | ); 104 | runOnlyForDeploymentPostprocessing = 0; 105 | }; 106 | 29F28C4A1C1F2C92006BD785 /* CopyFiles */ = { 107 | isa = PBXCopyFilesBuildPhase; 108 | buildActionMask = 2147483647; 109 | dstPath = ""; 110 | dstSubfolderSpec = 10; 111 | files = ( 112 | 29F28C4B1C1F2C9D006BD785 /* AFNetworking.framework in CopyFiles */, 113 | ); 114 | runOnlyForDeploymentPostprocessing = 0; 115 | }; 116 | /* End PBXCopyFilesBuildPhase section */ 117 | 118 | /* Begin PBXFileReference section */ 119 | 297DF5691C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFNetworkActivityLoggerProtocol.h; sourceTree = ""; }; 120 | 297DF5731C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFNetworkActivityConsoleLogger.h; sourceTree = ""; }; 121 | 297DF5741C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFNetworkActivityConsoleLogger.m; sourceTree = ""; }; 122 | 297DF5811C1F1CA2001FA807 /* AFNetworkActivityLoggerTests iOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "AFNetworkActivityLoggerTests iOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 123 | 297DF5831C1F1CA2001FA807 /* AFNetworkActivityLoggerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AFNetworkActivityLoggerTests.m; sourceTree = ""; }; 124 | 297DF5851C1F1CA2001FA807 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 125 | 29D77AA21BCC49C9005B1EF5 /* AFNetworkActivityLogger.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AFNetworkActivityLogger.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 126 | 29D77AAB1BCC4A01005B1EF5 /* AFNetworking.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AFNetworking.framework; path = Carthage/Build/Mac/AFNetworking.framework; sourceTree = ""; }; 127 | 29D77AB51BCC4BDD005B1EF5 /* AFNetworkActivityLogger.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AFNetworkActivityLogger.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 128 | 29D77AC11BCC4C8F005B1EF5 /* AFNetworking.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AFNetworking.framework; path = Carthage/Build/watchOS/AFNetworking.framework; sourceTree = ""; }; 129 | 29D77AC91BCC4D4D005B1EF5 /* AFNetworkActivityLogger.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AFNetworkActivityLogger.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 130 | 29D77AD21BCC4DA2005B1EF5 /* AFNetworking.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AFNetworking.framework; path = Carthage/Build/tvOS/AFNetworking.framework; sourceTree = ""; }; 131 | 29D96E651BCC34CD00F571A5 /* AFNetworkActivityLogger.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AFNetworkActivityLogger.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 132 | 29D96E711BCC357B00F571A5 /* AFNetworkActivityLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFNetworkActivityLogger.h; sourceTree = ""; }; 133 | 29D96E721BCC357B00F571A5 /* AFNetworkActivityLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFNetworkActivityLogger.m; sourceTree = ""; }; 134 | 29D96E781BCC3B9B00F571A5 /* AFNetworking.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AFNetworking.framework; path = Carthage/Build/iOS/AFNetworking.framework; sourceTree = ""; }; 135 | 29D96E901BCC3F1D00F571A5 /* AFNetworkActivityLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFNetworkActivityLogger.h; sourceTree = ""; }; 136 | 29D96E911BCC3F1D00F571A5 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 137 | 29F28C291C1F2628006BD785 /* AFNetworkActivityLoggerTests tvOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "AFNetworkActivityLoggerTests tvOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 138 | 29F28C3C1C1F2C54006BD785 /* AFNetworkActivityLoggerTests OS X Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "AFNetworkActivityLoggerTests OS X Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 139 | /* End PBXFileReference section */ 140 | 141 | /* Begin PBXFrameworksBuildPhase section */ 142 | 297DF57E1C1F1CA2001FA807 /* Frameworks */ = { 143 | isa = PBXFrameworksBuildPhase; 144 | buildActionMask = 2147483647; 145 | files = ( 146 | 297DF5861C1F1CA2001FA807 /* AFNetworkActivityLogger.framework in Frameworks */, 147 | 297DF58C1C1F1CF1001FA807 /* AFNetworking.framework in Frameworks */, 148 | ); 149 | runOnlyForDeploymentPostprocessing = 0; 150 | }; 151 | 29D77A9E1BCC49C9005B1EF5 /* Frameworks */ = { 152 | isa = PBXFrameworksBuildPhase; 153 | buildActionMask = 2147483647; 154 | files = ( 155 | 29D77AAC1BCC4A01005B1EF5 /* AFNetworking.framework in Frameworks */, 156 | ); 157 | runOnlyForDeploymentPostprocessing = 0; 158 | }; 159 | 29D77AB11BCC4BDD005B1EF5 /* Frameworks */ = { 160 | isa = PBXFrameworksBuildPhase; 161 | buildActionMask = 2147483647; 162 | files = ( 163 | 29D77AC21BCC4C8F005B1EF5 /* AFNetworking.framework in Frameworks */, 164 | ); 165 | runOnlyForDeploymentPostprocessing = 0; 166 | }; 167 | 29D77AC51BCC4D4D005B1EF5 /* Frameworks */ = { 168 | isa = PBXFrameworksBuildPhase; 169 | buildActionMask = 2147483647; 170 | files = ( 171 | 29D77AD31BCC4DA2005B1EF5 /* AFNetworking.framework in Frameworks */, 172 | ); 173 | runOnlyForDeploymentPostprocessing = 0; 174 | }; 175 | 29D96E611BCC34CD00F571A5 /* Frameworks */ = { 176 | isa = PBXFrameworksBuildPhase; 177 | buildActionMask = 2147483647; 178 | files = ( 179 | 29D96E791BCC3B9B00F571A5 /* AFNetworking.framework in Frameworks */, 180 | ); 181 | runOnlyForDeploymentPostprocessing = 0; 182 | }; 183 | 29F28C261C1F2628006BD785 /* Frameworks */ = { 184 | isa = PBXFrameworksBuildPhase; 185 | buildActionMask = 2147483647; 186 | files = ( 187 | 29F28C2E1C1F2628006BD785 /* AFNetworkActivityLogger.framework in Frameworks */, 188 | 29F28C351C1F2666006BD785 /* AFNetworking.framework in Frameworks */, 189 | ); 190 | runOnlyForDeploymentPostprocessing = 0; 191 | }; 192 | 29F28C391C1F2C54006BD785 /* Frameworks */ = { 193 | isa = PBXFrameworksBuildPhase; 194 | buildActionMask = 2147483647; 195 | files = ( 196 | 29F28C411C1F2C54006BD785 /* AFNetworkActivityLogger.framework in Frameworks */, 197 | 29F28C481C1F2C81006BD785 /* AFNetworking.framework in Frameworks */, 198 | ); 199 | runOnlyForDeploymentPostprocessing = 0; 200 | }; 201 | /* End PBXFrameworksBuildPhase section */ 202 | 203 | /* Begin PBXGroup section */ 204 | 297DF5821C1F1CA2001FA807 /* AFNetworkActivityLoggerTests */ = { 205 | isa = PBXGroup; 206 | children = ( 207 | 297DF5831C1F1CA2001FA807 /* AFNetworkActivityLoggerTests.m */, 208 | 297DF5851C1F1CA2001FA807 /* Info.plist */, 209 | ); 210 | name = AFNetworkActivityLoggerTests; 211 | path = Tests; 212 | sourceTree = ""; 213 | }; 214 | 29D77AD41BCC4DA8005B1EF5 /* Dependency */ = { 215 | isa = PBXGroup; 216 | children = ( 217 | 29D77AD21BCC4DA2005B1EF5 /* AFNetworking.framework */, 218 | 29D77AC11BCC4C8F005B1EF5 /* AFNetworking.framework */, 219 | 29D77AAB1BCC4A01005B1EF5 /* AFNetworking.framework */, 220 | 29D96E781BCC3B9B00F571A5 /* AFNetworking.framework */, 221 | ); 222 | name = Dependency; 223 | sourceTree = ""; 224 | }; 225 | 29D96E5B1BCC34CD00F571A5 = { 226 | isa = PBXGroup; 227 | children = ( 228 | 29D77AD41BCC4DA8005B1EF5 /* Dependency */, 229 | 29D96E701BCC357B00F571A5 /* AFNetworkActivityLogger */, 230 | 29D96E8F1BCC3F1D00F571A5 /* Supporting Files */, 231 | 297DF5821C1F1CA2001FA807 /* AFNetworkActivityLoggerTests */, 232 | 29D96E661BCC34CD00F571A5 /* Products */, 233 | ); 234 | sourceTree = ""; 235 | }; 236 | 29D96E661BCC34CD00F571A5 /* Products */ = { 237 | isa = PBXGroup; 238 | children = ( 239 | 29D96E651BCC34CD00F571A5 /* AFNetworkActivityLogger.framework */, 240 | 29D77AA21BCC49C9005B1EF5 /* AFNetworkActivityLogger.framework */, 241 | 29D77AB51BCC4BDD005B1EF5 /* AFNetworkActivityLogger.framework */, 242 | 29D77AC91BCC4D4D005B1EF5 /* AFNetworkActivityLogger.framework */, 243 | 297DF5811C1F1CA2001FA807 /* AFNetworkActivityLoggerTests iOS Tests.xctest */, 244 | 29F28C291C1F2628006BD785 /* AFNetworkActivityLoggerTests tvOS Tests.xctest */, 245 | 29F28C3C1C1F2C54006BD785 /* AFNetworkActivityLoggerTests OS X Tests.xctest */, 246 | ); 247 | name = Products; 248 | sourceTree = ""; 249 | }; 250 | 29D96E701BCC357B00F571A5 /* AFNetworkActivityLogger */ = { 251 | isa = PBXGroup; 252 | children = ( 253 | 29D96E711BCC357B00F571A5 /* AFNetworkActivityLogger.h */, 254 | 29D96E721BCC357B00F571A5 /* AFNetworkActivityLogger.m */, 255 | 297DF5691C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h */, 256 | 297DF5731C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h */, 257 | 297DF5741C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m */, 258 | ); 259 | path = AFNetworkActivityLogger; 260 | sourceTree = ""; 261 | }; 262 | 29D96E8F1BCC3F1D00F571A5 /* Supporting Files */ = { 263 | isa = PBXGroup; 264 | children = ( 265 | 29D96E901BCC3F1D00F571A5 /* AFNetworkActivityLogger.h */, 266 | 29D96E911BCC3F1D00F571A5 /* Info.plist */, 267 | ); 268 | path = "Supporting Files"; 269 | sourceTree = ""; 270 | }; 271 | /* End PBXGroup section */ 272 | 273 | /* Begin PBXHeadersBuildPhase section */ 274 | 29D77A9F1BCC49C9005B1EF5 /* Headers */ = { 275 | isa = PBXHeadersBuildPhase; 276 | buildActionMask = 2147483647; 277 | files = ( 278 | 297DF56C1C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h in Headers */, 279 | 29D77AAE1BCC4A68005B1EF5 /* AFNetworkActivityLogger.h in Headers */, 280 | 297DF5761C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h in Headers */, 281 | 29D77AAF1BCC4A6E005B1EF5 /* AFNetworkActivityLogger.h in Headers */, 282 | ); 283 | runOnlyForDeploymentPostprocessing = 0; 284 | }; 285 | 29D77AB21BCC4BDD005B1EF5 /* Headers */ = { 286 | isa = PBXHeadersBuildPhase; 287 | buildActionMask = 2147483647; 288 | files = ( 289 | 297DF56D1C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h in Headers */, 290 | 29D77ABE1BCC4C65005B1EF5 /* AFNetworkActivityLogger.h in Headers */, 291 | 297DF5771C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h in Headers */, 292 | 29D77ABF1BCC4C6C005B1EF5 /* AFNetworkActivityLogger.h in Headers */, 293 | ); 294 | runOnlyForDeploymentPostprocessing = 0; 295 | }; 296 | 29D77AC61BCC4D4D005B1EF5 /* Headers */ = { 297 | isa = PBXHeadersBuildPhase; 298 | buildActionMask = 2147483647; 299 | files = ( 300 | 297DF56E1C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h in Headers */, 301 | 29D77AD51BCC4DB9005B1EF5 /* AFNetworkActivityLogger.h in Headers */, 302 | 297DF5781C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h in Headers */, 303 | 29D77AD61BCC4DBF005B1EF5 /* AFNetworkActivityLogger.h in Headers */, 304 | ); 305 | runOnlyForDeploymentPostprocessing = 0; 306 | }; 307 | 29D96E621BCC34CD00F571A5 /* Headers */ = { 308 | isa = PBXHeadersBuildPhase; 309 | buildActionMask = 2147483647; 310 | files = ( 311 | 297DF56B1C1F0F72001FA807 /* AFNetworkActivityLoggerProtocol.h in Headers */, 312 | 29D96E731BCC357B00F571A5 /* AFNetworkActivityLogger.h in Headers */, 313 | 297DF5751C1F1058001FA807 /* AFNetworkActivityConsoleLogger.h in Headers */, 314 | 29D96E921BCC3F1D00F571A5 /* AFNetworkActivityLogger.h in Headers */, 315 | ); 316 | runOnlyForDeploymentPostprocessing = 0; 317 | }; 318 | /* End PBXHeadersBuildPhase section */ 319 | 320 | /* Begin PBXNativeTarget section */ 321 | 297DF5801C1F1CA2001FA807 /* AFNetworkActivityLoggerTests iOS Tests */ = { 322 | isa = PBXNativeTarget; 323 | buildConfigurationList = 297DF5891C1F1CA2001FA807 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLoggerTests iOS Tests" */; 324 | buildPhases = ( 325 | 297DF57D1C1F1CA2001FA807 /* Sources */, 326 | 297DF57E1C1F1CA2001FA807 /* Frameworks */, 327 | 297DF57F1C1F1CA2001FA807 /* Resources */, 328 | 29F28C231C1F1D7E006BD785 /* CopyFiles */, 329 | ); 330 | buildRules = ( 331 | ); 332 | dependencies = ( 333 | 297DF5881C1F1CA2001FA807 /* PBXTargetDependency */, 334 | ); 335 | name = "AFNetworkActivityLoggerTests iOS Tests"; 336 | productName = AFNetworkActivityLoggerTests; 337 | productReference = 297DF5811C1F1CA2001FA807 /* AFNetworkActivityLoggerTests iOS Tests.xctest */; 338 | productType = "com.apple.product-type.bundle.unit-test"; 339 | }; 340 | 29D77AA11BCC49C9005B1EF5 /* AFNetworkActivityLogger OS X */ = { 341 | isa = PBXNativeTarget; 342 | buildConfigurationList = 29D77AA71BCC49C9005B1EF5 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLogger OS X" */; 343 | buildPhases = ( 344 | 29D77A9D1BCC49C9005B1EF5 /* Sources */, 345 | 29D77A9E1BCC49C9005B1EF5 /* Frameworks */, 346 | 29D77A9F1BCC49C9005B1EF5 /* Headers */, 347 | 29D77AA01BCC49C9005B1EF5 /* Resources */, 348 | 29D77AAD1BCC4A12005B1EF5 /* ShellScript */, 349 | ); 350 | buildRules = ( 351 | ); 352 | dependencies = ( 353 | ); 354 | name = "AFNetworkActivityLogger OS X"; 355 | productName = "AFNetworkActivityLogger OS X"; 356 | productReference = 29D77AA21BCC49C9005B1EF5 /* AFNetworkActivityLogger.framework */; 357 | productType = "com.apple.product-type.framework"; 358 | }; 359 | 29D77AB41BCC4BDD005B1EF5 /* AFNetworkActivityLogger watchOS */ = { 360 | isa = PBXNativeTarget; 361 | buildConfigurationList = 29D77ABA1BCC4BDD005B1EF5 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLogger watchOS" */; 362 | buildPhases = ( 363 | 29D77AB01BCC4BDD005B1EF5 /* Sources */, 364 | 29D77AB11BCC4BDD005B1EF5 /* Frameworks */, 365 | 29D77AB21BCC4BDD005B1EF5 /* Headers */, 366 | 29D77AB31BCC4BDD005B1EF5 /* Resources */, 367 | 29D77AC01BCC4C7F005B1EF5 /* CopyFiles */, 368 | 29D77AC31BCC4C96005B1EF5 /* ShellScript */, 369 | ); 370 | buildRules = ( 371 | ); 372 | dependencies = ( 373 | ); 374 | name = "AFNetworkActivityLogger watchOS"; 375 | productName = "AFNetworkActivityLogger watchOS"; 376 | productReference = 29D77AB51BCC4BDD005B1EF5 /* AFNetworkActivityLogger.framework */; 377 | productType = "com.apple.product-type.framework"; 378 | }; 379 | 29D77AC81BCC4D4D005B1EF5 /* AFNetworkActivityLogger tvOS */ = { 380 | isa = PBXNativeTarget; 381 | buildConfigurationList = 29D77ACE1BCC4D4D005B1EF5 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLogger tvOS" */; 382 | buildPhases = ( 383 | 29D77AC41BCC4D4D005B1EF5 /* Sources */, 384 | 29D77AC51BCC4D4D005B1EF5 /* Frameworks */, 385 | 29D77AC61BCC4D4D005B1EF5 /* Headers */, 386 | 29D77AC71BCC4D4D005B1EF5 /* Resources */, 387 | 29D77AD71BCC4DC5005B1EF5 /* ShellScript */, 388 | ); 389 | buildRules = ( 390 | ); 391 | dependencies = ( 392 | ); 393 | name = "AFNetworkActivityLogger tvOS"; 394 | productName = AFNetworkActivityLogger; 395 | productReference = 29D77AC91BCC4D4D005B1EF5 /* AFNetworkActivityLogger.framework */; 396 | productType = "com.apple.product-type.framework"; 397 | }; 398 | 29D96E641BCC34CD00F571A5 /* AFNetworkActivityLogger iOS */ = { 399 | isa = PBXNativeTarget; 400 | buildConfigurationList = 29D96E6D1BCC34CD00F571A5 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLogger iOS" */; 401 | buildPhases = ( 402 | 29D96E601BCC34CD00F571A5 /* Sources */, 403 | 29D96E611BCC34CD00F571A5 /* Frameworks */, 404 | 29D96E621BCC34CD00F571A5 /* Headers */, 405 | 29D96E631BCC34CD00F571A5 /* Resources */, 406 | 29D96E771BCC36E700F571A5 /* ShellScript */, 407 | ); 408 | buildRules = ( 409 | ); 410 | dependencies = ( 411 | ); 412 | name = "AFNetworkActivityLogger iOS"; 413 | productName = AFNetworkActivityLogger; 414 | productReference = 29D96E651BCC34CD00F571A5 /* AFNetworkActivityLogger.framework */; 415 | productType = "com.apple.product-type.framework"; 416 | }; 417 | 29F28C281C1F2628006BD785 /* AFNetworkActivityLoggerTests tvOS Tests */ = { 418 | isa = PBXNativeTarget; 419 | buildConfigurationList = 29F28C311C1F2628006BD785 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLoggerTests tvOS Tests" */; 420 | buildPhases = ( 421 | 29F28C251C1F2628006BD785 /* Sources */, 422 | 29F28C261C1F2628006BD785 /* Frameworks */, 423 | 29F28C271C1F2628006BD785 /* Resources */, 424 | 29F28C361C1F2671006BD785 /* CopyFiles */, 425 | ); 426 | buildRules = ( 427 | ); 428 | dependencies = ( 429 | 29F28C301C1F2628006BD785 /* PBXTargetDependency */, 430 | ); 431 | name = "AFNetworkActivityLoggerTests tvOS Tests"; 432 | productName = "AFNetworkActivityLoggerTests tvOS Tests"; 433 | productReference = 29F28C291C1F2628006BD785 /* AFNetworkActivityLoggerTests tvOS Tests.xctest */; 434 | productType = "com.apple.product-type.bundle.unit-test"; 435 | }; 436 | 29F28C3B1C1F2C54006BD785 /* AFNetworkActivityLoggerTests OS X Tests */ = { 437 | isa = PBXNativeTarget; 438 | buildConfigurationList = 29F28C441C1F2C54006BD785 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLoggerTests OS X Tests" */; 439 | buildPhases = ( 440 | 29F28C381C1F2C54006BD785 /* Sources */, 441 | 29F28C391C1F2C54006BD785 /* Frameworks */, 442 | 29F28C3A1C1F2C54006BD785 /* Resources */, 443 | 29F28C4A1C1F2C92006BD785 /* CopyFiles */, 444 | ); 445 | buildRules = ( 446 | ); 447 | dependencies = ( 448 | 29F28C431C1F2C54006BD785 /* PBXTargetDependency */, 449 | ); 450 | name = "AFNetworkActivityLoggerTests OS X Tests"; 451 | productName = "AFNetworkActivityLoggerTests OS X Tests"; 452 | productReference = 29F28C3C1C1F2C54006BD785 /* AFNetworkActivityLoggerTests OS X Tests.xctest */; 453 | productType = "com.apple.product-type.bundle.unit-test"; 454 | }; 455 | /* End PBXNativeTarget section */ 456 | 457 | /* Begin PBXProject section */ 458 | 29D96E5C1BCC34CD00F571A5 /* Project object */ = { 459 | isa = PBXProject; 460 | attributes = { 461 | LastUpgradeCheck = 0920; 462 | ORGANIZATIONNAME = Alamofire; 463 | TargetAttributes = { 464 | 297DF5801C1F1CA2001FA807 = { 465 | CreatedOnToolsVersion = 7.1.1; 466 | }; 467 | 29D77AA11BCC49C9005B1EF5 = { 468 | CreatedOnToolsVersion = 7.1; 469 | }; 470 | 29D77AB41BCC4BDD005B1EF5 = { 471 | CreatedOnToolsVersion = 7.1; 472 | }; 473 | 29D77AC81BCC4D4D005B1EF5 = { 474 | CreatedOnToolsVersion = 7.1; 475 | }; 476 | 29D96E641BCC34CD00F571A5 = { 477 | CreatedOnToolsVersion = 7.0.1; 478 | }; 479 | 29F28C281C1F2628006BD785 = { 480 | CreatedOnToolsVersion = 7.1.1; 481 | }; 482 | 29F28C3B1C1F2C54006BD785 = { 483 | CreatedOnToolsVersion = 7.1.1; 484 | }; 485 | }; 486 | }; 487 | buildConfigurationList = 29D96E5F1BCC34CD00F571A5 /* Build configuration list for PBXProject "AFNetworkActivityLogger" */; 488 | compatibilityVersion = "Xcode 3.2"; 489 | developmentRegion = English; 490 | hasScannedForEncodings = 0; 491 | knownRegions = ( 492 | en, 493 | ); 494 | mainGroup = 29D96E5B1BCC34CD00F571A5; 495 | productRefGroup = 29D96E661BCC34CD00F571A5 /* Products */; 496 | projectDirPath = ""; 497 | projectRoot = ""; 498 | targets = ( 499 | 29D96E641BCC34CD00F571A5 /* AFNetworkActivityLogger iOS */, 500 | 29D77AA11BCC49C9005B1EF5 /* AFNetworkActivityLogger OS X */, 501 | 29D77AB41BCC4BDD005B1EF5 /* AFNetworkActivityLogger watchOS */, 502 | 29D77AC81BCC4D4D005B1EF5 /* AFNetworkActivityLogger tvOS */, 503 | 297DF5801C1F1CA2001FA807 /* AFNetworkActivityLoggerTests iOS Tests */, 504 | 29F28C281C1F2628006BD785 /* AFNetworkActivityLoggerTests tvOS Tests */, 505 | 29F28C3B1C1F2C54006BD785 /* AFNetworkActivityLoggerTests OS X Tests */, 506 | ); 507 | }; 508 | /* End PBXProject section */ 509 | 510 | /* Begin PBXResourcesBuildPhase section */ 511 | 297DF57F1C1F1CA2001FA807 /* Resources */ = { 512 | isa = PBXResourcesBuildPhase; 513 | buildActionMask = 2147483647; 514 | files = ( 515 | ); 516 | runOnlyForDeploymentPostprocessing = 0; 517 | }; 518 | 29D77AA01BCC49C9005B1EF5 /* Resources */ = { 519 | isa = PBXResourcesBuildPhase; 520 | buildActionMask = 2147483647; 521 | files = ( 522 | ); 523 | runOnlyForDeploymentPostprocessing = 0; 524 | }; 525 | 29D77AB31BCC4BDD005B1EF5 /* Resources */ = { 526 | isa = PBXResourcesBuildPhase; 527 | buildActionMask = 2147483647; 528 | files = ( 529 | ); 530 | runOnlyForDeploymentPostprocessing = 0; 531 | }; 532 | 29D77AC71BCC4D4D005B1EF5 /* Resources */ = { 533 | isa = PBXResourcesBuildPhase; 534 | buildActionMask = 2147483647; 535 | files = ( 536 | ); 537 | runOnlyForDeploymentPostprocessing = 0; 538 | }; 539 | 29D96E631BCC34CD00F571A5 /* Resources */ = { 540 | isa = PBXResourcesBuildPhase; 541 | buildActionMask = 2147483647; 542 | files = ( 543 | ); 544 | runOnlyForDeploymentPostprocessing = 0; 545 | }; 546 | 29F28C271C1F2628006BD785 /* Resources */ = { 547 | isa = PBXResourcesBuildPhase; 548 | buildActionMask = 2147483647; 549 | files = ( 550 | ); 551 | runOnlyForDeploymentPostprocessing = 0; 552 | }; 553 | 29F28C3A1C1F2C54006BD785 /* Resources */ = { 554 | isa = PBXResourcesBuildPhase; 555 | buildActionMask = 2147483647; 556 | files = ( 557 | ); 558 | runOnlyForDeploymentPostprocessing = 0; 559 | }; 560 | /* End PBXResourcesBuildPhase section */ 561 | 562 | /* Begin PBXShellScriptBuildPhase section */ 563 | 29D77AAD1BCC4A12005B1EF5 /* ShellScript */ = { 564 | isa = PBXShellScriptBuildPhase; 565 | buildActionMask = 2147483647; 566 | files = ( 567 | ); 568 | inputPaths = ( 569 | "$(SRCROOT)/Carthage/Build/Mac/AFNetworking.framework", 570 | ); 571 | outputPaths = ( 572 | ); 573 | runOnlyForDeploymentPostprocessing = 0; 574 | shellPath = /bin/sh; 575 | shellScript = "/usr/local/bin/carthage copy-frameworks"; 576 | }; 577 | 29D77AC31BCC4C96005B1EF5 /* ShellScript */ = { 578 | isa = PBXShellScriptBuildPhase; 579 | buildActionMask = 2147483647; 580 | files = ( 581 | ); 582 | inputPaths = ( 583 | "$(SRCROOT)/Carthage/Build/watchOS/AFNetworking.framework", 584 | ); 585 | outputPaths = ( 586 | ); 587 | runOnlyForDeploymentPostprocessing = 0; 588 | shellPath = /bin/sh; 589 | shellScript = "/usr/local/bin/carthage copy-frameworks"; 590 | }; 591 | 29D77AD71BCC4DC5005B1EF5 /* ShellScript */ = { 592 | isa = PBXShellScriptBuildPhase; 593 | buildActionMask = 2147483647; 594 | files = ( 595 | ); 596 | inputPaths = ( 597 | "$(SRCROOT)/Carthage/Build/tvOS/AFNetworking.framework", 598 | ); 599 | outputPaths = ( 600 | ); 601 | runOnlyForDeploymentPostprocessing = 0; 602 | shellPath = /bin/sh; 603 | shellScript = "/usr/local/bin/carthage copy-frameworks"; 604 | }; 605 | 29D96E771BCC36E700F571A5 /* ShellScript */ = { 606 | isa = PBXShellScriptBuildPhase; 607 | buildActionMask = 2147483647; 608 | files = ( 609 | ); 610 | inputPaths = ( 611 | "$(SRCROOT)/Carthage/Build/iOS/AFNetworking.framework", 612 | ); 613 | outputPaths = ( 614 | ); 615 | runOnlyForDeploymentPostprocessing = 0; 616 | shellPath = /bin/sh; 617 | shellScript = "/usr/local/bin/carthage copy-frameworks"; 618 | }; 619 | /* End PBXShellScriptBuildPhase section */ 620 | 621 | /* Begin PBXSourcesBuildPhase section */ 622 | 297DF57D1C1F1CA2001FA807 /* Sources */ = { 623 | isa = PBXSourcesBuildPhase; 624 | buildActionMask = 2147483647; 625 | files = ( 626 | 297DF5841C1F1CA2001FA807 /* AFNetworkActivityLoggerTests.m in Sources */, 627 | ); 628 | runOnlyForDeploymentPostprocessing = 0; 629 | }; 630 | 29D77A9D1BCC49C9005B1EF5 /* Sources */ = { 631 | isa = PBXSourcesBuildPhase; 632 | buildActionMask = 2147483647; 633 | files = ( 634 | 29D77AAA1BCC49E9005B1EF5 /* AFNetworkActivityLogger.m in Sources */, 635 | 297DF57A1C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m in Sources */, 636 | ); 637 | runOnlyForDeploymentPostprocessing = 0; 638 | }; 639 | 29D77AB01BCC4BDD005B1EF5 /* Sources */ = { 640 | isa = PBXSourcesBuildPhase; 641 | buildActionMask = 2147483647; 642 | files = ( 643 | 29D77ABD1BCC4C41005B1EF5 /* AFNetworkActivityLogger.m in Sources */, 644 | 297DF57B1C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m in Sources */, 645 | ); 646 | runOnlyForDeploymentPostprocessing = 0; 647 | }; 648 | 29D77AC41BCC4D4D005B1EF5 /* Sources */ = { 649 | isa = PBXSourcesBuildPhase; 650 | buildActionMask = 2147483647; 651 | files = ( 652 | 29D77AD11BCC4D96005B1EF5 /* AFNetworkActivityLogger.m in Sources */, 653 | 297DF57C1C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m in Sources */, 654 | ); 655 | runOnlyForDeploymentPostprocessing = 0; 656 | }; 657 | 29D96E601BCC34CD00F571A5 /* Sources */ = { 658 | isa = PBXSourcesBuildPhase; 659 | buildActionMask = 2147483647; 660 | files = ( 661 | 29D96E741BCC357B00F571A5 /* AFNetworkActivityLogger.m in Sources */, 662 | 297DF5791C1F1058001FA807 /* AFNetworkActivityConsoleLogger.m in Sources */, 663 | ); 664 | runOnlyForDeploymentPostprocessing = 0; 665 | }; 666 | 29F28C251C1F2628006BD785 /* Sources */ = { 667 | isa = PBXSourcesBuildPhase; 668 | buildActionMask = 2147483647; 669 | files = ( 670 | 29F28C341C1F265C006BD785 /* AFNetworkActivityLoggerTests.m in Sources */, 671 | ); 672 | runOnlyForDeploymentPostprocessing = 0; 673 | }; 674 | 29F28C381C1F2C54006BD785 /* Sources */ = { 675 | isa = PBXSourcesBuildPhase; 676 | buildActionMask = 2147483647; 677 | files = ( 678 | 29F28C471C1F2C76006BD785 /* AFNetworkActivityLoggerTests.m in Sources */, 679 | ); 680 | runOnlyForDeploymentPostprocessing = 0; 681 | }; 682 | /* End PBXSourcesBuildPhase section */ 683 | 684 | /* Begin PBXTargetDependency section */ 685 | 297DF5881C1F1CA2001FA807 /* PBXTargetDependency */ = { 686 | isa = PBXTargetDependency; 687 | target = 29D96E641BCC34CD00F571A5 /* AFNetworkActivityLogger iOS */; 688 | targetProxy = 297DF5871C1F1CA2001FA807 /* PBXContainerItemProxy */; 689 | }; 690 | 29F28C301C1F2628006BD785 /* PBXTargetDependency */ = { 691 | isa = PBXTargetDependency; 692 | target = 29D77AC81BCC4D4D005B1EF5 /* AFNetworkActivityLogger tvOS */; 693 | targetProxy = 29F28C2F1C1F2628006BD785 /* PBXContainerItemProxy */; 694 | }; 695 | 29F28C431C1F2C54006BD785 /* PBXTargetDependency */ = { 696 | isa = PBXTargetDependency; 697 | target = 29D77AA11BCC49C9005B1EF5 /* AFNetworkActivityLogger OS X */; 698 | targetProxy = 29F28C421C1F2C54006BD785 /* PBXContainerItemProxy */; 699 | }; 700 | /* End PBXTargetDependency section */ 701 | 702 | /* Begin XCBuildConfiguration section */ 703 | 297DF58A1C1F1CA2001FA807 /* Debug */ = { 704 | isa = XCBuildConfiguration; 705 | buildSettings = { 706 | FRAMEWORK_SEARCH_PATHS = ( 707 | "$(inherited)", 708 | "$(PROJECT_DIR)/Carthage/Build/iOS", 709 | ); 710 | INFOPLIST_FILE = Tests/Info.plist; 711 | IPHONEOS_DEPLOYMENT_TARGET = 9.1; 712 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 713 | PRODUCT_BUNDLE_IDENTIFIER = com.alamofire.AFNetworkActivityLoggerTests; 714 | PRODUCT_NAME = "$(TARGET_NAME)"; 715 | }; 716 | name = Debug; 717 | }; 718 | 297DF58B1C1F1CA2001FA807 /* Release */ = { 719 | isa = XCBuildConfiguration; 720 | buildSettings = { 721 | FRAMEWORK_SEARCH_PATHS = ( 722 | "$(inherited)", 723 | "$(PROJECT_DIR)/Carthage/Build/iOS", 724 | ); 725 | INFOPLIST_FILE = Tests/Info.plist; 726 | IPHONEOS_DEPLOYMENT_TARGET = 9.1; 727 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 728 | PRODUCT_BUNDLE_IDENTIFIER = com.alamofire.AFNetworkActivityLoggerTests; 729 | PRODUCT_NAME = "$(TARGET_NAME)"; 730 | }; 731 | name = Release; 732 | }; 733 | 29D77AA81BCC49C9005B1EF5 /* Debug */ = { 734 | isa = XCBuildConfiguration; 735 | buildSettings = { 736 | CODE_SIGN_IDENTITY = "-"; 737 | COMBINE_HIDPI_IMAGES = YES; 738 | DEFINES_MODULE = YES; 739 | DYLIB_COMPATIBILITY_VERSION = 1; 740 | DYLIB_CURRENT_VERSION = 1; 741 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 742 | FRAMEWORK_SEARCH_PATHS = ( 743 | "$(inherited)", 744 | "$(PROJECT_DIR)/Carthage/Build/Mac", 745 | ); 746 | FRAMEWORK_VERSION = A; 747 | INFOPLIST_FILE = "$(inherited)"; 748 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 749 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; 750 | MACOSX_DEPLOYMENT_TARGET = 10.9; 751 | PRODUCT_BUNDLE_IDENTIFIER = "com.alamofire.AFNetworkActivityLogger-OS-X"; 752 | PRODUCT_NAME = "$(inherited)"; 753 | SDKROOT = macosx; 754 | SKIP_INSTALL = YES; 755 | }; 756 | name = Debug; 757 | }; 758 | 29D77AA91BCC49C9005B1EF5 /* Release */ = { 759 | isa = XCBuildConfiguration; 760 | buildSettings = { 761 | CODE_SIGN_IDENTITY = "-"; 762 | COMBINE_HIDPI_IMAGES = YES; 763 | DEFINES_MODULE = YES; 764 | DYLIB_COMPATIBILITY_VERSION = 1; 765 | DYLIB_CURRENT_VERSION = 1; 766 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 767 | FRAMEWORK_SEARCH_PATHS = ( 768 | "$(inherited)", 769 | "$(PROJECT_DIR)/Carthage/Build/Mac", 770 | ); 771 | FRAMEWORK_VERSION = A; 772 | INFOPLIST_FILE = "$(inherited)"; 773 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 774 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; 775 | MACOSX_DEPLOYMENT_TARGET = 10.9; 776 | PRODUCT_BUNDLE_IDENTIFIER = "com.alamofire.AFNetworkActivityLogger-OS-X"; 777 | PRODUCT_NAME = "$(inherited)"; 778 | SDKROOT = macosx; 779 | SKIP_INSTALL = YES; 780 | }; 781 | name = Release; 782 | }; 783 | 29D77ABB1BCC4BDD005B1EF5 /* Debug */ = { 784 | isa = XCBuildConfiguration; 785 | buildSettings = { 786 | APPLICATION_EXTENSION_API_ONLY = YES; 787 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 788 | DEFINES_MODULE = YES; 789 | DYLIB_COMPATIBILITY_VERSION = 1; 790 | DYLIB_CURRENT_VERSION = 1; 791 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 792 | FRAMEWORK_SEARCH_PATHS = ( 793 | "$(inherited)", 794 | "$(PROJECT_DIR)/Carthage/Build/watchOS", 795 | ); 796 | INFOPLIST_FILE = "$(inherited)"; 797 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 798 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 799 | PRODUCT_BUNDLE_IDENTIFIER = "com.alamofire.AFNetworkActivityLogger-watchOS"; 800 | PRODUCT_NAME = "$(inherited)"; 801 | SDKROOT = watchos; 802 | SKIP_INSTALL = YES; 803 | TARGETED_DEVICE_FAMILY = 4; 804 | WATCHOS_DEPLOYMENT_TARGET = 2.0; 805 | }; 806 | name = Debug; 807 | }; 808 | 29D77ABC1BCC4BDD005B1EF5 /* Release */ = { 809 | isa = XCBuildConfiguration; 810 | buildSettings = { 811 | APPLICATION_EXTENSION_API_ONLY = YES; 812 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 813 | DEFINES_MODULE = YES; 814 | DYLIB_COMPATIBILITY_VERSION = 1; 815 | DYLIB_CURRENT_VERSION = 1; 816 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 817 | FRAMEWORK_SEARCH_PATHS = ( 818 | "$(inherited)", 819 | "$(PROJECT_DIR)/Carthage/Build/watchOS", 820 | ); 821 | INFOPLIST_FILE = "$(inherited)"; 822 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 823 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 824 | PRODUCT_BUNDLE_IDENTIFIER = "com.alamofire.AFNetworkActivityLogger-watchOS"; 825 | PRODUCT_NAME = "$(inherited)"; 826 | SDKROOT = watchos; 827 | SKIP_INSTALL = YES; 828 | TARGETED_DEVICE_FAMILY = 4; 829 | WATCHOS_DEPLOYMENT_TARGET = 2.0; 830 | }; 831 | name = Release; 832 | }; 833 | 29D77ACF1BCC4D4D005B1EF5 /* Debug */ = { 834 | isa = XCBuildConfiguration; 835 | buildSettings = { 836 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 837 | DEFINES_MODULE = YES; 838 | DYLIB_COMPATIBILITY_VERSION = 1; 839 | DYLIB_CURRENT_VERSION = 1; 840 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 841 | FRAMEWORK_SEARCH_PATHS = ( 842 | "$(inherited)", 843 | "$(PROJECT_DIR)/Carthage/Build/tvOS", 844 | ); 845 | INFOPLIST_FILE = "$(inherited)"; 846 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 847 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 848 | PRODUCT_BUNDLE_IDENTIFIER = com.alamofire.AFNetworkActivityLogger; 849 | PRODUCT_NAME = "$(inherited)"; 850 | SDKROOT = appletvos; 851 | SKIP_INSTALL = YES; 852 | TARGETED_DEVICE_FAMILY = 3; 853 | TVOS_DEPLOYMENT_TARGET = 9.0; 854 | }; 855 | name = Debug; 856 | }; 857 | 29D77AD01BCC4D4D005B1EF5 /* Release */ = { 858 | isa = XCBuildConfiguration; 859 | buildSettings = { 860 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 861 | DEFINES_MODULE = YES; 862 | DYLIB_COMPATIBILITY_VERSION = 1; 863 | DYLIB_CURRENT_VERSION = 1; 864 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 865 | FRAMEWORK_SEARCH_PATHS = ( 866 | "$(inherited)", 867 | "$(PROJECT_DIR)/Carthage/Build/tvOS", 868 | ); 869 | INFOPLIST_FILE = "$(inherited)"; 870 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 871 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 872 | PRODUCT_BUNDLE_IDENTIFIER = com.alamofire.AFNetworkActivityLogger; 873 | PRODUCT_NAME = "$(inherited)"; 874 | SDKROOT = appletvos; 875 | SKIP_INSTALL = YES; 876 | TARGETED_DEVICE_FAMILY = 3; 877 | TVOS_DEPLOYMENT_TARGET = 9.0; 878 | }; 879 | name = Release; 880 | }; 881 | 29D96E6B1BCC34CD00F571A5 /* Debug */ = { 882 | isa = XCBuildConfiguration; 883 | buildSettings = { 884 | ALWAYS_SEARCH_USER_PATHS = NO; 885 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 886 | CLANG_CXX_LIBRARY = "libc++"; 887 | CLANG_ENABLE_MODULES = YES; 888 | CLANG_ENABLE_OBJC_ARC = YES; 889 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 890 | CLANG_WARN_BOOL_CONVERSION = YES; 891 | CLANG_WARN_COMMA = YES; 892 | CLANG_WARN_CONSTANT_CONVERSION = YES; 893 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 894 | CLANG_WARN_EMPTY_BODY = YES; 895 | CLANG_WARN_ENUM_CONVERSION = YES; 896 | CLANG_WARN_INFINITE_RECURSION = YES; 897 | CLANG_WARN_INT_CONVERSION = YES; 898 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 899 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 900 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 901 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 902 | CLANG_WARN_STRICT_PROTOTYPES = YES; 903 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 904 | CLANG_WARN_UNREACHABLE_CODE = YES; 905 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 906 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 907 | COPY_PHASE_STRIP = NO; 908 | CURRENT_PROJECT_VERSION = 1; 909 | DEBUG_INFORMATION_FORMAT = dwarf; 910 | ENABLE_STRICT_OBJC_MSGSEND = YES; 911 | ENABLE_TESTABILITY = YES; 912 | GCC_C_LANGUAGE_STANDARD = gnu99; 913 | GCC_DYNAMIC_NO_PIC = NO; 914 | GCC_NO_COMMON_BLOCKS = YES; 915 | GCC_OPTIMIZATION_LEVEL = 0; 916 | GCC_PREPROCESSOR_DEFINITIONS = ( 917 | "DEBUG=1", 918 | "$(inherited)", 919 | ); 920 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 921 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 922 | GCC_WARN_UNDECLARED_SELECTOR = YES; 923 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 924 | GCC_WARN_UNUSED_FUNCTION = YES; 925 | GCC_WARN_UNUSED_VARIABLE = YES; 926 | INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist"; 927 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 928 | MODULEMAP_FILE = "$(PROJECT_DIR)/Supporting Files/modulemap.module"; 929 | MTL_ENABLE_DEBUG_INFO = YES; 930 | ONLY_ACTIVE_ARCH = YES; 931 | PRODUCT_NAME = AFNetworkActivityLogger; 932 | SDKROOT = iphoneos; 933 | TARGETED_DEVICE_FAMILY = "1,2"; 934 | VERSIONING_SYSTEM = "apple-generic"; 935 | VERSION_INFO_PREFIX = ""; 936 | }; 937 | name = Debug; 938 | }; 939 | 29D96E6C1BCC34CD00F571A5 /* Release */ = { 940 | isa = XCBuildConfiguration; 941 | buildSettings = { 942 | ALWAYS_SEARCH_USER_PATHS = NO; 943 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 944 | CLANG_CXX_LIBRARY = "libc++"; 945 | CLANG_ENABLE_MODULES = YES; 946 | CLANG_ENABLE_OBJC_ARC = YES; 947 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 948 | CLANG_WARN_BOOL_CONVERSION = YES; 949 | CLANG_WARN_COMMA = YES; 950 | CLANG_WARN_CONSTANT_CONVERSION = YES; 951 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 952 | CLANG_WARN_EMPTY_BODY = YES; 953 | CLANG_WARN_ENUM_CONVERSION = YES; 954 | CLANG_WARN_INFINITE_RECURSION = YES; 955 | CLANG_WARN_INT_CONVERSION = YES; 956 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 957 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 958 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 959 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 960 | CLANG_WARN_STRICT_PROTOTYPES = YES; 961 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 962 | CLANG_WARN_UNREACHABLE_CODE = YES; 963 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 964 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 965 | COPY_PHASE_STRIP = NO; 966 | CURRENT_PROJECT_VERSION = 1; 967 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 968 | ENABLE_NS_ASSERTIONS = NO; 969 | ENABLE_STRICT_OBJC_MSGSEND = YES; 970 | GCC_C_LANGUAGE_STANDARD = gnu99; 971 | GCC_NO_COMMON_BLOCKS = YES; 972 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 973 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 974 | GCC_WARN_UNDECLARED_SELECTOR = YES; 975 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 976 | GCC_WARN_UNUSED_FUNCTION = YES; 977 | GCC_WARN_UNUSED_VARIABLE = YES; 978 | INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist"; 979 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 980 | MODULEMAP_FILE = "$(PROJECT_DIR)/Supporting Files/modulemap.module"; 981 | MTL_ENABLE_DEBUG_INFO = NO; 982 | PRODUCT_NAME = AFNetworkActivityLogger; 983 | SDKROOT = iphoneos; 984 | TARGETED_DEVICE_FAMILY = "1,2"; 985 | VALIDATE_PRODUCT = YES; 986 | VERSIONING_SYSTEM = "apple-generic"; 987 | VERSION_INFO_PREFIX = ""; 988 | }; 989 | name = Release; 990 | }; 991 | 29D96E6E1BCC34CD00F571A5 /* Debug */ = { 992 | isa = XCBuildConfiguration; 993 | buildSettings = { 994 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 995 | DEFINES_MODULE = YES; 996 | DYLIB_COMPATIBILITY_VERSION = 1; 997 | DYLIB_CURRENT_VERSION = 1; 998 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 999 | FRAMEWORK_SEARCH_PATHS = ( 1000 | "$(inherited)", 1001 | "$(PROJECT_DIR)/Carthage/Build/iOS", 1002 | ); 1003 | INFOPLIST_FILE = "$(inherited)"; 1004 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 1005 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 1006 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1007 | PRODUCT_BUNDLE_IDENTIFIER = com.alamofire.AFNetworkActivityLogger; 1008 | PRODUCT_NAME = "$(inherited)"; 1009 | SKIP_INSTALL = YES; 1010 | }; 1011 | name = Debug; 1012 | }; 1013 | 29D96E6F1BCC34CD00F571A5 /* Release */ = { 1014 | isa = XCBuildConfiguration; 1015 | buildSettings = { 1016 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 1017 | DEFINES_MODULE = YES; 1018 | DYLIB_COMPATIBILITY_VERSION = 1; 1019 | DYLIB_CURRENT_VERSION = 1; 1020 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 1021 | FRAMEWORK_SEARCH_PATHS = ( 1022 | "$(inherited)", 1023 | "$(PROJECT_DIR)/Carthage/Build/iOS", 1024 | ); 1025 | INFOPLIST_FILE = "$(inherited)"; 1026 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 1027 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 1028 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1029 | PRODUCT_BUNDLE_IDENTIFIER = com.alamofire.AFNetworkActivityLogger; 1030 | PRODUCT_NAME = "$(inherited)"; 1031 | SKIP_INSTALL = YES; 1032 | }; 1033 | name = Release; 1034 | }; 1035 | 29F28C321C1F2628006BD785 /* Debug */ = { 1036 | isa = XCBuildConfiguration; 1037 | buildSettings = { 1038 | FRAMEWORK_SEARCH_PATHS = ( 1039 | "$(inherited)", 1040 | "$(PROJECT_DIR)/Carthage/Build/tvOS", 1041 | ); 1042 | INFOPLIST_FILE = Tests/Info.plist; 1043 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1044 | PRODUCT_BUNDLE_IDENTIFIER = "com.alamofire.AFNetworkActivityLoggerTests-tvOS-Tests"; 1045 | PRODUCT_NAME = "$(TARGET_NAME)"; 1046 | SDKROOT = appletvos; 1047 | TVOS_DEPLOYMENT_TARGET = 9.0; 1048 | }; 1049 | name = Debug; 1050 | }; 1051 | 29F28C331C1F2628006BD785 /* Release */ = { 1052 | isa = XCBuildConfiguration; 1053 | buildSettings = { 1054 | FRAMEWORK_SEARCH_PATHS = ( 1055 | "$(inherited)", 1056 | "$(PROJECT_DIR)/Carthage/Build/tvOS", 1057 | ); 1058 | INFOPLIST_FILE = Tests/Info.plist; 1059 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1060 | PRODUCT_BUNDLE_IDENTIFIER = "com.alamofire.AFNetworkActivityLoggerTests-tvOS-Tests"; 1061 | PRODUCT_NAME = "$(TARGET_NAME)"; 1062 | SDKROOT = appletvos; 1063 | TVOS_DEPLOYMENT_TARGET = 9.0; 1064 | }; 1065 | name = Release; 1066 | }; 1067 | 29F28C451C1F2C54006BD785 /* Debug */ = { 1068 | isa = XCBuildConfiguration; 1069 | buildSettings = { 1070 | CODE_SIGN_IDENTITY = "-"; 1071 | COMBINE_HIDPI_IMAGES = YES; 1072 | FRAMEWORK_SEARCH_PATHS = ( 1073 | "$(inherited)", 1074 | "$(PROJECT_DIR)/Carthage/Build/Mac", 1075 | ); 1076 | INFOPLIST_FILE = Tests/Info.plist; 1077 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; 1078 | MACOSX_DEPLOYMENT_TARGET = 10.11; 1079 | PRODUCT_BUNDLE_IDENTIFIER = "com.alamofire.AFNetworkActivityLoggerTests-OS-X-Tests"; 1080 | PRODUCT_NAME = "$(TARGET_NAME)"; 1081 | SDKROOT = macosx; 1082 | }; 1083 | name = Debug; 1084 | }; 1085 | 29F28C461C1F2C54006BD785 /* Release */ = { 1086 | isa = XCBuildConfiguration; 1087 | buildSettings = { 1088 | CODE_SIGN_IDENTITY = "-"; 1089 | COMBINE_HIDPI_IMAGES = YES; 1090 | FRAMEWORK_SEARCH_PATHS = ( 1091 | "$(inherited)", 1092 | "$(PROJECT_DIR)/Carthage/Build/Mac", 1093 | ); 1094 | INFOPLIST_FILE = Tests/Info.plist; 1095 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; 1096 | MACOSX_DEPLOYMENT_TARGET = 10.11; 1097 | PRODUCT_BUNDLE_IDENTIFIER = "com.alamofire.AFNetworkActivityLoggerTests-OS-X-Tests"; 1098 | PRODUCT_NAME = "$(TARGET_NAME)"; 1099 | SDKROOT = macosx; 1100 | }; 1101 | name = Release; 1102 | }; 1103 | /* End XCBuildConfiguration section */ 1104 | 1105 | /* Begin XCConfigurationList section */ 1106 | 297DF5891C1F1CA2001FA807 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLoggerTests iOS Tests" */ = { 1107 | isa = XCConfigurationList; 1108 | buildConfigurations = ( 1109 | 297DF58A1C1F1CA2001FA807 /* Debug */, 1110 | 297DF58B1C1F1CA2001FA807 /* Release */, 1111 | ); 1112 | defaultConfigurationIsVisible = 0; 1113 | defaultConfigurationName = Release; 1114 | }; 1115 | 29D77AA71BCC49C9005B1EF5 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLogger OS X" */ = { 1116 | isa = XCConfigurationList; 1117 | buildConfigurations = ( 1118 | 29D77AA81BCC49C9005B1EF5 /* Debug */, 1119 | 29D77AA91BCC49C9005B1EF5 /* Release */, 1120 | ); 1121 | defaultConfigurationIsVisible = 0; 1122 | defaultConfigurationName = Release; 1123 | }; 1124 | 29D77ABA1BCC4BDD005B1EF5 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLogger watchOS" */ = { 1125 | isa = XCConfigurationList; 1126 | buildConfigurations = ( 1127 | 29D77ABB1BCC4BDD005B1EF5 /* Debug */, 1128 | 29D77ABC1BCC4BDD005B1EF5 /* Release */, 1129 | ); 1130 | defaultConfigurationIsVisible = 0; 1131 | defaultConfigurationName = Release; 1132 | }; 1133 | 29D77ACE1BCC4D4D005B1EF5 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLogger tvOS" */ = { 1134 | isa = XCConfigurationList; 1135 | buildConfigurations = ( 1136 | 29D77ACF1BCC4D4D005B1EF5 /* Debug */, 1137 | 29D77AD01BCC4D4D005B1EF5 /* Release */, 1138 | ); 1139 | defaultConfigurationIsVisible = 0; 1140 | defaultConfigurationName = Release; 1141 | }; 1142 | 29D96E5F1BCC34CD00F571A5 /* Build configuration list for PBXProject "AFNetworkActivityLogger" */ = { 1143 | isa = XCConfigurationList; 1144 | buildConfigurations = ( 1145 | 29D96E6B1BCC34CD00F571A5 /* Debug */, 1146 | 29D96E6C1BCC34CD00F571A5 /* Release */, 1147 | ); 1148 | defaultConfigurationIsVisible = 0; 1149 | defaultConfigurationName = Release; 1150 | }; 1151 | 29D96E6D1BCC34CD00F571A5 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLogger iOS" */ = { 1152 | isa = XCConfigurationList; 1153 | buildConfigurations = ( 1154 | 29D96E6E1BCC34CD00F571A5 /* Debug */, 1155 | 29D96E6F1BCC34CD00F571A5 /* Release */, 1156 | ); 1157 | defaultConfigurationIsVisible = 0; 1158 | defaultConfigurationName = Release; 1159 | }; 1160 | 29F28C311C1F2628006BD785 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLoggerTests tvOS Tests" */ = { 1161 | isa = XCConfigurationList; 1162 | buildConfigurations = ( 1163 | 29F28C321C1F2628006BD785 /* Debug */, 1164 | 29F28C331C1F2628006BD785 /* Release */, 1165 | ); 1166 | defaultConfigurationIsVisible = 0; 1167 | defaultConfigurationName = Release; 1168 | }; 1169 | 29F28C441C1F2C54006BD785 /* Build configuration list for PBXNativeTarget "AFNetworkActivityLoggerTests OS X Tests" */ = { 1170 | isa = XCConfigurationList; 1171 | buildConfigurations = ( 1172 | 29F28C451C1F2C54006BD785 /* Debug */, 1173 | 29F28C461C1F2C54006BD785 /* Release */, 1174 | ); 1175 | defaultConfigurationIsVisible = 0; 1176 | defaultConfigurationName = Release; 1177 | }; 1178 | /* End XCConfigurationList section */ 1179 | }; 1180 | rootObject = 29D96E5C1BCC34CD00F571A5 /* Project object */; 1181 | } 1182 | -------------------------------------------------------------------------------- /AFNetworkActivityLogger.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /AFNetworkActivityLogger.xcodeproj/xcshareddata/xcschemes/AFNetworkActivityLogger OS X.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 33 | 34 | 36 | 42 | 43 | 44 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 68 | 69 | 75 | 76 | 77 | 78 | 79 | 80 | 86 | 87 | 93 | 94 | 95 | 96 | 98 | 99 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /AFNetworkActivityLogger.xcodeproj/xcshareddata/xcschemes/AFNetworkActivityLogger iOS.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 34 | 35 | 37 | 43 | 44 | 45 | 46 | 47 | 53 | 54 | 55 | 56 | 57 | 58 | 69 | 70 | 76 | 77 | 78 | 79 | 80 | 81 | 87 | 88 | 94 | 95 | 96 | 97 | 99 | 100 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /AFNetworkActivityLogger.xcodeproj/xcshareddata/xcschemes/AFNetworkActivityLogger tvOS.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 33 | 34 | 36 | 42 | 43 | 44 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 68 | 69 | 75 | 76 | 77 | 78 | 79 | 80 | 86 | 87 | 93 | 94 | 95 | 96 | 98 | 99 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /AFNetworkActivityLogger.xcodeproj/xcshareddata/xcschemes/AFNetworkActivityLogger watchOS.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 35 | 36 | 47 | 48 | 54 | 55 | 56 | 57 | 58 | 59 | 65 | 66 | 72 | 73 | 74 | 75 | 77 | 78 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /AFNetworkActivityLogger.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /AFNetworkActivityLogger/AFNetworkActivityConsoleLogger.h: -------------------------------------------------------------------------------- 1 | // AFNetworkActivityConsoleLogger.h 2 | // 3 | // Copyright (c) 2018 AFNetworking (http://afnetworking.com/) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import "AFNetworkActivityLoggerProtocol.h" 25 | 26 | /** 27 | `AFNetworkActivityConsoleLogger` logs requests and responses made by AFNetworking to the console. 28 | */ 29 | @interface AFNetworkActivityConsoleLogger : NSObject 30 | 31 | @property (nonatomic, strong) NSPredicate *filterPredicate; 32 | @property (nonatomic, assign) AFHTTPRequestLoggerLevel level; 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /AFNetworkActivityLogger/AFNetworkActivityConsoleLogger.m: -------------------------------------------------------------------------------- 1 | // AFNetworkActivityConsoleLogger.h 2 | // 3 | // Copyright (c) 2018 AFNetworking (http://afnetworking.com/) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import "AFNetworkActivityConsoleLogger.h" 24 | 25 | @implementation AFNetworkActivityConsoleLogger 26 | 27 | - (id)init { 28 | self = [super init]; 29 | if (!self) { 30 | return nil; 31 | } 32 | 33 | self.level = AFLoggerLevelInfo; 34 | 35 | return self; 36 | } 37 | 38 | 39 | - (void)URLSessionTaskDidStart:(NSURLSessionTask *)task { 40 | NSURLRequest *request = task.originalRequest; 41 | 42 | NSString *body = nil; 43 | if ([request HTTPBody]) { 44 | body = [[NSString alloc] initWithData:[request HTTPBody] encoding:NSUTF8StringEncoding]; 45 | } 46 | 47 | switch (self.level) { 48 | case AFLoggerLevelDebug: 49 | NSLog(@"%@ '%@': %@ %@", [request HTTPMethod], [[request URL] absoluteString], [request allHTTPHeaderFields], body); 50 | break; 51 | case AFLoggerLevelInfo: 52 | NSLog(@"%@ '%@'", [request HTTPMethod], [[request URL] absoluteString]); 53 | break; 54 | default: 55 | break; 56 | } 57 | } 58 | 59 | - (void)URLSessionTaskDidFinish:(NSURLSessionTask *)task withResponseObject:(id)responseObject inElapsedTime:(NSTimeInterval )elapsedTime withError:(NSError *)error { 60 | NSUInteger responseStatusCode = 0; 61 | NSDictionary *responseHeaderFields = nil; 62 | if ([task.response isKindOfClass:[NSHTTPURLResponse class]]) { 63 | responseStatusCode = (NSUInteger)[(NSHTTPURLResponse *)task.response statusCode]; 64 | responseHeaderFields = [(NSHTTPURLResponse *)task.response allHeaderFields]; 65 | } 66 | 67 | if (error) { 68 | switch (self.level) { 69 | case AFLoggerLevelDebug: 70 | case AFLoggerLevelInfo: 71 | case AFLoggerLevelError: 72 | NSLog(@"[Error] %@ '%@' (%ld) [%.04f s]: %@", [task.originalRequest HTTPMethod], [[task.response URL] absoluteString], (long)responseStatusCode, elapsedTime, error); 73 | default: 74 | break; 75 | } 76 | } else { 77 | switch (self.level) { 78 | case AFLoggerLevelDebug: 79 | NSLog(@"%ld '%@' [%.04f s]: %@ %@", (long)responseStatusCode, [[task.response URL] absoluteString], elapsedTime, responseHeaderFields, responseObject); 80 | break; 81 | case AFLoggerLevelInfo: 82 | NSLog(@"%ld '%@' [%.04f s]", (long)responseStatusCode, [[task.response URL] absoluteString], elapsedTime); 83 | break; 84 | default: 85 | break; 86 | } 87 | } 88 | } 89 | 90 | @end 91 | -------------------------------------------------------------------------------- /AFNetworkActivityLogger/AFNetworkActivityLogger.h: -------------------------------------------------------------------------------- 1 | // AFNetworkActivityLogger.h 2 | // 3 | // Copyright (c) 2018 AFNetworking (http://afnetworking.com/) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | #import "AFNetworkActivityLoggerProtocol.h" 25 | 26 | /** 27 | `AFNetworkActivityLogger` logs requests and responses made by AFNetworking, with an adjustable level of detail. 28 | 29 | Applications should enable the shared instance of `AFNetworkActivityLogger` in `AppDelegate -application:didFinishLaunchingWithOptions:`: 30 | 31 | [[AFNetworkActivityLogger sharedLogger] startLogging]; 32 | 33 | `AFNetworkActivityLogger` listens for `AFNetworkingOperationDidStartNotification` and `AFNetworkingOperationDidFinishNotification` notifications, which are posted by AFNetworking as request operations are started and finish. For further customization of logging output, users are encouraged to implement desired functionality by listening for these notifications. 34 | */ 35 | @interface AFNetworkActivityLogger : NSObject 36 | 37 | /** 38 | The set of loggers current managed by the shared activity logger. By default, this includes one `AFNetworkActivityConsoleLogger` 39 | */ 40 | @property (nonatomic, strong, readonly) NSSet *loggers; 41 | 42 | /** 43 | Returns the shared logger instance. 44 | */ 45 | + (instancetype)sharedLogger; 46 | 47 | /** 48 | Start logging requests and responses to all managed loggers. 49 | */ 50 | - (void)startLogging; 51 | 52 | /** 53 | Stop logging requests and responses to all managed loggers. 54 | */ 55 | - (void)stopLogging; 56 | 57 | /** 58 | Set the `AFHTTPRequestLoggerLevel` of all managed loggers. 59 | */ 60 | - (void)setLogLevel:(AFHTTPRequestLoggerLevel)level; 61 | 62 | /** 63 | Adds the given logger to be managed to the `loggers` set. 64 | */ 65 | - (void)addLogger:(id )logger; 66 | 67 | /** 68 | Removes the given logger from the `loggers` set. 69 | */ 70 | - (void)removeLogger:(id )logger; 71 | 72 | @end 73 | -------------------------------------------------------------------------------- /AFNetworkActivityLogger/AFNetworkActivityLogger.m: -------------------------------------------------------------------------------- 1 | // AFNetworkActivityLogger.h 2 | // 3 | // Copyright (c) 2018 AFNetworking (http://afnetworking.com/) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import "AFNetworkActivityLogger.h" 24 | #import 25 | #import "AFNetworkActivityConsoleLogger.h" 26 | #import 27 | 28 | static NSError * AFNetworkErrorFromNotification(NSNotification *notification) { 29 | NSError *error = nil; 30 | if ([[notification object] isKindOfClass:[NSURLSessionTask class]]) { 31 | error = [(NSURLSessionTask *)[notification object] error]; 32 | if (!error) { 33 | error = notification.userInfo[AFNetworkingTaskDidCompleteErrorKey]; 34 | } 35 | } 36 | return error; 37 | } 38 | 39 | @interface AFNetworkActivityLogger () 40 | @property (nonatomic, strong) NSMutableSet *mutableLoggers; 41 | 42 | @end 43 | 44 | @implementation AFNetworkActivityLogger 45 | 46 | + (instancetype)sharedLogger { 47 | static AFNetworkActivityLogger *_sharedLogger = nil; 48 | 49 | static dispatch_once_t onceToken; 50 | dispatch_once(&onceToken, ^{ 51 | _sharedLogger = [[self alloc] init]; 52 | }); 53 | 54 | return _sharedLogger; 55 | } 56 | 57 | - (id)init { 58 | self = [super init]; 59 | if (!self) { 60 | return nil; 61 | } 62 | 63 | self.mutableLoggers = [NSMutableSet set]; 64 | 65 | AFNetworkActivityConsoleLogger *consoleLogger = [AFNetworkActivityConsoleLogger new]; 66 | [self addLogger:consoleLogger]; 67 | 68 | return self; 69 | } 70 | 71 | - (NSSet *)loggers { 72 | return self.mutableLoggers; 73 | } 74 | 75 | - (void)dealloc { 76 | [self stopLogging]; 77 | } 78 | 79 | - (void)addLogger:(id)logger { 80 | [self.mutableLoggers addObject:logger]; 81 | } 82 | 83 | - (void)removeLogger:(id)logger { 84 | [self.mutableLoggers removeObject:logger]; 85 | } 86 | 87 | - (void)setLogLevel:(AFHTTPRequestLoggerLevel)level { 88 | for (idlogger in self.loggers) { 89 | logger.level = level; 90 | } 91 | } 92 | 93 | - (void)startLogging { 94 | [self stopLogging]; 95 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidStart:) name:AFNetworkingTaskDidResumeNotification object:nil]; 96 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidFinish:) name:AFNetworkingTaskDidCompleteNotification object:nil]; 97 | } 98 | 99 | - (void)stopLogging { 100 | [[NSNotificationCenter defaultCenter] removeObserver:self]; 101 | } 102 | 103 | #pragma mark - NSNotification 104 | 105 | static void * AFNetworkRequestStartDate = &AFNetworkRequestStartDate; 106 | 107 | - (void)networkRequestDidStart:(NSNotification *)notification { 108 | NSURLSessionTask *task = [notification object]; 109 | NSURLRequest *request = task.originalRequest; 110 | 111 | if (!request) { 112 | return; 113 | } 114 | 115 | objc_setAssociatedObject(notification.object, AFNetworkRequestStartDate, [NSDate date], OBJC_ASSOCIATION_RETAIN_NONATOMIC); 116 | 117 | for (id logger in self.loggers) { 118 | if (request && logger.filterPredicate && [logger.filterPredicate evaluateWithObject:request]) { 119 | return; 120 | } 121 | 122 | [logger URLSessionTaskDidStart:task]; 123 | } 124 | } 125 | 126 | - (void)networkRequestDidFinish:(NSNotification *)notification { 127 | NSURLSessionTask *task = [notification object]; 128 | NSURLRequest *request = task.originalRequest; 129 | NSURLResponse *response = task.response; 130 | NSError *error = AFNetworkErrorFromNotification(notification); 131 | 132 | if (!request && !response) { 133 | return; 134 | } 135 | 136 | id responseObject = nil; 137 | if (notification.userInfo) { 138 | responseObject = notification.userInfo[AFNetworkingTaskDidCompleteSerializedResponseKey]; 139 | } 140 | 141 | NSTimeInterval elapsedTime = [[NSDate date] timeIntervalSinceDate:objc_getAssociatedObject(notification.object, AFNetworkRequestStartDate)]; 142 | 143 | for (id logger in self.loggers) { 144 | if (request && logger.filterPredicate && [logger.filterPredicate evaluateWithObject:request]) { 145 | return; 146 | } 147 | 148 | [logger URLSessionTaskDidFinish:task withResponseObject:responseObject inElapsedTime:elapsedTime withError:error]; 149 | } 150 | } 151 | 152 | @end 153 | -------------------------------------------------------------------------------- /AFNetworkActivityLogger/AFNetworkActivityLoggerProtocol.h: -------------------------------------------------------------------------------- 1 | // AFNetworkActivityLoggerProtocol.h 2 | // 3 | // Copyright (c) 2018 AFNetworking (http://afnetworking.com/) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | 25 | 26 | ///---------------- 27 | /// @name Constants 28 | ///---------------- 29 | 30 | /** 31 | ## Logging Levels 32 | 33 | The following constants specify the available logging levels for `AFNetworkActivityLogger`: 34 | 35 | enum { 36 | AFLoggerLevelOff, 37 | AFLoggerLevelDebug, 38 | AFLoggerLevelInfo, 39 | AFLoggerLevelWarn, 40 | AFLoggerLevelError, 41 | AFLoggerLevelFatal = AFLoggerLevelOff, 42 | } 43 | 44 | `AFLoggerLevelOff` 45 | Do not log requests or responses. 46 | 47 | `AFLoggerLevelDebug` 48 | Logs HTTP method, URL, header fields, & request body for requests, and status code, URL, header fields, response string, & elapsed time for responses. 49 | 50 | `AFLoggerLevelInfo` 51 | Logs HTTP method & URL for requests, and status code, URL, & elapsed time for responses. 52 | 53 | `AFLoggerLevelError` 54 | Logs HTTP method & URL for requests, and status code, URL, & elapsed time for responses, but only for failed requests. 55 | */ 56 | 57 | typedef NS_ENUM(NSUInteger, AFHTTPRequestLoggerLevel) { 58 | AFLoggerLevelOff, 59 | AFLoggerLevelDebug, 60 | AFLoggerLevelInfo, 61 | AFLoggerLevelError 62 | }; 63 | 64 | 65 | /** 66 | `AFNetworkActivityLoggerProtocol` declares the interface to log requests and responses made by AFNetworking, with an adjustable level of detail. 67 | 68 | Objects that conform to `AFNetworkActivityLoggerProtocol` should be added to the shared instance of `AFNetworkActivityLogger`. Applications should then enable the shared instance of `AFNetworkActivityLogger` in `AppDelegate -application:didFinishLaunchingWithOptions:`: 69 | 70 | [[AFNetworkActivityLogger sharedLogger] startLogging]; 71 | 72 | For further customization of logging output, users can create additional classes that conform to this protocol, and add them to the shared logger. 73 | */ 74 | @protocol AFNetworkActivityLoggerProtocol 75 | 76 | /** 77 | Omit requests which match the specified predicate, if provided. `nil` by default. 78 | 79 | @discussion Each notification has an associated `NSURLRequest`. To filter out request and response logging, such as all network activity made to a particular domain, this predicate can be set to match against the appropriate URL string pattern. 80 | */ 81 | @property (nonatomic, strong) NSPredicate *filterPredicate; 82 | 83 | /** 84 | The level of logging detail. See "Logging Levels" for possible values. `AFLoggerLevelInfo` by default. 85 | */ 86 | @property (nonatomic, assign) AFHTTPRequestLoggerLevel level; 87 | 88 | - (void)URLSessionTaskDidStart:(NSURLSessionTask *)task; 89 | - (void)URLSessionTaskDidFinish:(NSURLSessionTask *)task withResponseObject:(id)responseObject inElapsedTime:(NSTimeInterval)elapsedTime withError:(NSError *)error; 90 | 91 | @end 92 | 93 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | #Change Log 2 | All notable changes to this project will be documented in this file. 3 | `AFNetworking` adheres to [Semantic Versioning](http://semver.org/). 4 | 5 | --- 6 | 7 | ## [3.0.0](https://github.com/AFNetworking/AFNetworkActivityLogger/releases/tag/3.0.0) (03/23/2018) 8 | Released on Friday, March 23, 2018. All issues associated with this milestone can be found using this [filter](https://github.com/AFNetworking/AFNetworkActivityLogger/issues?q=milestone%3A3.0.0+is%3Aclosed). 9 | 10 | #### Changes 11 | * Add setLogLevel method. 12 | * Implemented by Jon Shier in [#43](https://github.com/AFNetworking/AFNetworkActivityLogger/pull/43). 13 | -------------------------------------------------------------------------------- /Cartfile: -------------------------------------------------------------------------------- 1 | github "AFNetworking/AFNetworking" ~> 3.0 -------------------------------------------------------------------------------- /Cartfile.resolved: -------------------------------------------------------------------------------- 1 | github "AFNetworking/AFNetworking" "3.2.0" 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013 AFNetworking (http://afnetworking.com/) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AFNetworkActivityLogger 2 | 3 | `AFNetworkActivityLogger` is an extension for [AFNetworking](http://github.com/AFNetworking/AFNetworking/) 3.0 that logs network requests as they are sent and received. 4 | 5 | > `AFNetworkActivityLogger` listens `AFNetworkingTaskDidStartNotification` and `AFNetworkingTaskDidFinishNotification` notifications, which are posted by AFNetworking as session tasks are started and finish. For further customization of logging output, users are encouraged to implement desired functionality by creating new objects that conform to `AFNetworkActivityLoggerProtocol`. 6 | 7 | ## 2.x -> 3.x Migration 8 | 3.0.0 featured the following breaking API changes: 9 | 10 | * The log `level` property is now found on the individual unique loggers, rather than the shared logger. This allows for more advanced customization options for logging level. 11 | * The `filterPredicate` property is now found on the individual unique loggers, rather than the shared logger. This allows for more advanced customization options for logging specific requests. 12 | 13 | ## Usage 14 | 15 | Add the following code to `AppDelegate.m -application:didFinishLaunchingWithOptions:`: 16 | 17 | ``` objective-c 18 | [[AFNetworkActivityLogger sharedLogger] startLogging]; 19 | ``` 20 | 21 | Now all `NSURLSessionTask` objects created by an `AFURLSessionManager` will have their request and response logged to the console, a la: 22 | 23 | ``` 24 | GET http://example.com/foo/bar.json 25 | 200 http://example.com/foo/bar.json [0.1860 s] 26 | ``` 27 | 28 | If the default logging level is too verbose—say, if you only want to know when requests fail—then changing it is as simple as: 29 | 30 | ``` objective-c 31 | [[AFNetworkActivityLogger sharedLogger] setLevel:AFLoggerLevelError]; 32 | ``` 33 | 34 | ## Logging Levels 35 | By default, the shared logger is configured with an `AFNetworkActivityConsoleLogger` with a debug level set to `AFLoggerLevelInfo`. To change the level, simply access the logger through the `loggers` property, and adjust the level. The following levels are provided: 36 | 37 | * `AFLoggerLevelOff`: Do not log requests or responses. 38 | * `AFLoggerLevelDebug` :Logs HTTP method, URL, header fields, & request body for requests, and status code, URL, header fields, response string, & elapsed time for responses. 39 | * `AFLoggerLevelInfo`: Logs HTTP method & URL for requests, and status code, URL, & elapsed time for responses. 40 | * `AFLoggerLevelError`: Logs HTTP method & URL for requests, and status code, URL, & elapsed time for responses, but only for failed requests. 41 | 42 | ## Filtering Requests 43 | To limit the requests that are logged by a unique logger, each object that conforms to `AFNetworkActivityLoggerProtocol` has a `filterPredicate` property. If the predicate returns true, the request will not be forwarded to the logger. For example, a custom file logger could be created that only logs requests for `http://httpbin.org`, while a console logger could be used to log all errors in the application. 44 | 45 | ```Objective-C 46 | AFNetworkActivityConsoleLogger *testLogger = [AFNetworkActivityConsoleLogger new]; 47 | NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(NSURLRequest * _Nonnull request, NSDictionary * _Nullable bindings) { 48 | return !([[request URL] baseURL] isEqualToString:@"httpbin.org"]) 49 | }]; 50 | [testLogger setFilterPredicate:predicate]; 51 | ``` 52 | 53 | ## Custom Loggers 54 | By default, the shared logger is configured with an `AFNetworkActivityConsoleLogger`. 55 | 56 | To create a custom logger, create a new object that conforms to `AFNetworkActivityLoggerProtocol`, and add it to the shared logger. Be sure and configure the proper default logging level. 57 | 58 | ## License 59 | 60 | AFNetworkActivityLogger is available under the MIT license. See the LICENSE file for more info. 61 | -------------------------------------------------------------------------------- /Supporting Files/AFNetworkActivityLogger.h: -------------------------------------------------------------------------------- 1 | // AFNetworkActivityLogger.h 2 | // 3 | // Copyright (c) 2018 AFNetworking (http://afnetworking.com/) 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy 6 | // of this software and associated documentation files (the "Software"), to deal 7 | // in the Software without restriction, including without limitation the rights 8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | // copies of the Software, and to permit persons to whom the Software is 10 | // furnished to do so, subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in 13 | // all copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | // THE SOFTWARE. 22 | 23 | #import 24 | 25 | //! Project version number for AFNetworkActivityLogger. 26 | FOUNDATION_EXPORT double AFNetworkActivityLoggerVersionNumber; 27 | 28 | //! Project version string for AFNetworkActivityLogger. 29 | FOUNDATION_EXPORT const unsigned char AFNetworkActivityLoggerVersionString[]; 30 | 31 | // In this header, you should import all the public headers of your framework using statements like #import 32 | 33 | #import 34 | #import 35 | #import 36 | 37 | -------------------------------------------------------------------------------- /Supporting Files/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 3.0.0 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Supporting Files/modulemap.module: -------------------------------------------------------------------------------- 1 | framework module AFNetworkActivityLogger { 2 | module AFNetworkActivityLogger { 3 | header "AFNetworkActivityLogger.h" 4 | export * 5 | } 6 | 7 | module AFNetworkActivityLoggerProtocol { 8 | header "AFNetworkActivityLoggerProtocol.h" 9 | export * 10 | } 11 | 12 | module AFNetworkActivityConsoleLogger { 13 | header "AFNetworkActivityConsoleLogger.h" 14 | export * 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Tests/AFNetworkActivityLoggerTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // AFNetworkActivityLoggerTests.m 3 | // AFNetworkActivityLoggerTests 4 | // 5 | // Created by Kevin Harwood on 12/14/15. 6 | // Copyright © 2015 Alamofire. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | #import 13 | 14 | @interface AFNetworkActivityTestLogger : NSObject 15 | 16 | @property (nonatomic, strong) NSPredicate *filterPredicate; 17 | @property (nonatomic, assign) AFHTTPRequestLoggerLevel level; 18 | 19 | @property (nonatomic, copy) void (^startBlock)(NSURLSessionTask *); 20 | @property (nonatomic, copy) void (^finishBlock)(NSURLSessionTask *, id, NSTimeInterval, NSError *); 21 | 22 | @end 23 | 24 | @implementation AFNetworkActivityTestLogger 25 | 26 | - (void)URLSessionTaskDidStart:(NSURLSessionTask *)task { 27 | if (self.startBlock) { 28 | self.startBlock(task); 29 | } 30 | } 31 | 32 | - (void)URLSessionTaskDidFinish:(NSURLSessionTask *)task withResponseObject:(id)responseObject inElapsedTime:(NSTimeInterval)elapsedTime withError:(NSError *)error { 33 | if (self.finishBlock) { 34 | self.finishBlock(task, responseObject, elapsedTime, error); 35 | } 36 | } 37 | 38 | @end 39 | 40 | 41 | @interface AFNetworkActivityLoggerTests : XCTestCase 42 | @property (nonatomic, strong) AFNetworkActivityLogger *logger; 43 | @end 44 | 45 | @implementation AFNetworkActivityLoggerTests 46 | 47 | - (void)setUp { 48 | [super setUp]; 49 | self.logger = [AFNetworkActivityLogger new]; 50 | // Put setup code here. This method is called before the invocation of each test method in the class. 51 | } 52 | 53 | - (void)tearDown { 54 | // Put teardown code here. This method is called after the invocation of each test method in the class. 55 | [self.logger stopLogging]; 56 | [super tearDown]; 57 | } 58 | 59 | - (void)testSharedLoggerIsNotEqualToInitedLogger { 60 | XCTAssertFalse([self.logger isEqual:[AFNetworkActivityLogger sharedLogger]]); 61 | } 62 | 63 | - (void)testInitialStateIsProperlyConfigured { 64 | XCTAssertTrue(self.logger.loggers.count == 1); 65 | NSArray *array = [self.logger.loggers allObjects]; 66 | id consoleLogger = [array objectAtIndex:0]; 67 | XCTAssertTrue([consoleLogger isKindOfClass:[AFNetworkActivityConsoleLogger class]]); 68 | XCTAssertTrue(consoleLogger.level == AFLoggerLevelInfo); 69 | } 70 | 71 | - (void)testLoggerCanBeAdded { 72 | NSUInteger initialCount = self.logger.loggers.count; 73 | 74 | AFNetworkActivityConsoleLogger *newLogger = [AFNetworkActivityConsoleLogger new]; 75 | [self.logger addLogger:newLogger]; 76 | XCTAssertTrue(self.logger.loggers.count == initialCount + 1); 77 | } 78 | 79 | - (void)testLoggerCanBeRemoved { 80 | AFNetworkActivityConsoleLogger *newLogger = [AFNetworkActivityConsoleLogger new]; 81 | [self.logger addLogger:newLogger]; 82 | 83 | NSUInteger count = self.logger.loggers.count; 84 | 85 | [self.logger removeLogger:newLogger]; 86 | XCTAssertTrue(self.logger.loggers.count == count - 1); 87 | } 88 | 89 | - (void)testLogLevelCanBeSetOnAllLoggersSimultaneously { 90 | AFNetworkActivityConsoleLogger *firstLogger = [AFNetworkActivityConsoleLogger new]; 91 | firstLogger.level = AFLoggerLevelInfo; 92 | AFNetworkActivityConsoleLogger *secondLogger = [AFNetworkActivityConsoleLogger new]; 93 | secondLogger.level = AFLoggerLevelError; 94 | 95 | [self.logger addLogger:firstLogger]; 96 | [self.logger addLogger:secondLogger]; 97 | 98 | [self.logger setLogLevel:AFLoggerLevelDebug]; 99 | 100 | XCTAssertTrue(firstLogger.level == AFLoggerLevelDebug); 101 | XCTAssertTrue(secondLogger.level == AFLoggerLevelDebug); 102 | } 103 | 104 | - (void)testThatStartCallbackIsReceived { 105 | NSURL *baseURL = [NSURL URLWithString:@"https://httpbin.org"]; 106 | AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL]; 107 | AFNetworkActivityTestLogger *testLogger = [AFNetworkActivityTestLogger new]; 108 | 109 | XCTestExpectation *expectation = [self expectationWithDescription:@"Start Block Should Be Called"]; 110 | [testLogger setStartBlock:^(NSURLSessionTask *task) { 111 | XCTAssertNotNil(task); 112 | [expectation fulfill]; 113 | }]; 114 | [self.logger addLogger:testLogger]; 115 | [self.logger startLogging]; 116 | 117 | [manager 118 | GET:@"ip" 119 | parameters:nil 120 | progress:nil 121 | success:nil 122 | failure:nil]; 123 | [self waitForExpectationsWithTimeout:10.0 handler:nil]; 124 | [manager invalidateSessionCancelingTasks:YES]; 125 | } 126 | 127 | - (void)testThatFinishCallbackIsReceived { 128 | NSURL *baseURL = [NSURL URLWithString:@"https://httpbin.org"]; 129 | AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL]; 130 | AFNetworkActivityTestLogger *testLogger = [AFNetworkActivityTestLogger new]; 131 | 132 | XCTestExpectation *expectation = [self expectationWithDescription:@"Finish Block Should Be Called"]; 133 | [testLogger setFinishBlock:^(NSURLSessionTask *task, id responseObject, NSTimeInterval elpasedTime, NSError *error) { 134 | XCTAssertNotNil(task); 135 | XCTAssertNotNil(responseObject); 136 | XCTAssertTrue(elpasedTime > 0); 137 | XCTAssertNil(error); 138 | [expectation fulfill]; 139 | }]; 140 | [self.logger addLogger:testLogger]; 141 | [self.logger startLogging]; 142 | 143 | [manager 144 | GET:@"ip" 145 | parameters:nil 146 | progress:nil 147 | success:nil 148 | failure:nil]; 149 | [self waitForExpectationsWithTimeout:10.0 handler:nil]; 150 | [manager invalidateSessionCancelingTasks:YES]; 151 | } 152 | 153 | - (void)testThatFinishCallbackIsReceivedWithError { 154 | NSURL *baseURL = [NSURL URLWithString:@"https://httpbin.org"]; 155 | AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL]; 156 | AFNetworkActivityTestLogger *testLogger = [AFNetworkActivityTestLogger new]; 157 | 158 | XCTestExpectation *expectation = [self expectationWithDescription:@"Finish Block Should Be Called"]; 159 | [testLogger setFinishBlock:^(NSURLSessionTask *task, id responseObject, NSTimeInterval elpasedTime, NSError *error) { 160 | XCTAssertNotNil(task); 161 | XCTAssertNil(responseObject); 162 | XCTAssertTrue(elpasedTime > 0); 163 | XCTAssertNotNil(error); 164 | [expectation fulfill]; 165 | }]; 166 | [self.logger addLogger:testLogger]; 167 | [self.logger startLogging]; 168 | 169 | [manager 170 | GET:@"status/404" 171 | parameters:nil 172 | progress:nil 173 | success:nil 174 | failure:nil]; 175 | [self waitForExpectationsWithTimeout:10.0 handler:nil]; 176 | [manager invalidateSessionCancelingTasks:YES]; 177 | } 178 | 179 | - (void)testThatFilterPredicateIsRespectedForStartCallback { 180 | NSURL *baseURL = [NSURL URLWithString:@"https://httpbin.org"]; 181 | AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL]; 182 | AFNetworkActivityTestLogger *testLogger = [AFNetworkActivityTestLogger new]; 183 | 184 | 185 | [testLogger setStartBlock:^(NSURLSessionTask *task) { 186 | XCTFail(@"Start block should not be called"); 187 | }]; 188 | 189 | NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(NSURLRequest * _Nonnull request, NSDictionary * _Nullable bindings) { 190 | return true; 191 | }]; 192 | [testLogger setFilterPredicate:predicate]; 193 | 194 | [self.logger addLogger:testLogger]; 195 | [self.logger startLogging]; 196 | 197 | XCTestExpectation *expectation = [self expectationWithDescription:@"Request should succeed"]; 198 | [manager 199 | GET:@"ip" 200 | parameters:nil 201 | progress:nil 202 | success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) { 203 | [expectation fulfill]; 204 | } 205 | failure:nil]; 206 | [self waitForExpectationsWithTimeout:10.0 handler:nil]; 207 | [manager invalidateSessionCancelingTasks:YES]; 208 | } 209 | 210 | - (void)testThatFilterPredicateIsRespectedForFinishCallback { 211 | NSURL *baseURL = [NSURL URLWithString:@"https://httpbin.org"]; 212 | AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL]; 213 | AFNetworkActivityTestLogger *testLogger = [AFNetworkActivityTestLogger new]; 214 | 215 | 216 | [testLogger setFinishBlock:^(NSURLSessionTask *task, id responseObject, NSTimeInterval elapsedTime, NSError *error) { 217 | XCTFail(@"Start block should not be called"); 218 | }]; 219 | 220 | NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(NSURLRequest * _Nonnull request, NSDictionary * _Nullable bindings) { 221 | return true; 222 | }]; 223 | [testLogger setFilterPredicate:predicate]; 224 | 225 | [self.logger addLogger:testLogger]; 226 | [self.logger startLogging]; 227 | 228 | XCTestExpectation *expectation = [self expectationWithDescription:@"Request should succeed"]; 229 | [manager 230 | GET:@"ip" 231 | parameters:nil 232 | progress:nil 233 | success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) { 234 | [expectation fulfill]; 235 | } 236 | failure:nil]; 237 | [self waitForExpectationsWithTimeout:10.0 handler:nil]; 238 | [manager invalidateSessionCancelingTasks:YES]; 239 | } 240 | 241 | - (void)testThatIndividualLoggerIsNotCalledWhenLoggerIsNilledOut { 242 | NSURL *baseURL = [NSURL URLWithString:@"https://httpbin.org"]; 243 | AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL]; 244 | AFNetworkActivityTestLogger *testLogger = [AFNetworkActivityTestLogger new]; 245 | 246 | 247 | [testLogger setStartBlock:^(NSURLSessionTask *task) { 248 | XCTFail(@"Start block should not be called"); 249 | }]; 250 | 251 | [self.logger addLogger:testLogger]; 252 | [self.logger startLogging]; 253 | self.logger = nil; 254 | 255 | XCTestExpectation *expectation = [self expectationWithDescription:@"Request should succeed"]; 256 | [manager 257 | GET:@"ip" 258 | parameters:nil 259 | progress:nil 260 | success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) { 261 | [expectation fulfill]; 262 | } 263 | failure:nil]; 264 | [self waitForExpectationsWithTimeout:10.0 handler:nil]; 265 | [manager invalidateSessionCancelingTasks:YES]; 266 | } 267 | 268 | 269 | @end 270 | -------------------------------------------------------------------------------- /Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /fastlane/.env: -------------------------------------------------------------------------------- 1 | AF_WORKSPACE="AFNetworkActivityLogger.xcworkspace" 2 | 3 | AF_IOS_FRAMEWORK_SCHEME="AFNetworkActivityLogger iOS" 4 | AF_TVOS_FRAMEWORK_SCHEME="AFNetworkActivityLogger tvOS" 5 | AF_OSX_FRAMEWORK_SCHEME="AFNetworkActivityLogger OS X" 6 | -------------------------------------------------------------------------------- /fastlane/.env.default: -------------------------------------------------------------------------------- 1 | AF_IOS_SDK=iphonesimulator11.2 2 | AF_MAC_SDK=macosx10.13 3 | AF_TVOS_SDK=appletvsimulator11.2 4 | 5 | AF_CONFIGURATION=Release 6 | 7 | SCAN_WORKSPACE=$AF_WORKSPACE 8 | SCAN_SCHEME=$AF_IOS_FRAMEWORK_SCHEME 9 | SCAN_SDK=$AF_IOS_SDK 10 | SCAN_OUTPUT_DIRECTORY=fastlane/test-output 11 | -------------------------------------------------------------------------------- /fastlane/.env.deploy: -------------------------------------------------------------------------------- 1 | DEPLOY_BRANCH=master 2 | DEPLOY_PLIST_PATH="Supporting Files/Info.plist" 3 | DEPLOY_PODSPEC=AFNetworkActivityLogger.podspec 4 | DEPLOY_REMOTE=origin 5 | 6 | # Used for CHANGELOG Generation and Github Release Management 7 | GITHUB_OWNER=AFNetworking 8 | GITHUB_REPOSITORY=AFNetworkActivityLogger 9 | # CI Should Provide GITHUB_API_TOKEN 10 | 11 | CARTHAGE_FRAMEWORK_NAME=AFNetworkActivityLogger 12 | -------------------------------------------------------------------------------- /fastlane/.env.ios10_xcode8: -------------------------------------------------------------------------------- 1 | SCAN_DEVICE="iPhone 7" 2 | SCAN_SDK="iphonesimulator10.3" 3 | EXAMPLE_DESTINATION="platform=iOS Simulator,name=iPhone 7" 4 | -------------------------------------------------------------------------------- /fastlane/.env.ios11_xcode9: -------------------------------------------------------------------------------- 1 | SCAN_DEVICE="iPhone 8" 2 | SCAN_SDK=$AF_IOS_SDK 3 | EXAMPLE_DESTINATION="platform=iOS Simulator,name=iPhone 8" 4 | -------------------------------------------------------------------------------- /fastlane/.env.ios8_xcode7: -------------------------------------------------------------------------------- 1 | SCAN_DEVICE="iPhone 5" 2 | SCAN_SDK=iphonesimulator9.3 3 | EXAMPLE_DESTINATION="platform=iOS Simulator,name=iPhone 5,OS=8.1" -------------------------------------------------------------------------------- /fastlane/.env.ios9_xcode7: -------------------------------------------------------------------------------- 1 | SCAN_DEVICE="iPhone 6s" 2 | SCAN_SDK=iphonesimulator9.3 3 | EXAMPLE_DESTINATION="platform=iOS Simulator,name=iPhone 6s" -------------------------------------------------------------------------------- /fastlane/.env.osx: -------------------------------------------------------------------------------- 1 | SCAN_SCHEME=$AF_OSX_FRAMEWORK_SCHEME 2 | SCAN_SDK=$AF_OSX_SDK 3 | SCAN_DESTINATION="platform=macOS" 4 | -------------------------------------------------------------------------------- /fastlane/.env.tvos11_xcode9: -------------------------------------------------------------------------------- 1 | SCAN_SCHEME=$AF_TVOS_FRAMEWORK_SCHEME 2 | SCAN_DEVICE="Apple TV 4K" 3 | SCAN_SDK=$AF_TVOS_SDK 4 | -------------------------------------------------------------------------------- /fastlane/Fastfile: -------------------------------------------------------------------------------- 1 | import_from_git( 2 | url: 'https://github.com/AFNetworking/fastlane.git', 3 | branch: '0.0.9' 4 | ) 5 | -------------------------------------------------------------------------------- /fastlane/README.md: -------------------------------------------------------------------------------- 1 | fastlane documentation 2 | ================ 3 | # Installation 4 | 5 | Make sure you have the latest version of the Xcode command line tools installed: 6 | 7 | ``` 8 | xcode-select --install 9 | ``` 10 | 11 | Install _fastlane_ using 12 | ``` 13 | [sudo] gem install fastlane -NV 14 | ``` 15 | or alternatively using `brew cask install fastlane` 16 | 17 | # Available Actions 18 | ### ci_commit 19 | ``` 20 | fastlane ci_commit 21 | ``` 22 | Runs tests and builds example for the given environment 23 | 24 | The lane to run by ci on every commit This lanes calls the lanes `test_framework` and `build_example`. 25 | 26 | ####Example: 27 | 28 | ``` 29 | fastlane ci_commit configuration:Debug --env ios91 30 | ``` 31 | 32 | ####Options 33 | 34 | * **`configuration`**: The build configuration to use. (`AF_CONFIGURATION`) 35 | 36 | 37 | ### test_framework 38 | ``` 39 | fastlane test_framework 40 | ``` 41 | Runs all tests for the given environment 42 | 43 | Set `scan` action environment variables to control test configuration 44 | 45 | ####Example: 46 | 47 | ``` 48 | fastlane test_framework configuration:Debug --env ios91 49 | ``` 50 | 51 | ####Options 52 | 53 | * **`configuration`**: The build configuration to use. 54 | 55 | 56 | ### build_example 57 | ``` 58 | fastlane build_example 59 | ``` 60 | Builds the example file 61 | 62 | Set `xcodebuild` action environment variables to control build configuration 63 | 64 | ####Example: 65 | 66 | ``` 67 | fastlane build_example configuration:Debug --env ios91 68 | ``` 69 | 70 | ####Options 71 | 72 | * **`configuration`**: The build configuration to use. 73 | 74 | 75 | ### code_coverage 76 | ``` 77 | fastlane code_coverage 78 | ``` 79 | Produces code coverage information 80 | 81 | Set `scan` action environment variables to control test configuration 82 | 83 | ####Example: 84 | 85 | ``` 86 | fastlane code_coverage configuration:Debug 87 | ``` 88 | 89 | ####Options 90 | 91 | * **`configuration`**: The build configuration to use. The only supported configuration is the `Debug` configuration. 92 | 93 | 94 | ### prepare_framework_release 95 | ``` 96 | fastlane prepare_framework_release 97 | ``` 98 | Prepares the framework for release 99 | 100 | This lane should be run from your local machine, and will push a tag to the remote when finished. 101 | 102 | * Verifies the git branch is clean 103 | 104 | * Ensures the lane is running on the master branch 105 | 106 | * Verifies the Github milestone is ready for release 107 | 108 | * Pulls the remote to verify the latest the branch is up to date 109 | 110 | * Updates the version of the info plist path used by the framework 111 | 112 | * Updates the the version of the podspec 113 | 114 | * Generates a changelog based on the Github milestone 115 | 116 | * Updates the changelog file 117 | 118 | * Commits the changes 119 | 120 | * Pushes the commited branch 121 | 122 | * Creates a tag 123 | 124 | * Pushes the tag 125 | 126 | ####Example: 127 | 128 | ``` 129 | fastlane prepare_framework_release version:3.0.0 --env deploy 130 | ``` 131 | 132 | ####Options 133 | 134 | It is recommended to manage these options through a .env file. See `fastlane/.env.deploy` for an example. 135 | 136 | * **`version`** (required): The new version of the framework 137 | 138 | * **`allow_dirty_branch`**: Allows the git branch to be dirty before continuing. Defaults to false 139 | 140 | * **`remote`**: The name of the git remote. Defaults to `origin`. (`DEPLOY_REMOTE`) 141 | 142 | * **`allow_branch`**: The name of the branch to build from. Defaults to `master`. (`DEPLOY_BRANCH`) 143 | 144 | * **`skip_validate_github_milestone`**: Skips validating a Github milestone. Defaults to false 145 | 146 | * **`skip_git_pull`**: Skips pulling the git remote. Defaults to false 147 | 148 | * **`skip_plist_update`**: Skips updating the version of the info plist. Defaults to false 149 | 150 | * **`plist_path`**: The path of the plist file to update. (`DEPLOY_PLIST_PATH`) 151 | 152 | * **`skip_podspec_update`**: Skips updating the version of the podspec. Defaults to false 153 | 154 | * **`podspec`**: The path of the podspec file to update. (`DEPLOY_PODSPEC`) 155 | 156 | * **`skip_changelog`**: Skip generating a changelog. Defaults to false. 157 | 158 | * **`changelog_path`**: The path to the changelog file. (`DEPLOY_CHANGELOG_PATH`) 159 | 160 | * **`changelog_insert_delimiter`**: The delimiter to insert the changelog after. (`DEPLOY_CHANGELOG_DELIMITER`) 161 | 162 | 163 | ### complete_framework_release 164 | ``` 165 | fastlane complete_framework_release 166 | ``` 167 | Completes the framework release 168 | 169 | This lane should be from a CI machine, after the tests have passed on the tag build. This lane does the following: 170 | 171 | * Verifies the git branch is clean 172 | 173 | * Ensures the lane is running on the master branch 174 | 175 | * Pulls the remote to verify the latest the branch is up to date 176 | 177 | * Generates a changelog for the Github Release 178 | 179 | * Creates a Github Release 180 | 181 | * Builds Carthage Frameworks 182 | 183 | * Uploads Carthage Framework to Github Release 184 | 185 | * Pushes podspec to pod trunk 186 | 187 | * Lints the pod spec to ensure it is valid 188 | 189 | * Closes the associated Github milestone 190 | 191 | ####Example: 192 | 193 | ``` 194 | fastlane complete_framework_release --env deploy 195 | ``` 196 | 197 | ####Options 198 | 199 | It is recommended to manage these options through a .env file. See `fastlane/.env.deploy` for an example. 200 | 201 | * **`version`** (required): The new version of the framework. Defaults to the last tag in the repo 202 | 203 | * **`allow_dirty_branch`**: Allows the git branch to be dirty before continuing. Defaults to false 204 | 205 | * **`remote`**: The name of the git remote. Defaults to `origin`. (`DEPLOY_REMOTE`) 206 | 207 | * **`allow_branch`**: The name of the branch to build from. Defaults to `master`. (`DEPLOY_BRANCH`) 208 | 209 | * **`skip_github_release`**: Skips creating a Github release. Defaults to false 210 | 211 | * **`skip_carthage_framework`**: Skips creating a carthage framework. If building a swift framework, this should be disabled. Defaults to false. 212 | 213 | * **`skip_pod_push`**: Skips pushing the podspec to trunk. 214 | 215 | * **`skip_podspec_update`**: Skips updating the version of the podspec. Defaults to false 216 | 217 | * **`skip_closing_github_milestone`**: Skips closing the associated Github milestone. Defaults to false 218 | 219 | 220 | 221 | ---- 222 | 223 | This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run. 224 | More information about fastlane can be found on [fastlane.tools](https://fastlane.tools). 225 | The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools). 226 | --------------------------------------------------------------------------------