cocoapods-catalyst-validator 0.1.0.beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +107 -0
- data/LICENSE.txt +22 -0
- data/README.md +18 -0
- data/Rakefile +13 -0
- data/cocoapods-catalyst-validator.gemspec +23 -0
- data/examples/AExample/AExample/AExample.entitlements +10 -0
- data/examples/AExample/AExample/AppDelegate.h +14 -0
- data/examples/AExample/AExample/AppDelegate.m +40 -0
- data/examples/AExample/AExample/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
- data/examples/AExample/AExample/Assets.xcassets/AppIcon.appiconset/Contents.json +98 -0
- data/examples/AExample/AExample/Assets.xcassets/Contents.json +6 -0
- data/examples/AExample/AExample/Base.lproj/LaunchScreen.storyboard +25 -0
- data/examples/AExample/AExample/Base.lproj/Main.storyboard +24 -0
- data/examples/AExample/AExample/Info.plist +25 -0
- data/examples/AExample/AExample/SceneDelegate.h +15 -0
- data/examples/AExample/AExample/SceneDelegate.m +57 -0
- data/examples/AExample/AExample/ViewController.h +14 -0
- data/examples/AExample/AExample/ViewController.m +22 -0
- data/examples/AExample/AExample/main.m +18 -0
- data/examples/AExample/AExample.xcodeproj/project.pbxproj +664 -0
- data/examples/AExample/AExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/examples/AExample/AExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- data/examples/AExample/AExample.xcodeproj/project.xcworkspace/xcuserdata/xuzhongping.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/examples/AExample/AExample.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
- data/examples/AExample/AExample.xcworkspace/contents.xcworkspacedata +10 -0
- data/examples/AExample/AExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- data/examples/AExample/AExample.xcworkspace/xcuserdata/xuzhongping.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/examples/AExample/AExampleCP/AppDelegate.h +14 -0
- data/examples/AExample/AExampleCP/AppDelegate.m +40 -0
- data/examples/AExample/AExampleCP/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
- data/examples/AExample/AExampleCP/Assets.xcassets/AppIcon.appiconset/Contents.json +98 -0
- data/examples/AExample/AExampleCP/Assets.xcassets/Contents.json +6 -0
- data/examples/AExample/AExampleCP/Base.lproj/LaunchScreen.storyboard +25 -0
- data/examples/AExample/AExampleCP/Base.lproj/Main.storyboard +24 -0
- data/examples/AExample/AExampleCP/Info.plist +25 -0
- data/examples/AExample/AExampleCP/SceneDelegate.h +15 -0
- data/examples/AExample/AExampleCP/SceneDelegate.m +57 -0
- data/examples/AExample/AExampleCP/ViewController.h +14 -0
- data/examples/AExample/AExampleCP/ViewController.m +22 -0
- data/examples/AExample/AExampleCP/main.m +18 -0
- data/examples/AExample/Podfile +24 -0
- data/examples/AExample/Podfile.lock +112 -0
- data/examples/AExample/Pods/Bugly/Bugly.framework/Bugly +0 -0
- data/examples/AExample/Pods/Bugly/Bugly.framework/Headers/Bugly.h +163 -0
- data/examples/AExample/Pods/Bugly/Bugly.framework/Headers/BuglyConfig.h +149 -0
- data/examples/AExample/Pods/Bugly/Bugly.framework/Headers/BuglyLog.h +78 -0
- data/examples/AExample/Pods/Bugly/Bugly.framework/Modules/module.modulemap +12 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/Info.plist +97 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +62 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +33 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +142 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIREventNames.h +495 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +731 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +29 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +6 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Info.plist +20 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_armv7/FirebaseAnalytics.framework/Modules/module.modulemap +13 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +62 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +33 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +142 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIREventNames.h +495 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +731 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +29 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +6 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Info.plist +20 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/FirebaseAnalytics.framework/Modules/module.modulemap +13 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +62 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +33 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +142 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIREventNames.h +495 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +731 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +29 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +6 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Info.plist +20 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/FirebaseAnalytics.framework/Modules/module.modulemap +13 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +62 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +33 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +142 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIREventNames.h +495 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +731 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +29 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +6 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Info.plist +20 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Modules/module.modulemap +13 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +62 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +33 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +142 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIREventNames.h +495 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +731 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +29 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +6 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Info.plist +20 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64/FirebaseAnalytics.framework/Modules/module.modulemap +12 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/FirebaseAnalytics +0 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h +62 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics+Consent.h +33 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +142 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIREventNames.h +495 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRParameterNames.h +731 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h +29 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h +6 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Info.plist +20 -0
- data/examples/AExample/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/tvos-arm64_x86_64-simulator/FirebaseAnalytics.framework/Modules/module.modulemap +12 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.h +56 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.m +62 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRApp.m +856 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.h +49 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.m +47 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.h +53 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.m +79 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponent.m +65 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainer.m +214 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainerInternal.h +49 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentType.m +28 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfiguration.m +46 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfigurationInternal.h +29 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRCoreDiagnosticsConnector.m +61 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRDependency.m +44 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.h +35 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.m +66 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRFirebaseUserAgent.h +36 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRFirebaseUserAgent.m +107 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRHeartbeatInfo.m +72 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRLogger.m +174 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIROptions.m +498 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/FIRVersion.m +32 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAppInternal.h +153 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponent.h +91 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainer.h +41 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentType.h +34 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h +35 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRDependency.h +45 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h +39 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLibrary.h +44 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLogger.h +146 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIROptionsInternal.h +115 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Private/FirebaseCoreInternal.h +28 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRApp.h +127 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRConfiguration.h +45 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRLoggerLevel.h +38 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIROptions.h +126 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FIRVersion.h +25 -0
- data/examples/AExample/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore/FirebaseCore.h +21 -0
- data/examples/AExample/Pods/FirebaseCore/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h +61 -0
- data/examples/AExample/Pods/FirebaseCore/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h +34 -0
- data/examples/AExample/Pods/FirebaseCore/LICENSE +202 -0
- data/examples/AExample/Pods/FirebaseCore/README.md +319 -0
- data/examples/AExample/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m +551 -0
- data/examples/AExample/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c +60 -0
- data/examples/AExample/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h +193 -0
- data/examples/AExample/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Public/FIRCoreDiagnostics.h +18 -0
- data/examples/AExample/Pods/FirebaseCoreDiagnostics/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h +61 -0
- data/examples/AExample/Pods/FirebaseCoreDiagnostics/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h +34 -0
- data/examples/AExample/Pods/FirebaseCoreDiagnostics/LICENSE +202 -0
- data/examples/AExample/Pods/FirebaseCoreDiagnostics/README.md +319 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRAppInternal.h +153 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponent.h +91 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponentContainer.h +41 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRComponentType.h +34 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h +35 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRDependency.h +45 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h +39 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRLibrary.h +44 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIRLogger.h +146 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FIROptionsInternal.h +115 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseCore/Sources/Private/FirebaseCoreInternal.h +28 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.h +65 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.m +145 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.h +53 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m +79 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallations.m +282 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResult.m +30 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResultInternal.h +27 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.h +93 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.m +161 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.h +52 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.m +50 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.h +48 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.m +242 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.h +36 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m +158 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.h +62 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m +380 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.h +53 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.m +142 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRCurrentDateProvider.h +27 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRCurrentDateProvider.m +23 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsBackoffController.h +54 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsBackoffController.m +132 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.h +44 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m +531 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.h +58 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.m +75 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsStatus.h +35 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h +71 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m +126 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.h +58 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.m +77 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.h +51 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.m +80 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Private/FirebaseInstallationsInternal.h +19 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FIRInstallations.h +127 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FIRInstallationsAuthTokenResult.h +33 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FIRInstallationsErrors.h +34 -0
- data/examples/AExample/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations/FirebaseInstallations.h +19 -0
- data/examples/AExample/Pods/FirebaseInstallations/LICENSE +202 -0
- data/examples/AExample/Pods/FirebaseInstallations/README.md +319 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/Info.plist +97 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_armv7/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_armv7/GoogleAppMeasurement.framework/Info.plist +20 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_armv7/GoogleAppMeasurement.framework/Modules/module.modulemap +10 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurement.framework/Info.plist +20 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurement.framework/Modules/module.modulemap +10 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurement.framework/Info.plist +20 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurement.framework/Modules/module.modulemap +10 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/macos-arm64_x86_64/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/macos-arm64_x86_64/GoogleAppMeasurement.framework/Info.plist +20 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/macos-arm64_x86_64/GoogleAppMeasurement.framework/Modules/module.modulemap +10 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64/GoogleAppMeasurement.framework/Info.plist +20 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64/GoogleAppMeasurement.framework/Modules/module.modulemap +10 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurement.framework/GoogleAppMeasurement +0 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurement.framework/Info.plist +20 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurement.framework/Modules/module.modulemap +10 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/Info.plist +97 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_armv7/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_armv7/GoogleAppMeasurementIdentitySupport.framework/Info.plist +20 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_armv7/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +5 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Info.plist +20 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +5 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurementIdentitySupport.framework/Info.plist +20 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +5 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/macos-arm64_x86_64/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/macos-arm64_x86_64/GoogleAppMeasurementIdentitySupport.framework/Info.plist +20 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/macos-arm64_x86_64/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +5 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64/GoogleAppMeasurementIdentitySupport.framework/Info.plist +20 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +5 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/GoogleAppMeasurementIdentitySupport +0 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Info.plist +20 -0
- data/examples/AExample/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurementIdentitySupport.xcframework/tvos-arm64_x86_64-simulator/GoogleAppMeasurementIdentitySupport.framework/Modules/module.modulemap +5 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTCompressionHelper.m +95 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTNanopbHelpers.m +270 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTUploadOperation.m +573 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCCTUploader.m +210 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/GDTCOREvent+GDTCCTSupport.m +240 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTCompressionHelper.h +40 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h +128 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTUploadOperation.h +76 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Private/GDTCCTUploader.h +45 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c +128 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h +281 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCCTLibrary/Public/GDTCOREvent+GDTCCTSupport.h +51 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORAssert.m +36 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORClock.m +178 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m +55 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORDirectorySizeTracker.m +101 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREndpoints.m +92 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m +153 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORFlatFileStorage+Promises.m +104 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORFlatFileStorage.m +826 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m +119 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m +604 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m +125 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m +157 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStorageEventSelector.m +39 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m +111 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m +92 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadBatch.m +30 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m +176 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORAssert.h +95 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORDirectorySizeTracker.h +66 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORLifecycle.h +63 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORPlatform.h +225 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORReachability.h +31 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORRegistrar.h +50 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORStorageEventSelector.h +61 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORStorageProtocol.h +171 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Internal/GDTCORUploader.h +59 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREndpoints_Private.h +27 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h +33 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORFlatFileStorage+Promises.h +28 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORFlatFileStorage.h +158 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h +30 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h +35 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h +57 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h +37 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransport_Private.h +39 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadBatch.h +37 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h +68 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORClock.h +66 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORConsoleLogger.h +144 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREndpoints.h +36 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREvent.h +87 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREventDataObject.h +36 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCOREventTransformer.h +38 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORTargets.h +40 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORTransport.h +92 -0
- data/examples/AExample/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GoogleDataTransport.h +24 -0
- data/examples/AExample/Pods/GoogleDataTransport/LICENSE +202 -0
- data/examples/AExample/Pods/GoogleDataTransport/README.md +231 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m +1070 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULSceneDelegateSwizzler.m +439 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h +55 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h +48 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULAppDelegateSwizzler.h +107 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULApplication.h +50 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Public/GoogleUtilities/GULSceneDelegateSwizzler.h +76 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Common/GULLoggerCodes.h +56 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/GULHeartbeatDateStorage.m +153 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/GULHeartbeatDateStorageUserDefaults.m +68 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/GULSecureCoding.m +103 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULAppEnvironmentUtil.h +60 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULHeartbeatDateStorable.h +40 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULHeartbeatDateStorage.h +54 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULHeartbeatDateStorageUserDefaults.h +51 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULKeychainStorage.h +79 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULKeychainUtils.h +61 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULSecureCoding.h +36 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/GULURLSessionDataResponse.h +31 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GoogleUtilities/NSURLSession+GULPromises.h +37 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainStorage.m +192 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/SecureStorage/GULKeychainUtils.m +113 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/URLSessionPromiseWrapper/GULURLSessionDataResponse.m +30 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/URLSessionPromiseWrapper/NSURLSession+GULPromises.m +46 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m +333 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Logger/GULLogger.m +215 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Logger/Public/GoogleUtilities/GULLogger.h +159 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Logger/Public/GoogleUtilities/GULLoggerLevel.h +37 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/GULSwizzler.m +153 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Public/GoogleUtilities/GULOriginalIMPConvenienceMacros.h +207 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/Public/GoogleUtilities/GULSwizzler.h +71 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.m +207 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/Public/GoogleUtilities/GULNSData+zlib.h +49 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULMutableDictionary.m +101 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetwork.m +390 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkConstants.m +41 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkInternal.h +24 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkURLSession.m +766 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULMutableDictionary.h +46 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetwork.h +87 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkConstants.h +71 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkLoggerProtocol.h +49 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkMessageCode.h +47 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkURLSession.h +62 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h +48 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker.m +263 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityMessageCode.h +29 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/Reachability/Public/GoogleUtilities/GULReachabilityChecker.h +79 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/UserDefaults/GULUserDefaults.m +213 -0
- data/examples/AExample/Pods/GoogleUtilities/GoogleUtilities/UserDefaults/Public/GoogleUtilities/GULUserDefaults.h +110 -0
- data/examples/AExample/Pods/GoogleUtilities/LICENSE +247 -0
- data/examples/AExample/Pods/GoogleUtilities/README.md +189 -0
- data/examples/AExample/Pods/Manifest.lock +112 -0
- data/examples/AExample/Pods/Pods.xcodeproj/project.pbxproj +3670 -0
- data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/FirebaseAnalytics.xcscheme +58 -0
- data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/FirebaseCore.xcscheme +58 -0
- data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/FirebaseCoreDiagnostics.xcscheme +58 -0
- data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/FirebaseInstallations.xcscheme +58 -0
- data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/GoogleAppMeasurement.xcscheme +58 -0
- data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/GoogleDataTransport.xcscheme +58 -0
- data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/GoogleUtilities.xcscheme +58 -0
- data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/Pods-AExample-AExampleCP.xcscheme +58 -0
- data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/Pods-AExample.xcscheme +58 -0
- data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/PromisesObjC.xcscheme +58 -0
- data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/nanopb.xcscheme +58 -0
- data/examples/AExample/Pods/Pods.xcodeproj/xcuserdata/xuzhongping.xcuserdatad/xcschemes/xcschememanagement.plist +66 -0
- data/examples/AExample/Pods/PromisesObjC/LICENSE +202 -0
- data/examples/AExample/Pods/PromisesObjC/README.md +60 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+All.m +86 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Always.m +58 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Any.m +112 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Async.m +70 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Await.m +48 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Catch.m +55 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Delay.m +59 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Do.m +59 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Race.m +65 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Recover.m +54 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Reduce.m +61 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Retry.m +128 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Testing.m +55 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Then.m +50 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Timeout.m +64 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Validate.m +56 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Wrap.m +420 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise.m +299 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/FBLPromiseError.m +19 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+All.h +63 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Always.h +54 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Any.h +69 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Async.h +60 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Await.h +32 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Catch.h +59 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Delay.h +59 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Do.h +55 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Race.h +62 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Recover.h +60 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Reduce.h +71 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Retry.h +165 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Testing.h +57 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Then.h +63 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Timeout.h +57 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Validate.h +60 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Wrap.h +316 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise.h +93 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromiseError.h +43 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromisePrivate.h +66 -0
- data/examples/AExample/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromises.h +32 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics-xcframeworks-input-files.xcfilelist +2 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics-xcframeworks-output-files.xcfilelist +1 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics-xcframeworks.sh +109 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.debug.xcconfig +13 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.release.xcconfig +13 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore-Info.plist +26 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore-dummy.m +5 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore-umbrella.h +22 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore.debug.xcconfig +16 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore.modulemap +6 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseCore/FirebaseCore.release.xcconfig +16 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-Info.plist +26 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-dummy.m +5 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-umbrella.h +17 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.debug.xcconfig +17 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.modulemap +6 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.release.xcconfig +17 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-Info.plist +26 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-dummy.m +5 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-umbrella.h +20 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.debug.xcconfig +15 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.modulemap +6 -0
- data/examples/AExample/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.release.xcconfig +15 -0
- data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement-xcframeworks-input-files.xcfilelist +3 -0
- data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement-xcframeworks-output-files.xcfilelist +2 -0
- data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement-xcframeworks.sh +110 -0
- data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement.debug.xcconfig +13 -0
- data/examples/AExample/Pods/Target Support Files/GoogleAppMeasurement/GoogleAppMeasurement.release.xcconfig +13 -0
- data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-Info.plist +26 -0
- data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-dummy.m +5 -0
- data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-umbrella.h +25 -0
- data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.debug.xcconfig +16 -0
- data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.modulemap +6 -0
- data/examples/AExample/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.release.xcconfig +16 -0
- data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist +26 -0
- data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-dummy.m +5 -0
- data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities-umbrella.h +41 -0
- data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.debug.xcconfig +15 -0
- data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.modulemap +6 -0
- data/examples/AExample/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.release.xcconfig +15 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-Info.plist +26 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-acknowledgements.markdown +1316 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-acknowledgements.plist +1396 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-dummy.m +5 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks-Debug-input-files.xcfilelist +8 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks-Debug-output-files.xcfilelist +7 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks-Release-input-files.xcfilelist +8 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks-Release-output-files.xcfilelist +7 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-frameworks.sh +198 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample-umbrella.h +16 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample.debug.xcconfig +12 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample.modulemap +6 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample/Pods-AExample.release.xcconfig +12 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-Info.plist +26 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-acknowledgements.markdown +1316 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-acknowledgements.plist +1396 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-dummy.m +5 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks-Debug-input-files.xcfilelist +8 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks-Debug-output-files.xcfilelist +7 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks-Release-input-files.xcfilelist +8 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks-Release-output-files.xcfilelist +7 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-frameworks.sh +198 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP-umbrella.h +16 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP.debug.xcconfig +12 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP.modulemap +6 -0
- data/examples/AExample/Pods/Target Support Files/Pods-AExample-AExampleCP/Pods-AExample-AExampleCP.release.xcconfig +12 -0
- data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC-Info.plist +26 -0
- data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC-dummy.m +5 -0
- data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC-umbrella.h +36 -0
- data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC.debug.xcconfig +12 -0
- data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC.modulemap +6 -0
- data/examples/AExample/Pods/Target Support Files/PromisesObjC/PromisesObjC.release.xcconfig +12 -0
- data/examples/AExample/Pods/Target Support Files/nanopb/nanopb-Info.plist +26 -0
- data/examples/AExample/Pods/Target Support Files/nanopb/nanopb-dummy.m +5 -0
- data/examples/AExample/Pods/Target Support Files/nanopb/nanopb-prefix.pch +12 -0
- data/examples/AExample/Pods/Target Support Files/nanopb/nanopb-umbrella.h +26 -0
- data/examples/AExample/Pods/Target Support Files/nanopb/nanopb.debug.xcconfig +11 -0
- data/examples/AExample/Pods/Target Support Files/nanopb/nanopb.modulemap +6 -0
- data/examples/AExample/Pods/Target Support Files/nanopb/nanopb.release.xcconfig +11 -0
- data/examples/AExample/Pods/nanopb/LICENSE.txt +20 -0
- data/examples/AExample/Pods/nanopb/README.md +71 -0
- data/examples/AExample/Pods/nanopb/pb.h +599 -0
- data/examples/AExample/Pods/nanopb/pb_common.c +97 -0
- data/examples/AExample/Pods/nanopb/pb_common.h +42 -0
- data/examples/AExample/Pods/nanopb/pb_decode.c +1564 -0
- data/examples/AExample/Pods/nanopb/pb_decode.h +178 -0
- data/examples/AExample/Pods/nanopb/pb_encode.c +913 -0
- data/examples/AExample/Pods/nanopb/pb_encode.h +170 -0
- data/lib/cocoapods-catalyst-validator/cocoapods-catalyst-validator.rb +110 -0
- data/lib/cocoapods-catalyst-validator/gem_version.rb +3 -0
- data/lib/cocoapods_plugin.rb +3 -0
- data/spec/command/validator_spec.rb +12 -0
- data/spec/spec_helper.rb +50 -0
- metadata +601 -0
|
@@ -0,0 +1,766 @@
|
|
|
1
|
+
// Copyright 2017 Google
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
#import <Foundation/Foundation.h>
|
|
16
|
+
|
|
17
|
+
#import "GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkURLSession.h"
|
|
18
|
+
|
|
19
|
+
#import "GoogleUtilities/Logger/Public/GoogleUtilities/GULLogger.h"
|
|
20
|
+
#import "GoogleUtilities/Network/GULNetworkInternal.h"
|
|
21
|
+
#import "GoogleUtilities/Network/Public/GoogleUtilities/GULMutableDictionary.h"
|
|
22
|
+
#import "GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkConstants.h"
|
|
23
|
+
#import "GoogleUtilities/Network/Public/GoogleUtilities/GULNetworkMessageCode.h"
|
|
24
|
+
|
|
25
|
+
@interface GULNetworkURLSession () <NSURLSessionDelegate,
|
|
26
|
+
NSURLSessionDataDelegate,
|
|
27
|
+
NSURLSessionDownloadDelegate,
|
|
28
|
+
NSURLSessionTaskDelegate>
|
|
29
|
+
@end
|
|
30
|
+
|
|
31
|
+
@implementation GULNetworkURLSession {
|
|
32
|
+
/// The handler to be called when the request completes or error has occurs.
|
|
33
|
+
GULNetworkURLSessionCompletionHandler _completionHandler;
|
|
34
|
+
|
|
35
|
+
/// Session ID generated randomly with a fixed prefix.
|
|
36
|
+
NSString *_sessionID;
|
|
37
|
+
|
|
38
|
+
#pragma clang diagnostic push
|
|
39
|
+
#pragma clang diagnostic ignored "-Wunguarded-availability"
|
|
40
|
+
/// The session configuration. NSURLSessionConfiguration' is only available on iOS 7.0 or newer.
|
|
41
|
+
NSURLSessionConfiguration *_sessionConfig;
|
|
42
|
+
|
|
43
|
+
/// The current NSURLSession.
|
|
44
|
+
NSURLSession *__weak _Nullable _URLSession;
|
|
45
|
+
#pragma clang diagnostic pop
|
|
46
|
+
|
|
47
|
+
/// The path to the directory where all temporary files are stored before uploading.
|
|
48
|
+
NSURL *_networkDirectoryURL;
|
|
49
|
+
|
|
50
|
+
/// The downloaded data from fetching.
|
|
51
|
+
NSData *_downloadedData;
|
|
52
|
+
|
|
53
|
+
/// The path to the temporary file which stores the uploading data.
|
|
54
|
+
NSURL *_uploadingFileURL;
|
|
55
|
+
|
|
56
|
+
/// The current request.
|
|
57
|
+
NSURLRequest *_request;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
#pragma mark - Init
|
|
61
|
+
|
|
62
|
+
- (instancetype)initWithNetworkLoggerDelegate:(id<GULNetworkLoggerDelegate>)networkLoggerDelegate {
|
|
63
|
+
self = [super init];
|
|
64
|
+
if (self) {
|
|
65
|
+
// Create URL to the directory where all temporary files to upload have to be stored.
|
|
66
|
+
#if TARGET_OS_TV
|
|
67
|
+
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
|
|
68
|
+
#else
|
|
69
|
+
NSArray *paths =
|
|
70
|
+
NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
|
|
71
|
+
#endif
|
|
72
|
+
NSString *storageDirectory = paths.firstObject;
|
|
73
|
+
NSArray *tempPathComponents = @[
|
|
74
|
+
storageDirectory, kGULNetworkApplicationSupportSubdirectory, kGULNetworkTempDirectoryName
|
|
75
|
+
];
|
|
76
|
+
_networkDirectoryURL = [NSURL fileURLWithPathComponents:tempPathComponents];
|
|
77
|
+
_sessionID = [NSString stringWithFormat:@"%@-%@", kGULNetworkBackgroundSessionConfigIDPrefix,
|
|
78
|
+
[[NSUUID UUID] UUIDString]];
|
|
79
|
+
_loggerDelegate = networkLoggerDelegate;
|
|
80
|
+
}
|
|
81
|
+
return self;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
#pragma mark - External Methods
|
|
85
|
+
|
|
86
|
+
#pragma mark - To be called from AppDelegate
|
|
87
|
+
|
|
88
|
+
+ (void)handleEventsForBackgroundURLSessionID:(NSString *)sessionID
|
|
89
|
+
completionHandler:
|
|
90
|
+
(GULNetworkSystemCompletionHandler)systemCompletionHandler {
|
|
91
|
+
// The session may not be Analytics background. Ignore those that do not have the prefix.
|
|
92
|
+
if (![sessionID hasPrefix:kGULNetworkBackgroundSessionConfigIDPrefix]) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
GULNetworkURLSession *fetcher = [self fetcherWithSessionIdentifier:sessionID];
|
|
96
|
+
if (fetcher != nil) {
|
|
97
|
+
[fetcher addSystemCompletionHandler:systemCompletionHandler forSession:sessionID];
|
|
98
|
+
} else {
|
|
99
|
+
GULLogError(kGULLoggerNetwork, NO,
|
|
100
|
+
[NSString stringWithFormat:@"I-NET%06ld", (long)kGULNetworkMessageCodeNetwork003],
|
|
101
|
+
@"Failed to retrieve background session with ID %@ after app is relaunched.",
|
|
102
|
+
sessionID);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
#pragma mark - External Methods
|
|
107
|
+
|
|
108
|
+
/// Sends an async POST request using NSURLSession for iOS >= 7.0, and returns an ID of the
|
|
109
|
+
/// connection.
|
|
110
|
+
- (nullable NSString *)sessionIDFromAsyncPOSTRequest:(NSURLRequest *)request
|
|
111
|
+
completionHandler:(GULNetworkURLSessionCompletionHandler)handler
|
|
112
|
+
API_AVAILABLE(ios(7.0)) {
|
|
113
|
+
// NSURLSessionUploadTask does not work with NSData in the background.
|
|
114
|
+
// To avoid this issue, write the data to a temporary file to upload it.
|
|
115
|
+
// Make a temporary file with the data subset.
|
|
116
|
+
_uploadingFileURL = [self temporaryFilePathWithSessionID:_sessionID];
|
|
117
|
+
NSError *writeError;
|
|
118
|
+
NSURLSessionUploadTask *postRequestTask;
|
|
119
|
+
NSURLSession *session;
|
|
120
|
+
BOOL didWriteFile = NO;
|
|
121
|
+
|
|
122
|
+
// Clean up the entire temp folder to avoid temp files that remain in case the previous session
|
|
123
|
+
// crashed and did not clean up.
|
|
124
|
+
[self maybeRemoveTempFilesAtURL:_networkDirectoryURL
|
|
125
|
+
expiringTime:kGULNetworkTempFolderExpireTime];
|
|
126
|
+
|
|
127
|
+
// If there is no background network enabled, no need to write to file. This will allow default
|
|
128
|
+
// network session which runs on the foreground.
|
|
129
|
+
if (_backgroundNetworkEnabled && [self ensureTemporaryDirectoryExists]) {
|
|
130
|
+
didWriteFile = [request.HTTPBody writeToFile:_uploadingFileURL.path
|
|
131
|
+
options:NSDataWritingAtomic
|
|
132
|
+
error:&writeError];
|
|
133
|
+
|
|
134
|
+
if (writeError) {
|
|
135
|
+
[_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelError
|
|
136
|
+
messageCode:kGULNetworkMessageCodeURLSession000
|
|
137
|
+
message:@"Failed to write request data to file"
|
|
138
|
+
context:writeError];
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (didWriteFile) {
|
|
143
|
+
// Exclude this file from backing up to iTunes. There are conflicting reports that excluding
|
|
144
|
+
// directory from backing up does not exclude files of that directory from backing up.
|
|
145
|
+
[self excludeFromBackupForURL:_uploadingFileURL];
|
|
146
|
+
|
|
147
|
+
_sessionConfig = [self backgroundSessionConfigWithSessionID:_sessionID];
|
|
148
|
+
[self populateSessionConfig:_sessionConfig withRequest:request];
|
|
149
|
+
session = [NSURLSession sessionWithConfiguration:_sessionConfig
|
|
150
|
+
delegate:self
|
|
151
|
+
delegateQueue:[NSOperationQueue mainQueue]];
|
|
152
|
+
postRequestTask = [session uploadTaskWithRequest:request fromFile:_uploadingFileURL];
|
|
153
|
+
} else {
|
|
154
|
+
// If we cannot write to file, just send it in the foreground.
|
|
155
|
+
_sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
|
|
156
|
+
[self populateSessionConfig:_sessionConfig withRequest:request];
|
|
157
|
+
session = [NSURLSession sessionWithConfiguration:_sessionConfig
|
|
158
|
+
delegate:self
|
|
159
|
+
delegateQueue:[NSOperationQueue mainQueue]];
|
|
160
|
+
postRequestTask = [session uploadTaskWithRequest:request fromData:request.HTTPBody];
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (!session || !postRequestTask) {
|
|
164
|
+
NSError *error = [[NSError alloc]
|
|
165
|
+
initWithDomain:kGULNetworkErrorDomain
|
|
166
|
+
code:GULErrorCodeNetworkRequestCreation
|
|
167
|
+
userInfo:@{kGULNetworkErrorContext : @"Cannot create network session"}];
|
|
168
|
+
[self callCompletionHandler:handler withResponse:nil data:nil error:error];
|
|
169
|
+
return nil;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
_URLSession = session;
|
|
173
|
+
|
|
174
|
+
// Save the session into memory.
|
|
175
|
+
[[self class] setSessionInFetcherMap:self forSessionID:_sessionID];
|
|
176
|
+
|
|
177
|
+
_request = [request copy];
|
|
178
|
+
|
|
179
|
+
// Store completion handler because background session does not accept handler block but custom
|
|
180
|
+
// delegate.
|
|
181
|
+
_completionHandler = [handler copy];
|
|
182
|
+
[postRequestTask resume];
|
|
183
|
+
|
|
184
|
+
return _sessionID;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/// Sends an async GET request using NSURLSession for iOS >= 7.0, and returns an ID of the session.
|
|
188
|
+
- (nullable NSString *)sessionIDFromAsyncGETRequest:(NSURLRequest *)request
|
|
189
|
+
completionHandler:(GULNetworkURLSessionCompletionHandler)handler
|
|
190
|
+
API_AVAILABLE(ios(7.0)) {
|
|
191
|
+
if (_backgroundNetworkEnabled) {
|
|
192
|
+
_sessionConfig = [self backgroundSessionConfigWithSessionID:_sessionID];
|
|
193
|
+
} else {
|
|
194
|
+
_sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
[self populateSessionConfig:_sessionConfig withRequest:request];
|
|
198
|
+
|
|
199
|
+
// Do not cache the GET request.
|
|
200
|
+
_sessionConfig.URLCache = nil;
|
|
201
|
+
|
|
202
|
+
NSURLSession *session = [NSURLSession sessionWithConfiguration:_sessionConfig
|
|
203
|
+
delegate:self
|
|
204
|
+
delegateQueue:[NSOperationQueue mainQueue]];
|
|
205
|
+
NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithRequest:request];
|
|
206
|
+
|
|
207
|
+
if (!session || !downloadTask) {
|
|
208
|
+
NSError *error = [[NSError alloc]
|
|
209
|
+
initWithDomain:kGULNetworkErrorDomain
|
|
210
|
+
code:GULErrorCodeNetworkRequestCreation
|
|
211
|
+
userInfo:@{kGULNetworkErrorContext : @"Cannot create network session"}];
|
|
212
|
+
[self callCompletionHandler:handler withResponse:nil data:nil error:error];
|
|
213
|
+
return nil;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
_URLSession = session;
|
|
217
|
+
|
|
218
|
+
// Save the session into memory.
|
|
219
|
+
[[self class] setSessionInFetcherMap:self forSessionID:_sessionID];
|
|
220
|
+
|
|
221
|
+
_request = [request copy];
|
|
222
|
+
|
|
223
|
+
_completionHandler = [handler copy];
|
|
224
|
+
[downloadTask resume];
|
|
225
|
+
|
|
226
|
+
return _sessionID;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
#pragma mark - NSURLSessionDataDelegate
|
|
230
|
+
|
|
231
|
+
/// Called by the NSURLSession when the data task has received some of the expected data.
|
|
232
|
+
/// Once the session is completed, URLSession:task:didCompleteWithError will be called and the
|
|
233
|
+
/// completion handler will be called with the downloaded data.
|
|
234
|
+
- (void)URLSession:(NSURLSession *)session
|
|
235
|
+
dataTask:(NSURLSessionDataTask *)dataTask
|
|
236
|
+
didReceiveData:(NSData *)data {
|
|
237
|
+
@synchronized(self) {
|
|
238
|
+
NSMutableData *mutableData = [[NSMutableData alloc] init];
|
|
239
|
+
if (_downloadedData) {
|
|
240
|
+
mutableData = _downloadedData.mutableCopy;
|
|
241
|
+
}
|
|
242
|
+
[mutableData appendData:data];
|
|
243
|
+
_downloadedData = mutableData;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
#pragma mark - NSURLSessionTaskDelegate
|
|
248
|
+
|
|
249
|
+
/// Called by the NSURLSession once the download task is completed. The file is saved in the
|
|
250
|
+
/// provided URL so we need to read the data and store into _downloadedData. Once the session is
|
|
251
|
+
/// completed, URLSession:task:didCompleteWithError will be called and the completion handler will
|
|
252
|
+
/// be called with the downloaded data.
|
|
253
|
+
- (void)URLSession:(NSURLSession *)session
|
|
254
|
+
downloadTask:(NSURLSessionDownloadTask *)task
|
|
255
|
+
didFinishDownloadingToURL:(NSURL *)url API_AVAILABLE(ios(7.0)) {
|
|
256
|
+
if (!url.path) {
|
|
257
|
+
[_loggerDelegate
|
|
258
|
+
GULNetwork_logWithLevel:kGULNetworkLogLevelError
|
|
259
|
+
messageCode:kGULNetworkMessageCodeURLSession001
|
|
260
|
+
message:@"Unable to read downloaded data from empty temp path"];
|
|
261
|
+
_downloadedData = nil;
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
NSError *error;
|
|
266
|
+
_downloadedData = [NSData dataWithContentsOfFile:url.path options:0 error:&error];
|
|
267
|
+
|
|
268
|
+
if (error) {
|
|
269
|
+
[_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelError
|
|
270
|
+
messageCode:kGULNetworkMessageCodeURLSession002
|
|
271
|
+
message:@"Cannot read the content of downloaded data"
|
|
272
|
+
context:error];
|
|
273
|
+
_downloadedData = nil;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
#if TARGET_OS_IOS || TARGET_OS_TV
|
|
278
|
+
- (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session
|
|
279
|
+
API_AVAILABLE(ios(7.0)) {
|
|
280
|
+
[_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelDebug
|
|
281
|
+
messageCode:kGULNetworkMessageCodeURLSession003
|
|
282
|
+
message:@"Background session finished"
|
|
283
|
+
context:session.configuration.identifier];
|
|
284
|
+
[self callSystemCompletionHandler:session.configuration.identifier];
|
|
285
|
+
}
|
|
286
|
+
#endif
|
|
287
|
+
|
|
288
|
+
- (void)URLSession:(NSURLSession *)session
|
|
289
|
+
task:(NSURLSessionTask *)task
|
|
290
|
+
didCompleteWithError:(NSError *)error API_AVAILABLE(ios(7.0)) {
|
|
291
|
+
// Avoid any chance of recursive behavior leading to it being used repeatedly.
|
|
292
|
+
GULNetworkURLSessionCompletionHandler handler = _completionHandler;
|
|
293
|
+
_completionHandler = nil;
|
|
294
|
+
|
|
295
|
+
if (task.response) {
|
|
296
|
+
// The following assertion should always be true for HTTP requests, see https://goo.gl/gVLxT7.
|
|
297
|
+
NSAssert([task.response isKindOfClass:[NSHTTPURLResponse class]], @"URL response must be HTTP");
|
|
298
|
+
|
|
299
|
+
// The server responded so ignore the error created by the system.
|
|
300
|
+
error = nil;
|
|
301
|
+
} else if (!error) {
|
|
302
|
+
error = [[NSError alloc]
|
|
303
|
+
initWithDomain:kGULNetworkErrorDomain
|
|
304
|
+
code:GULErrorCodeNetworkInvalidResponse
|
|
305
|
+
userInfo:@{kGULNetworkErrorContext : @"Network Error: Empty network response"}];
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
[self callCompletionHandler:handler
|
|
309
|
+
withResponse:(NSHTTPURLResponse *)task.response
|
|
310
|
+
data:_downloadedData
|
|
311
|
+
error:error];
|
|
312
|
+
|
|
313
|
+
// Remove the temp file to avoid trashing devices with lots of temp files.
|
|
314
|
+
[self removeTempItemAtURL:_uploadingFileURL];
|
|
315
|
+
|
|
316
|
+
// Try to clean up stale files again.
|
|
317
|
+
[self maybeRemoveTempFilesAtURL:_networkDirectoryURL
|
|
318
|
+
expiringTime:kGULNetworkTempFolderExpireTime];
|
|
319
|
+
|
|
320
|
+
// This is called without checking the sessionID here since non-background sessions
|
|
321
|
+
// won't have an ID.
|
|
322
|
+
[session finishTasksAndInvalidate];
|
|
323
|
+
|
|
324
|
+
// Explicitly remove the session so it won't be reused. The weak map table should
|
|
325
|
+
// remove the session on deallocation, but dealloc may not happen immediately after
|
|
326
|
+
// calling `finishTasksAndInvalidate`.
|
|
327
|
+
NSString *sessionID = session.configuration.identifier;
|
|
328
|
+
[[self class] setSessionInFetcherMap:nil forSessionID:sessionID];
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
- (void)URLSession:(NSURLSession *)session
|
|
332
|
+
task:(NSURLSessionTask *)task
|
|
333
|
+
didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
|
|
334
|
+
completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition,
|
|
335
|
+
NSURLCredential *credential))completionHandler
|
|
336
|
+
API_AVAILABLE(ios(7.0)) {
|
|
337
|
+
// The handling is modeled after GTMSessionFetcher.
|
|
338
|
+
if ([challenge.protectionSpace.authenticationMethod
|
|
339
|
+
isEqualToString:NSURLAuthenticationMethodServerTrust]) {
|
|
340
|
+
SecTrustRef serverTrust = challenge.protectionSpace.serverTrust;
|
|
341
|
+
if (serverTrust == NULL) {
|
|
342
|
+
[_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelDebug
|
|
343
|
+
messageCode:kGULNetworkMessageCodeURLSession004
|
|
344
|
+
message:@"Received empty server trust for host. Host"
|
|
345
|
+
context:_request.URL];
|
|
346
|
+
completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil);
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust];
|
|
350
|
+
if (!credential) {
|
|
351
|
+
[_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelWarning
|
|
352
|
+
messageCode:kGULNetworkMessageCodeURLSession005
|
|
353
|
+
message:@"Unable to verify server identity. Host"
|
|
354
|
+
context:_request.URL];
|
|
355
|
+
completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
[_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelDebug
|
|
360
|
+
messageCode:kGULNetworkMessageCodeURLSession006
|
|
361
|
+
message:@"Received SSL challenge for host. Host"
|
|
362
|
+
context:_request.URL];
|
|
363
|
+
|
|
364
|
+
void (^callback)(BOOL) = ^(BOOL allow) {
|
|
365
|
+
if (allow) {
|
|
366
|
+
completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
|
|
367
|
+
} else {
|
|
368
|
+
[self->_loggerDelegate
|
|
369
|
+
GULNetwork_logWithLevel:kGULNetworkLogLevelDebug
|
|
370
|
+
messageCode:kGULNetworkMessageCodeURLSession007
|
|
371
|
+
message:@"Cancelling authentication challenge for host. Host"
|
|
372
|
+
context:self->_request.URL];
|
|
373
|
+
completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);
|
|
374
|
+
}
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
// Retain the trust object to avoid a SecTrustEvaluate() crash on iOS 7.
|
|
378
|
+
CFRetain(serverTrust);
|
|
379
|
+
|
|
380
|
+
// Evaluate the certificate chain.
|
|
381
|
+
//
|
|
382
|
+
// The delegate queue may be the main thread. Trust evaluation could cause some
|
|
383
|
+
// blocking network activity, so we must evaluate async, as documented at
|
|
384
|
+
// https://developer.apple.com/library/ios/technotes/tn2232/
|
|
385
|
+
dispatch_queue_t evaluateBackgroundQueue =
|
|
386
|
+
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
|
|
387
|
+
|
|
388
|
+
dispatch_async(evaluateBackgroundQueue, ^{
|
|
389
|
+
SecTrustResultType trustEval = kSecTrustResultInvalid;
|
|
390
|
+
BOOL shouldAllow;
|
|
391
|
+
OSStatus trustError;
|
|
392
|
+
|
|
393
|
+
@synchronized([GULNetworkURLSession class]) {
|
|
394
|
+
#pragma clang diagnostic push
|
|
395
|
+
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
|
396
|
+
trustError = SecTrustEvaluate(serverTrust, &trustEval);
|
|
397
|
+
#pragma clang dianostic pop
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
if (trustError != errSecSuccess) {
|
|
401
|
+
[self->_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelError
|
|
402
|
+
messageCode:kGULNetworkMessageCodeURLSession008
|
|
403
|
+
message:@"Cannot evaluate server trust. Error, host"
|
|
404
|
+
contexts:@[ @(trustError), self->_request.URL ]];
|
|
405
|
+
shouldAllow = NO;
|
|
406
|
+
} else {
|
|
407
|
+
// Having a trust level "unspecified" by the user is the usual result, described at
|
|
408
|
+
// https://developer.apple.com/library/mac/qa/qa1360
|
|
409
|
+
shouldAllow =
|
|
410
|
+
(trustEval == kSecTrustResultUnspecified || trustEval == kSecTrustResultProceed);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
// Call the call back with the permission.
|
|
414
|
+
callback(shouldAllow);
|
|
415
|
+
|
|
416
|
+
CFRelease(serverTrust);
|
|
417
|
+
});
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
// Default handling for other Auth Challenges.
|
|
422
|
+
completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil);
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
#pragma mark - Internal Methods
|
|
426
|
+
|
|
427
|
+
/// Stores system completion handler with session ID as key.
|
|
428
|
+
- (void)addSystemCompletionHandler:(GULNetworkSystemCompletionHandler)handler
|
|
429
|
+
forSession:(NSString *)identifier {
|
|
430
|
+
if (!handler) {
|
|
431
|
+
[_loggerDelegate
|
|
432
|
+
GULNetwork_logWithLevel:kGULNetworkLogLevelError
|
|
433
|
+
messageCode:kGULNetworkMessageCodeURLSession009
|
|
434
|
+
message:@"Cannot store nil system completion handler in network"];
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
if (!identifier.length) {
|
|
439
|
+
[_loggerDelegate
|
|
440
|
+
GULNetwork_logWithLevel:kGULNetworkLogLevelError
|
|
441
|
+
messageCode:kGULNetworkMessageCodeURLSession010
|
|
442
|
+
message:@"Cannot store system completion handler with empty network "
|
|
443
|
+
"session identifier"];
|
|
444
|
+
return;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
GULMutableDictionary *systemCompletionHandlers =
|
|
448
|
+
[[self class] sessionIDToSystemCompletionHandlerDictionary];
|
|
449
|
+
if (systemCompletionHandlers[identifier]) {
|
|
450
|
+
[_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelWarning
|
|
451
|
+
messageCode:kGULNetworkMessageCodeURLSession011
|
|
452
|
+
message:@"Got multiple system handlers for a single session ID"
|
|
453
|
+
context:identifier];
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
systemCompletionHandlers[identifier] = handler;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
/// Calls the system provided completion handler with the session ID stored in the dictionary.
|
|
460
|
+
/// The handler will be removed from the dictionary after being called.
|
|
461
|
+
- (void)callSystemCompletionHandler:(NSString *)identifier {
|
|
462
|
+
GULMutableDictionary *systemCompletionHandlers =
|
|
463
|
+
[[self class] sessionIDToSystemCompletionHandlerDictionary];
|
|
464
|
+
GULNetworkSystemCompletionHandler handler = [systemCompletionHandlers objectForKey:identifier];
|
|
465
|
+
|
|
466
|
+
if (handler) {
|
|
467
|
+
[systemCompletionHandlers removeObjectForKey:identifier];
|
|
468
|
+
|
|
469
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
470
|
+
handler();
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/// Sets or updates the session ID of this session.
|
|
476
|
+
- (void)setSessionID:(NSString *)sessionID {
|
|
477
|
+
_sessionID = [sessionID copy];
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/// Creates a background session configuration with the session ID using the supported method.
|
|
481
|
+
- (NSURLSessionConfiguration *)backgroundSessionConfigWithSessionID:(NSString *)sessionID
|
|
482
|
+
API_AVAILABLE(ios(7.0)) {
|
|
483
|
+
#if (TARGET_OS_OSX && defined(MAC_OS_X_VERSION_10_10) && \
|
|
484
|
+
MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10) || \
|
|
485
|
+
TARGET_OS_TV || \
|
|
486
|
+
(TARGET_OS_IOS && defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_8_0)
|
|
487
|
+
|
|
488
|
+
// iOS 8/10.10 builds require the new backgroundSessionConfiguration method name.
|
|
489
|
+
return [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:sessionID];
|
|
490
|
+
|
|
491
|
+
#elif (TARGET_OS_OSX && defined(MAC_OS_X_VERSION_10_10) && \
|
|
492
|
+
MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10) || \
|
|
493
|
+
(TARGET_OS_IOS && defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_8_0)
|
|
494
|
+
|
|
495
|
+
// Do a runtime check to avoid a deprecation warning about using
|
|
496
|
+
// +backgroundSessionConfiguration: on iOS 8.
|
|
497
|
+
if ([NSURLSessionConfiguration
|
|
498
|
+
respondsToSelector:@selector(backgroundSessionConfigurationWithIdentifier:)]) {
|
|
499
|
+
// Running on iOS 8+/OS X 10.10+.
|
|
500
|
+
#pragma clang diagnostic push
|
|
501
|
+
#pragma clang diagnostic ignored "-Wunguarded-availability"
|
|
502
|
+
return [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:sessionID];
|
|
503
|
+
#pragma clang diagnostic pop
|
|
504
|
+
} else {
|
|
505
|
+
// Running on iOS 7/OS X 10.9.
|
|
506
|
+
return [NSURLSessionConfiguration backgroundSessionConfiguration:sessionID];
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
#else
|
|
510
|
+
// Building with an SDK earlier than iOS 8/OS X 10.10.
|
|
511
|
+
return [NSURLSessionConfiguration backgroundSessionConfiguration:sessionID];
|
|
512
|
+
#endif
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
- (void)maybeRemoveTempFilesAtURL:(NSURL *)folderURL expiringTime:(NSTimeInterval)staleTime {
|
|
516
|
+
if (!folderURL.absoluteString.length) {
|
|
517
|
+
return;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
NSFileManager *fileManager = [NSFileManager defaultManager];
|
|
521
|
+
NSError *error = nil;
|
|
522
|
+
|
|
523
|
+
NSArray *properties = @[ NSURLCreationDateKey ];
|
|
524
|
+
NSArray *directoryContent =
|
|
525
|
+
[fileManager contentsOfDirectoryAtURL:folderURL
|
|
526
|
+
includingPropertiesForKeys:properties
|
|
527
|
+
options:NSDirectoryEnumerationSkipsSubdirectoryDescendants
|
|
528
|
+
error:&error];
|
|
529
|
+
if (error && error.code != NSFileReadNoSuchFileError) {
|
|
530
|
+
[_loggerDelegate
|
|
531
|
+
GULNetwork_logWithLevel:kGULNetworkLogLevelDebug
|
|
532
|
+
messageCode:kGULNetworkMessageCodeURLSession012
|
|
533
|
+
message:@"Cannot get files from the temporary network folder. Error"
|
|
534
|
+
context:error];
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
if (!directoryContent.count) {
|
|
539
|
+
return;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
NSTimeInterval now = [NSDate date].timeIntervalSince1970;
|
|
543
|
+
for (NSURL *tempFile in directoryContent) {
|
|
544
|
+
NSDate *creationDate;
|
|
545
|
+
BOOL getCreationDate = [tempFile getResourceValue:&creationDate
|
|
546
|
+
forKey:NSURLCreationDateKey
|
|
547
|
+
error:NULL];
|
|
548
|
+
if (!getCreationDate) {
|
|
549
|
+
continue;
|
|
550
|
+
}
|
|
551
|
+
NSTimeInterval creationTimeInterval = creationDate.timeIntervalSince1970;
|
|
552
|
+
if (fabs(now - creationTimeInterval) > staleTime) {
|
|
553
|
+
[self removeTempItemAtURL:tempFile];
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
/// Removes the temporary file written to disk for sending the request. It has to be cleaned up
|
|
559
|
+
/// after the session is done.
|
|
560
|
+
- (void)removeTempItemAtURL:(NSURL *)fileURL {
|
|
561
|
+
if (!fileURL.absoluteString.length) {
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
NSFileManager *fileManager = [NSFileManager defaultManager];
|
|
566
|
+
NSError *error = nil;
|
|
567
|
+
|
|
568
|
+
if (![fileManager removeItemAtURL:fileURL error:&error] && error.code != NSFileNoSuchFileError) {
|
|
569
|
+
[_loggerDelegate
|
|
570
|
+
GULNetwork_logWithLevel:kGULNetworkLogLevelError
|
|
571
|
+
messageCode:kGULNetworkMessageCodeURLSession013
|
|
572
|
+
message:@"Failed to remove temporary uploading data file. Error"
|
|
573
|
+
context:error.localizedDescription];
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
/// Gets the fetcher with the session ID.
|
|
578
|
+
+ (instancetype)fetcherWithSessionIdentifier:(NSString *)sessionIdentifier {
|
|
579
|
+
GULNetworkURLSession *session = [self sessionFromFetcherMapForSessionID:sessionIdentifier];
|
|
580
|
+
if (!session && [sessionIdentifier hasPrefix:kGULNetworkBackgroundSessionConfigIDPrefix]) {
|
|
581
|
+
session = [[GULNetworkURLSession alloc] initWithNetworkLoggerDelegate:nil];
|
|
582
|
+
[session setSessionID:sessionIdentifier];
|
|
583
|
+
[self setSessionInFetcherMap:session forSessionID:sessionIdentifier];
|
|
584
|
+
}
|
|
585
|
+
return session;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
/// Returns a map of the fetcher by session ID. Creates a map if it is not created.
|
|
589
|
+
/// When reading and writing from/to the session map, don't use this method directly.
|
|
590
|
+
/// To avoid thread safety issues, use one of the helper methods at the bottom of the
|
|
591
|
+
/// file: setSessionInFetcherMap:forSessionID:, sessionFromFetcherMapForSessionID:
|
|
592
|
+
+ (NSMapTable<NSString *, GULNetworkURLSession *> *)sessionIDToFetcherMap {
|
|
593
|
+
static NSMapTable *sessionIDToFetcherMap;
|
|
594
|
+
|
|
595
|
+
static dispatch_once_t sessionMapOnceToken;
|
|
596
|
+
dispatch_once(&sessionMapOnceToken, ^{
|
|
597
|
+
sessionIDToFetcherMap = [NSMapTable strongToWeakObjectsMapTable];
|
|
598
|
+
});
|
|
599
|
+
return sessionIDToFetcherMap;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
+ (NSLock *)sessionIDToFetcherMapReadWriteLock {
|
|
603
|
+
static NSLock *lock;
|
|
604
|
+
|
|
605
|
+
static dispatch_once_t onceToken;
|
|
606
|
+
dispatch_once(&onceToken, ^{
|
|
607
|
+
lock = [[NSLock alloc] init];
|
|
608
|
+
});
|
|
609
|
+
return lock;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
/// Returns a map of system provided completion handler by session ID. Creates a map if it is not
|
|
613
|
+
/// created.
|
|
614
|
+
+ (GULMutableDictionary *)sessionIDToSystemCompletionHandlerDictionary {
|
|
615
|
+
static GULMutableDictionary *systemCompletionHandlers;
|
|
616
|
+
|
|
617
|
+
static dispatch_once_t systemCompletionHandlerOnceToken;
|
|
618
|
+
dispatch_once(&systemCompletionHandlerOnceToken, ^{
|
|
619
|
+
systemCompletionHandlers = [[GULMutableDictionary alloc] init];
|
|
620
|
+
});
|
|
621
|
+
return systemCompletionHandlers;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
- (NSURL *)temporaryFilePathWithSessionID:(NSString *)sessionID {
|
|
625
|
+
NSString *tempName = [NSString stringWithFormat:@"GULUpload_temp_%@", sessionID];
|
|
626
|
+
return [_networkDirectoryURL URLByAppendingPathComponent:tempName];
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
/// Makes sure that the directory to store temp files exists. If not, tries to create it and returns
|
|
630
|
+
/// YES. If there is anything wrong, returns NO.
|
|
631
|
+
- (BOOL)ensureTemporaryDirectoryExists {
|
|
632
|
+
NSFileManager *fileManager = [NSFileManager defaultManager];
|
|
633
|
+
NSError *error = nil;
|
|
634
|
+
|
|
635
|
+
// Create a temporary directory if it does not exist or was deleted.
|
|
636
|
+
if ([_networkDirectoryURL checkResourceIsReachableAndReturnError:&error]) {
|
|
637
|
+
return YES;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
if (error && error.code != NSFileReadNoSuchFileError) {
|
|
641
|
+
[_loggerDelegate
|
|
642
|
+
GULNetwork_logWithLevel:kGULNetworkLogLevelWarning
|
|
643
|
+
messageCode:kGULNetworkMessageCodeURLSession014
|
|
644
|
+
message:@"Error while trying to access Network temp folder. Error"
|
|
645
|
+
context:error];
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
NSError *writeError = nil;
|
|
649
|
+
|
|
650
|
+
[fileManager createDirectoryAtURL:_networkDirectoryURL
|
|
651
|
+
withIntermediateDirectories:YES
|
|
652
|
+
attributes:nil
|
|
653
|
+
error:&writeError];
|
|
654
|
+
if (writeError) {
|
|
655
|
+
[_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelError
|
|
656
|
+
messageCode:kGULNetworkMessageCodeURLSession015
|
|
657
|
+
message:@"Cannot create temporary directory. Error"
|
|
658
|
+
context:writeError];
|
|
659
|
+
return NO;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
// Set the iCloud exclusion attribute on the Documents URL.
|
|
663
|
+
[self excludeFromBackupForURL:_networkDirectoryURL];
|
|
664
|
+
|
|
665
|
+
return YES;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
- (void)excludeFromBackupForURL:(NSURL *)url {
|
|
669
|
+
if (!url.path) {
|
|
670
|
+
return;
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
// Set the iCloud exclusion attribute on the Documents URL.
|
|
674
|
+
NSError *preventBackupError = nil;
|
|
675
|
+
[url setResourceValue:@YES forKey:NSURLIsExcludedFromBackupKey error:&preventBackupError];
|
|
676
|
+
if (preventBackupError) {
|
|
677
|
+
[_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelError
|
|
678
|
+
messageCode:kGULNetworkMessageCodeURLSession016
|
|
679
|
+
message:@"Cannot exclude temporary folder from iTunes backup"];
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
- (void)URLSession:(NSURLSession *)session
|
|
684
|
+
task:(NSURLSessionTask *)task
|
|
685
|
+
willPerformHTTPRedirection:(NSHTTPURLResponse *)response
|
|
686
|
+
newRequest:(NSURLRequest *)request
|
|
687
|
+
completionHandler:(void (^)(NSURLRequest *))completionHandler API_AVAILABLE(ios(7.0)) {
|
|
688
|
+
NSArray *nonAllowedRedirectionCodes = @[
|
|
689
|
+
@(kGULNetworkHTTPStatusCodeFound), @(kGULNetworkHTTPStatusCodeMovedPermanently),
|
|
690
|
+
@(kGULNetworkHTTPStatusCodeMovedTemporarily), @(kGULNetworkHTTPStatusCodeMultipleChoices)
|
|
691
|
+
];
|
|
692
|
+
|
|
693
|
+
// Allow those not in the non allowed list to be followed.
|
|
694
|
+
if (![nonAllowedRedirectionCodes containsObject:@(response.statusCode)]) {
|
|
695
|
+
completionHandler(request);
|
|
696
|
+
return;
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
// Do not allow redirection if the response code is in the non-allowed list.
|
|
700
|
+
NSURLRequest *newRequest = request;
|
|
701
|
+
|
|
702
|
+
if (response) {
|
|
703
|
+
newRequest = nil;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
completionHandler(newRequest);
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
#pragma mark - Helper Methods
|
|
710
|
+
|
|
711
|
+
+ (void)setSessionInFetcherMap:(GULNetworkURLSession *)session forSessionID:(NSString *)sessionID {
|
|
712
|
+
[[self sessionIDToFetcherMapReadWriteLock] lock];
|
|
713
|
+
GULNetworkURLSession *existingSession =
|
|
714
|
+
[[[self class] sessionIDToFetcherMap] objectForKey:sessionID];
|
|
715
|
+
if (existingSession) {
|
|
716
|
+
if (session) {
|
|
717
|
+
NSString *message = [NSString stringWithFormat:@"Discarding session: %@", existingSession];
|
|
718
|
+
[existingSession->_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelInfo
|
|
719
|
+
messageCode:kGULNetworkMessageCodeURLSession019
|
|
720
|
+
message:message];
|
|
721
|
+
}
|
|
722
|
+
[existingSession->_URLSession finishTasksAndInvalidate];
|
|
723
|
+
}
|
|
724
|
+
if (session) {
|
|
725
|
+
[[[self class] sessionIDToFetcherMap] setObject:session forKey:sessionID];
|
|
726
|
+
} else {
|
|
727
|
+
[[[self class] sessionIDToFetcherMap] removeObjectForKey:sessionID];
|
|
728
|
+
}
|
|
729
|
+
[[self sessionIDToFetcherMapReadWriteLock] unlock];
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
+ (nullable GULNetworkURLSession *)sessionFromFetcherMapForSessionID:(NSString *)sessionID {
|
|
733
|
+
[[self sessionIDToFetcherMapReadWriteLock] lock];
|
|
734
|
+
GULNetworkURLSession *session = [[[self class] sessionIDToFetcherMap] objectForKey:sessionID];
|
|
735
|
+
[[self sessionIDToFetcherMapReadWriteLock] unlock];
|
|
736
|
+
return session;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
- (void)callCompletionHandler:(GULNetworkURLSessionCompletionHandler)handler
|
|
740
|
+
withResponse:(NSHTTPURLResponse *)response
|
|
741
|
+
data:(NSData *)data
|
|
742
|
+
error:(NSError *)error {
|
|
743
|
+
if (error) {
|
|
744
|
+
[_loggerDelegate GULNetwork_logWithLevel:kGULNetworkLogLevelError
|
|
745
|
+
messageCode:kGULNetworkMessageCodeURLSession017
|
|
746
|
+
message:@"Encounter network error. Code, error"
|
|
747
|
+
contexts:@[ @(error.code), error ]];
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
if (handler) {
|
|
751
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
752
|
+
handler(response, data, self->_sessionID, error);
|
|
753
|
+
});
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
// Always use the request parameters even if the default session configuration is more restrictive.
|
|
758
|
+
- (void)populateSessionConfig:(NSURLSessionConfiguration *)sessionConfig
|
|
759
|
+
withRequest:(NSURLRequest *)request API_AVAILABLE(ios(7.0)) {
|
|
760
|
+
sessionConfig.HTTPAdditionalHeaders = request.allHTTPHeaderFields;
|
|
761
|
+
sessionConfig.timeoutIntervalForRequest = request.timeoutInterval;
|
|
762
|
+
sessionConfig.timeoutIntervalForResource = request.timeoutInterval;
|
|
763
|
+
sessionConfig.requestCachePolicy = request.cachePolicy;
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
@end
|