diff --git a/MDBSocials/.DS_Store b/MDBSocials/.DS_Store new file mode 100644 index 0000000..d4d28cd Binary files /dev/null and b/MDBSocials/.DS_Store differ diff --git a/MDBSocials/MDBSocials.xcworkspace/contents.xcworkspacedata b/MDBSocials/MDBSocials.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..f99a553 --- /dev/null +++ b/MDBSocials/MDBSocials.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/MDBSocials/MDBSocials.xcworkspace/xcshareddata/MDBSocials.xcscmblueprint b/MDBSocials/MDBSocials.xcworkspace/xcshareddata/MDBSocials.xcscmblueprint new file mode 100644 index 0000000..9c431d1 --- /dev/null +++ b/MDBSocials/MDBSocials.xcworkspace/xcshareddata/MDBSocials.xcscmblueprint @@ -0,0 +1,30 @@ +{ + "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "82F1B65615D482749F328478BA99492F9C418FA6", + "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : { + + }, + "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : { + "82F1B65615D482749F328478BA99492F9C418FA6" : 9223372036854775807, + "E833BDBCE3DB7973F930006C6475FCB0874740B6" : 9223372036854775807 + }, + "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "7A2DE587-1B88-4531-97BC-8BEEB8A528E6", + "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { + "82F1B65615D482749F328478BA99492F9C418FA6" : "MDBSocials\/", + "E833BDBCE3DB7973F930006C6475FCB0874740B6" : "" + }, + "DVTSourceControlWorkspaceBlueprintNameKey" : "MDBSocials", + "DVTSourceControlWorkspaceBlueprintVersion" : 204, + "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "MDBSocials.xcworkspace", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [ + { + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/Mohit417\/MDBSocials.git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "82F1B65615D482749F328478BA99492F9C418FA6" + }, + { + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/vidyaravikumar\/MDBSocials.git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "E833BDBCE3DB7973F930006C6475FCB0874740B6" + } + ] +} \ No newline at end of file diff --git a/MDBSocials/MDBSocials.xcworkspace/xcuserdata/vidya.xcuserdatad/UserInterfaceState.xcuserstate b/MDBSocials/MDBSocials.xcworkspace/xcuserdata/vidya.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..0068762 Binary files /dev/null and b/MDBSocials/MDBSocials.xcworkspace/xcuserdata/vidya.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/MDBSocials/MDBSocials.xcworkspace/xcuserdata/vidya.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/MDBSocials/MDBSocials.xcworkspace/xcuserdata/vidya.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..ed9a9b4 --- /dev/null +++ b/MDBSocials/MDBSocials.xcworkspace/xcuserdata/vidya.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/MDBSocials/MDBSocials/.DS_Store b/MDBSocials/MDBSocials/.DS_Store new file mode 100644 index 0000000..ef2cff2 Binary files /dev/null and b/MDBSocials/MDBSocials/.DS_Store differ diff --git a/MDBSocials/MDBSocials/GoogleService-Info.plist b/MDBSocials/MDBSocials/GoogleService-Info.plist new file mode 100644 index 0000000..41dec67 --- /dev/null +++ b/MDBSocials/MDBSocials/GoogleService-Info.plist @@ -0,0 +1,40 @@ + + + + + AD_UNIT_ID_FOR_BANNER_TEST + ca-app-pub-3940256099942544/2934735716 + AD_UNIT_ID_FOR_INTERSTITIAL_TEST + ca-app-pub-3940256099942544/4411468910 + CLIENT_ID + 773061992714-s590heqsdj66thicpr4jfrku1765a7dk.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.773061992714-s590heqsdj66thicpr4jfrku1765a7dk + API_KEY + AIzaSyA_RIKZkqSB3AiRgNYeTTBB_kIHG8acJbo + GCM_SENDER_ID + 773061992714 + PLIST_VERSION + 1 + BUNDLE_ID + MohitMDB.MDBSocials + PROJECT_ID + mdbsocials-3a715 + STORAGE_BUCKET + mdbsocials-3a715.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:773061992714:ios:8c02250e0efe4f2f + DATABASE_URL + https://mdbsocials-3a715.firebaseio.com + + \ No newline at end of file diff --git a/MDBSocials/MDBSocials/MDBSocials.xcodeproj/project.pbxproj b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/project.pbxproj new file mode 100644 index 0000000..be5f543 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/project.pbxproj @@ -0,0 +1,662 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 147361181DB04DB50058BE6D /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 147361171DB04DB50058BE6D /* User.swift */; }; + 147608691DAF872800F02C71 /* FeedCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 147608681DAF872800F02C71 /* FeedCollectionViewCell.swift */; }; + 1476086B1DAF8A9500F02C71 /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1476086A1DAF8A9500F02C71 /* Event.swift */; }; + 1476086D1DAF9F4400F02C71 /* AppState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1476086C1DAF9F4400F02C71 /* AppState.swift */; }; + 149F8DA81DAF5ACE0015C9B8 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 149F8DA71DAF5ACE0015C9B8 /* GoogleService-Info.plist */; }; + 8D1BC1991C6E09EFC055EA80 /* Pods_MDBSocials.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BB6E7D93FE289E996794B80 /* Pods_MDBSocials.framework */; }; + E4EDAE351DA1E31300C4DC31 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4EDAE341DA1E31300C4DC31 /* AppDelegate.swift */; }; + E4EDAE371DA1E31300C4DC31 /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4EDAE361DA1E31300C4DC31 /* LoginViewController.swift */; }; + E4EDAE3A1DA1E31300C4DC31 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E4EDAE381DA1E31300C4DC31 /* Main.storyboard */; }; + E4EDAE3C1DA1E31300C4DC31 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E4EDAE3B1DA1E31300C4DC31 /* Assets.xcassets */; }; + E4EDAE3F1DA1E31300C4DC31 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E4EDAE3D1DA1E31300C4DC31 /* LaunchScreen.storyboard */; }; + E4EDAE4A1DA1E31300C4DC31 /* MDBSocialsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4EDAE491DA1E31300C4DC31 /* MDBSocialsTests.swift */; }; + E4EDAE551DA1E31300C4DC31 /* MDBSocialsUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4EDAE541DA1E31300C4DC31 /* MDBSocialsUITests.swift */; }; + E4EDAE631DA1E6D800C4DC31 /* SignUpViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4EDAE621DA1E6D800C4DC31 /* SignUpViewController.swift */; }; + E4EDAE651DA1E71D00C4DC31 /* FeedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4EDAE641DA1E71D00C4DC31 /* FeedViewController.swift */; }; + E4EDAE671DA1E72900C4DC31 /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4EDAE661DA1E72900C4DC31 /* DetailViewController.swift */; }; + E4EDAE691DA1E73700C4DC31 /* NewSocialViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4EDAE681DA1E73700C4DC31 /* NewSocialViewController.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + E4EDAE461DA1E31300C4DC31 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E4EDAE291DA1E31100C4DC31 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E4EDAE301DA1E31100C4DC31; + remoteInfo = MDBSocials; + }; + E4EDAE511DA1E31300C4DC31 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E4EDAE291DA1E31100C4DC31 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E4EDAE301DA1E31100C4DC31; + remoteInfo = MDBSocials; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 147361171DB04DB50058BE6D /* User.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; + 147608671DAF79DC00F02C71 /* MDBSocials.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = MDBSocials.entitlements; sourceTree = ""; }; + 147608681DAF872800F02C71 /* FeedCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedCollectionViewCell.swift; sourceTree = ""; }; + 1476086A1DAF8A9500F02C71 /* Event.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Event.swift; sourceTree = ""; }; + 1476086C1DAF9F4400F02C71 /* AppState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppState.swift; sourceTree = ""; }; + 149F8DA71DAF5ACE0015C9B8 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "../GoogleService-Info.plist"; sourceTree = ""; }; + 5BB6E7D93FE289E996794B80 /* Pods_MDBSocials.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MDBSocials.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CE51ACC30EF39E0EE12DAFCD /* Pods-MDBSocials.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MDBSocials.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials.debug.xcconfig"; sourceTree = ""; }; + E4EDAE311DA1E31300C4DC31 /* MDBSocials.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MDBSocials.app; sourceTree = BUILT_PRODUCTS_DIR; }; + E4EDAE341DA1E31300C4DC31 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + E4EDAE361DA1E31300C4DC31 /* LoginViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = ""; }; + E4EDAE391DA1E31300C4DC31 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + E4EDAE3B1DA1E31300C4DC31 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + E4EDAE3E1DA1E31300C4DC31 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + E4EDAE401DA1E31300C4DC31 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E4EDAE451DA1E31300C4DC31 /* MDBSocialsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MDBSocialsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + E4EDAE491DA1E31300C4DC31 /* MDBSocialsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MDBSocialsTests.swift; sourceTree = ""; }; + E4EDAE4B1DA1E31300C4DC31 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E4EDAE501DA1E31300C4DC31 /* MDBSocialsUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MDBSocialsUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + E4EDAE541DA1E31300C4DC31 /* MDBSocialsUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MDBSocialsUITests.swift; sourceTree = ""; }; + E4EDAE561DA1E31300C4DC31 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E4EDAE621DA1E6D800C4DC31 /* SignUpViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignUpViewController.swift; sourceTree = ""; }; + E4EDAE641DA1E71D00C4DC31 /* FeedViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedViewController.swift; sourceTree = ""; }; + E4EDAE661DA1E72900C4DC31 /* DetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = ""; }; + E4EDAE681DA1E73700C4DC31 /* NewSocialViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewSocialViewController.swift; sourceTree = ""; }; + F32AD32938E61C657887380A /* Pods-MDBSocials.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MDBSocials.release.xcconfig"; path = "../Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + E4EDAE2E1DA1E31100C4DC31 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D1BC1991C6E09EFC055EA80 /* Pods_MDBSocials.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E4EDAE421DA1E31300C4DC31 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E4EDAE4D1DA1E31300C4DC31 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0FD1B6191C63189EB935D5BA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5BB6E7D93FE289E996794B80 /* Pods_MDBSocials.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 115220132EBA153C3E45C638 /* Pods */ = { + isa = PBXGroup; + children = ( + CE51ACC30EF39E0EE12DAFCD /* Pods-MDBSocials.debug.xcconfig */, + F32AD32938E61C657887380A /* Pods-MDBSocials.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; + E4EDAE281DA1E31100C4DC31 = { + isa = PBXGroup; + children = ( + E4EDAE331DA1E31300C4DC31 /* MDBSocials */, + E4EDAE481DA1E31300C4DC31 /* MDBSocialsTests */, + E4EDAE531DA1E31300C4DC31 /* MDBSocialsUITests */, + E4EDAE321DA1E31300C4DC31 /* Products */, + 115220132EBA153C3E45C638 /* Pods */, + 0FD1B6191C63189EB935D5BA /* Frameworks */, + ); + sourceTree = ""; + }; + E4EDAE321DA1E31300C4DC31 /* Products */ = { + isa = PBXGroup; + children = ( + E4EDAE311DA1E31300C4DC31 /* MDBSocials.app */, + E4EDAE451DA1E31300C4DC31 /* MDBSocialsTests.xctest */, + E4EDAE501DA1E31300C4DC31 /* MDBSocialsUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + E4EDAE331DA1E31300C4DC31 /* MDBSocials */ = { + isa = PBXGroup; + children = ( + 147608671DAF79DC00F02C71 /* MDBSocials.entitlements */, + E4EDAE401DA1E31300C4DC31 /* Info.plist */, + 149F8DA71DAF5ACE0015C9B8 /* GoogleService-Info.plist */, + E4EDAE381DA1E31300C4DC31 /* Main.storyboard */, + E4EDAE3D1DA1E31300C4DC31 /* LaunchScreen.storyboard */, + E4EDAE3B1DA1E31300C4DC31 /* Assets.xcassets */, + E4EDAE341DA1E31300C4DC31 /* AppDelegate.swift */, + E4EDAE361DA1E31300C4DC31 /* LoginViewController.swift */, + E4EDAE641DA1E71D00C4DC31 /* FeedViewController.swift */, + 147608681DAF872800F02C71 /* FeedCollectionViewCell.swift */, + E4EDAE661DA1E72900C4DC31 /* DetailViewController.swift */, + E4EDAE681DA1E73700C4DC31 /* NewSocialViewController.swift */, + E4EDAE621DA1E6D800C4DC31 /* SignUpViewController.swift */, + 1476086C1DAF9F4400F02C71 /* AppState.swift */, + 147361171DB04DB50058BE6D /* User.swift */, + 1476086A1DAF8A9500F02C71 /* Event.swift */, + ); + path = MDBSocials; + sourceTree = ""; + }; + E4EDAE481DA1E31300C4DC31 /* MDBSocialsTests */ = { + isa = PBXGroup; + children = ( + E4EDAE491DA1E31300C4DC31 /* MDBSocialsTests.swift */, + E4EDAE4B1DA1E31300C4DC31 /* Info.plist */, + ); + path = MDBSocialsTests; + sourceTree = ""; + }; + E4EDAE531DA1E31300C4DC31 /* MDBSocialsUITests */ = { + isa = PBXGroup; + children = ( + E4EDAE541DA1E31300C4DC31 /* MDBSocialsUITests.swift */, + E4EDAE561DA1E31300C4DC31 /* Info.plist */, + ); + path = MDBSocialsUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + E4EDAE301DA1E31100C4DC31 /* MDBSocials */ = { + isa = PBXNativeTarget; + buildConfigurationList = E4EDAE591DA1E31300C4DC31 /* Build configuration list for PBXNativeTarget "MDBSocials" */; + buildPhases = ( + CBA48DD8A40722B9F99034E0 /* [CP] Check Pods Manifest.lock */, + E4EDAE2D1DA1E31100C4DC31 /* Sources */, + E4EDAE2E1DA1E31100C4DC31 /* Frameworks */, + E4EDAE2F1DA1E31100C4DC31 /* Resources */, + 7B258A82BB3149C9D8B9A776 /* [CP] Embed Pods Frameworks */, + 35D1E290F69A54D8FC4D1ACD /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MDBSocials; + productName = MDBSocials; + productReference = E4EDAE311DA1E31300C4DC31 /* MDBSocials.app */; + productType = "com.apple.product-type.application"; + }; + E4EDAE441DA1E31300C4DC31 /* MDBSocialsTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = E4EDAE5C1DA1E31300C4DC31 /* Build configuration list for PBXNativeTarget "MDBSocialsTests" */; + buildPhases = ( + E4EDAE411DA1E31300C4DC31 /* Sources */, + E4EDAE421DA1E31300C4DC31 /* Frameworks */, + E4EDAE431DA1E31300C4DC31 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + E4EDAE471DA1E31300C4DC31 /* PBXTargetDependency */, + ); + name = MDBSocialsTests; + productName = MDBSocialsTests; + productReference = E4EDAE451DA1E31300C4DC31 /* MDBSocialsTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + E4EDAE4F1DA1E31300C4DC31 /* MDBSocialsUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = E4EDAE5F1DA1E31300C4DC31 /* Build configuration list for PBXNativeTarget "MDBSocialsUITests" */; + buildPhases = ( + E4EDAE4C1DA1E31300C4DC31 /* Sources */, + E4EDAE4D1DA1E31300C4DC31 /* Frameworks */, + E4EDAE4E1DA1E31300C4DC31 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + E4EDAE521DA1E31300C4DC31 /* PBXTargetDependency */, + ); + name = MDBSocialsUITests; + productName = MDBSocialsUITests; + productReference = E4EDAE501DA1E31300C4DC31 /* MDBSocialsUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + E4EDAE291DA1E31100C4DC31 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0800; + LastUpgradeCheck = 0800; + ORGANIZATIONNAME = "Mohit Katyal"; + TargetAttributes = { + E4EDAE301DA1E31100C4DC31 = { + CreatedOnToolsVersion = 8.0; + DevelopmentTeam = TDF4CS47G4; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Keychain = { + enabled = 1; + }; + }; + }; + E4EDAE441DA1E31300C4DC31 = { + CreatedOnToolsVersion = 8.0; + DevelopmentTeam = TDF4CS47G4; + ProvisioningStyle = Automatic; + TestTargetID = E4EDAE301DA1E31100C4DC31; + }; + E4EDAE4F1DA1E31300C4DC31 = { + CreatedOnToolsVersion = 8.0; + DevelopmentTeam = TDF4CS47G4; + ProvisioningStyle = Automatic; + TestTargetID = E4EDAE301DA1E31100C4DC31; + }; + }; + }; + buildConfigurationList = E4EDAE2C1DA1E31100C4DC31 /* Build configuration list for PBXProject "MDBSocials" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = E4EDAE281DA1E31100C4DC31; + productRefGroup = E4EDAE321DA1E31300C4DC31 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + E4EDAE301DA1E31100C4DC31 /* MDBSocials */, + E4EDAE441DA1E31300C4DC31 /* MDBSocialsTests */, + E4EDAE4F1DA1E31300C4DC31 /* MDBSocialsUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + E4EDAE2F1DA1E31100C4DC31 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E4EDAE3F1DA1E31300C4DC31 /* LaunchScreen.storyboard in Resources */, + 149F8DA81DAF5ACE0015C9B8 /* GoogleService-Info.plist in Resources */, + E4EDAE3C1DA1E31300C4DC31 /* Assets.xcassets in Resources */, + E4EDAE3A1DA1E31300C4DC31 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E4EDAE431DA1E31300C4DC31 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E4EDAE4E1DA1E31300C4DC31 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 35D1E290F69A54D8FC4D1ACD /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 7B258A82BB3149C9D8B9A776 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + CBA48DD8A40722B9F99034E0 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + E4EDAE2D1DA1E31100C4DC31 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1476086B1DAF8A9500F02C71 /* Event.swift in Sources */, + E4EDAE631DA1E6D800C4DC31 /* SignUpViewController.swift in Sources */, + E4EDAE371DA1E31300C4DC31 /* LoginViewController.swift in Sources */, + 1476086D1DAF9F4400F02C71 /* AppState.swift in Sources */, + E4EDAE691DA1E73700C4DC31 /* NewSocialViewController.swift in Sources */, + E4EDAE671DA1E72900C4DC31 /* DetailViewController.swift in Sources */, + E4EDAE651DA1E71D00C4DC31 /* FeedViewController.swift in Sources */, + 147608691DAF872800F02C71 /* FeedCollectionViewCell.swift in Sources */, + 147361181DB04DB50058BE6D /* User.swift in Sources */, + E4EDAE351DA1E31300C4DC31 /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E4EDAE411DA1E31300C4DC31 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E4EDAE4A1DA1E31300C4DC31 /* MDBSocialsTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E4EDAE4C1DA1E31300C4DC31 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E4EDAE551DA1E31300C4DC31 /* MDBSocialsUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + E4EDAE471DA1E31300C4DC31 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = E4EDAE301DA1E31100C4DC31 /* MDBSocials */; + targetProxy = E4EDAE461DA1E31300C4DC31 /* PBXContainerItemProxy */; + }; + E4EDAE521DA1E31300C4DC31 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = E4EDAE301DA1E31100C4DC31 /* MDBSocials */; + targetProxy = E4EDAE511DA1E31300C4DC31 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + E4EDAE381DA1E31300C4DC31 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + E4EDAE391DA1E31300C4DC31 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + E4EDAE3D1DA1E31300C4DC31 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + E4EDAE3E1DA1E31300C4DC31 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + E4EDAE571DA1E31300C4DC31 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + E4EDAE581DA1E31300C4DC31 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + E4EDAE5A1DA1E31300C4DC31 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CE51ACC30EF39E0EE12DAFCD /* Pods-MDBSocials.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = MDBSocials/MDBSocials.entitlements; + DEVELOPMENT_TEAM = TDF4CS47G4; + INFOPLIST_FILE = MDBSocials/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = MohitMDB.MDBSocials; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + }; + name = Debug; + }; + E4EDAE5B1DA1E31300C4DC31 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F32AD32938E61C657887380A /* Pods-MDBSocials.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = MDBSocials/MDBSocials.entitlements; + DEVELOPMENT_TEAM = TDF4CS47G4; + INFOPLIST_FILE = MDBSocials/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = MohitMDB.MDBSocials; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + }; + name = Release; + }; + E4EDAE5D1DA1E31300C4DC31 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + DEVELOPMENT_TEAM = TDF4CS47G4; + INFOPLIST_FILE = MDBSocialsTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = MohitMDB.MDBSocialsTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MDBSocials.app/MDBSocials"; + }; + name = Debug; + }; + E4EDAE5E1DA1E31300C4DC31 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + DEVELOPMENT_TEAM = TDF4CS47G4; + INFOPLIST_FILE = MDBSocialsTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = MohitMDB.MDBSocialsTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MDBSocials.app/MDBSocials"; + }; + name = Release; + }; + E4EDAE601DA1E31300C4DC31 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + DEVELOPMENT_TEAM = TDF4CS47G4; + INFOPLIST_FILE = MDBSocialsUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = MohitMDB.MDBSocialsUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + TEST_TARGET_NAME = MDBSocials; + }; + name = Debug; + }; + E4EDAE611DA1E31300C4DC31 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + DEVELOPMENT_TEAM = TDF4CS47G4; + INFOPLIST_FILE = MDBSocialsUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = MohitMDB.MDBSocialsUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + TEST_TARGET_NAME = MDBSocials; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + E4EDAE2C1DA1E31100C4DC31 /* Build configuration list for PBXProject "MDBSocials" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E4EDAE571DA1E31300C4DC31 /* Debug */, + E4EDAE581DA1E31300C4DC31 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E4EDAE591DA1E31300C4DC31 /* Build configuration list for PBXNativeTarget "MDBSocials" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E4EDAE5A1DA1E31300C4DC31 /* Debug */, + E4EDAE5B1DA1E31300C4DC31 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E4EDAE5C1DA1E31300C4DC31 /* Build configuration list for PBXNativeTarget "MDBSocialsTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E4EDAE5D1DA1E31300C4DC31 /* Debug */, + E4EDAE5E1DA1E31300C4DC31 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E4EDAE5F1DA1E31300C4DC31 /* Build configuration list for PBXNativeTarget "MDBSocialsUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E4EDAE601DA1E31300C4DC31 /* Debug */, + E4EDAE611DA1E31300C4DC31 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = E4EDAE291DA1E31100C4DC31 /* Project object */; +} diff --git a/MDBSocials/MDBSocials/MDBSocials.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..cf2e05c --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/MDBSocials/MDBSocials/MDBSocials.xcodeproj/project.xcworkspace/xcuserdata/Mohit.xcuserdatad/UserInterfaceState.xcuserstate b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/project.xcworkspace/xcuserdata/Mohit.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..ee7e97e Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/project.xcworkspace/xcuserdata/Mohit.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/MDBSocials/MDBSocials/MDBSocials.xcodeproj/project.xcworkspace/xcuserdata/vidya.xcuserdatad/UserInterfaceState.xcuserstate b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/project.xcworkspace/xcuserdata/vidya.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..2db400d Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/project.xcworkspace/xcuserdata/vidya.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/Mohit.xcuserdatad/xcschemes/MDBSocials.xcscheme b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/Mohit.xcuserdatad/xcschemes/MDBSocials.xcscheme new file mode 100644 index 0000000..61400d9 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/Mohit.xcuserdatad/xcschemes/MDBSocials.xcscheme @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/Mohit.xcuserdatad/xcschemes/xcschememanagement.plist b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/Mohit.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..dcdf7ab --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/Mohit.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,32 @@ + + + + + SchemeUserState + + MDBSocials.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + E4EDAE301DA1E31100C4DC31 + + primary + + + E4EDAE441DA1E31300C4DC31 + + primary + + + E4EDAE4F1DA1E31300C4DC31 + + primary + + + + + diff --git a/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/vidya.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/vidya.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/vidya.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/vidya.xcuserdatad/xcschemes/MDBSocials.xcscheme b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/vidya.xcuserdatad/xcschemes/MDBSocials.xcscheme new file mode 100644 index 0000000..61400d9 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/vidya.xcuserdatad/xcschemes/MDBSocials.xcscheme @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/vidya.xcuserdatad/xcschemes/xcschememanagement.plist b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/vidya.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..dcdf7ab --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials.xcodeproj/xcuserdata/vidya.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,32 @@ + + + + + SchemeUserState + + MDBSocials.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + E4EDAE301DA1E31100C4DC31 + + primary + + + E4EDAE441DA1E31300C4DC31 + + primary + + + E4EDAE4F1DA1E31300C4DC31 + + primary + + + + + diff --git a/MDBSocials/MDBSocials/MDBSocials.xcworkspace/contents.xcworkspacedata b/MDBSocials/MDBSocials/MDBSocials.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..bb398d3 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/MDBSocials/MDBSocials/MDBSocials.xcworkspace/xcuserdata/vidya.xcuserdatad/UserInterfaceState.xcuserstate b/MDBSocials/MDBSocials/MDBSocials.xcworkspace/xcuserdata/vidya.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..41b444d Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocials.xcworkspace/xcuserdata/vidya.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/MDBSocials/MDBSocials/MDBSocials/.DS_Store b/MDBSocials/MDBSocials/MDBSocials/.DS_Store new file mode 100644 index 0000000..d0b0f78 Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocials/.DS_Store differ diff --git a/MDBSocials/MDBSocials/MDBSocials/AppDelegate.swift b/MDBSocials/MDBSocials/MDBSocials/AppDelegate.swift new file mode 100644 index 0000000..9500663 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/AppDelegate.swift @@ -0,0 +1,20 @@ +import UIKit +import Firebase + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) + -> Bool { + FIRApp.configure() + return true + } + + override init() { + FIRApp.configure() + FIRDatabase.database().persistenceEnabled = true + } +} diff --git a/MDBSocials/MDBSocials/MDBSocials/AppState.swift b/MDBSocials/MDBSocials/MDBSocials/AppState.swift new file mode 100644 index 0000000..d619b18 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/AppState.swift @@ -0,0 +1,19 @@ +// +// AppState.swift +// MDBSocials +// +// Created by Vidya Ravikumar on 10/13/16. +// Copyright © 2016 Mohit Katyal. All rights reserved. +// + +import UIKit +import Foundation + +class AppState: NSObject { + + static let sharedInstance = AppState() + + var signedIn = false + var events : [Event]! = [] + +} diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/.DS_Store b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/.DS_Store new file mode 100644 index 0000000..7ed6180 Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/.DS_Store differ diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/AppIcon.appiconset/Contents.json b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..1d060ed --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,93 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/Contents.json b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/background.imageset/.DS_Store b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/background.imageset/.DS_Store new file mode 100644 index 0000000..a2192e5 Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/background.imageset/.DS_Store differ diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/background.imageset/Contents.json b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/background.imageset/Contents.json new file mode 100644 index 0000000..e97bcdb --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/background.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "background.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/background.imageset/background.jpg b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/background.imageset/background.jpg new file mode 100644 index 0000000..f1d1e1d Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/background.imageset/background.jpg differ diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/eventImage.imageset/Contents.json b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/eventImage.imageset/Contents.json new file mode 100644 index 0000000..d7b98df --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/eventImage.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "eventImage.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/eventImage.imageset/eventImage.jpg b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/eventImage.imageset/eventImage.jpg new file mode 100644 index 0000000..2bd5b05 Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/eventImage.imageset/eventImage.jpg differ diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/gradientBackground.imageset/Contents.json b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/gradientBackground.imageset/Contents.json new file mode 100644 index 0000000..fd59f4c --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/gradientBackground.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "gradientBackground.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/gradientBackground.imageset/gradientBackground.jpg b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/gradientBackground.imageset/gradientBackground.jpg new file mode 100644 index 0000000..d301ea4 Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/gradientBackground.imageset/gradientBackground.jpg differ diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/lighter background.imageset/.DS_Store b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/lighter background.imageset/.DS_Store new file mode 100644 index 0000000..3b52581 Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/lighter background.imageset/.DS_Store differ diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/lighter background.imageset/Contents.json b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/lighter background.imageset/Contents.json new file mode 100644 index 0000000..a47239a --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/lighter background.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "lighter background.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/lighter background.imageset/lighter background.jpg b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/lighter background.imageset/lighter background.jpg new file mode 100644 index 0000000..cb161d3 Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/lighter background.imageset/lighter background.jpg differ diff --git a/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/photoImage.imageset/.DS_Store b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/photoImage.imageset/.DS_Store new file mode 100644 index 0000000..f29e588 Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocials/Assets.xcassets/photoImage.imageset/.DS_Store differ diff --git a/MDBSocials/MDBSocials/MDBSocials/Base.lproj/LaunchScreen.storyboard b/MDBSocials/MDBSocials/MDBSocials/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..fdf3f97 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MDBSocials/MDBSocials/MDBSocials/Base.lproj/Main.storyboard b/MDBSocials/MDBSocials/MDBSocials/Base.lproj/Main.storyboard new file mode 100644 index 0000000..679be7d --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/Base.lproj/Main.storyboard @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MDBSocials/MDBSocials/MDBSocials/DetailViewController.swift b/MDBSocials/MDBSocials/MDBSocials/DetailViewController.swift new file mode 100644 index 0000000..97fffea --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/DetailViewController.swift @@ -0,0 +1,100 @@ +// +// DetailViewController.swift +// MDBSocials +// +// Created by Mohit Katyal on 10/2/16. +// Copyright © 2016 Mohit Katyal. All rights reserved. +// + +import UIKit +import Firebase + +class DetailViewController: UIViewController { + + var eventImage : UIImage! + var imageView : UIImageView! + var navBarLabel : UILabel! + var backButton : UIButton! + var eventName : UILabel! + var eventDate : UILabel! + var eventOrganizerAndNumPpl : UILabel! + var eventDescription : UILabel! + var event : Event! + + + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = UIColor(red: 207/255, green: 229/255, blue: 250/255, alpha: 1) + setUpUI() + // Do any additional setup after loading the view. + } + + func setUpUI() { + eventImage = #imageLiteral(resourceName: "eventImage") + imageView = UIImageView(frame: CGRect(x: 0, y: 60, width: view.frame.width, height: view.frame.height * 0.3)) + imageView.image = eventImage + imageView.contentMode = .scaleAspectFit + view.addSubview(imageView) + + navBarLabel = UILabel(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 64)) + navBarLabel.backgroundColor = UIColor(red: 235/255, green: 235/255, blue: 235/255, alpha: 1) + view.addSubview(navBarLabel) + + backButton = UIButton(frame: CGRect(x: view.frame.width * 0, y: view.frame.height * 0.025, width: view.frame.width * 0.2, height: view.frame.height * 0.05)) + backButton.setTitle("<- Back", for: .normal) + backButton.setTitleColor(UIColor(red: 0/255, green: 0/255, blue: 255/255, alpha: 1), for: .normal) + backButton.addTarget(self, action: #selector(backPressed), for: .touchUpInside) + view.addSubview(backButton) + + eventName = UILabel(frame: CGRect(x: view.frame.width * 0.05, y: view.frame.height * 0.4, width: view.frame.width * 0.9, height: view.frame.height * 0.1)) + eventName.clipsToBounds = true + eventName.layer.cornerRadius = 10 + eventName.text = "Event: " + event.eventName +// eventName.backgroundColor = UIColor.black + view.addSubview(eventName) + + eventDate = UILabel(frame: CGRect(x: view.frame.width * 0.05, y: view.frame.height * 0.525, width: view.frame.width * 0.9, height: view.frame.height * 0.1)) +// eventDate.backgroundColor = UIColor.black + eventDate.text = "Date: " + event.date + eventDate.clipsToBounds = true + eventDate.layer.cornerRadius = 10 + view.addSubview(eventDate) + + eventOrganizerAndNumPpl = UILabel(frame: CGRect(x: view.frame.width * 0.05, y: view.frame.height * 0.65, width: view.frame.width * 0.9, height: view.frame.height * 0.1)) +// eventOrganizerAndNumPpl.backgroundColor = UIColor.black + eventOrganizerAndNumPpl.text = "Organizer: " + event.user + " RSVP'd: " + event.numAtendees + eventOrganizerAndNumPpl.clipsToBounds = true + eventOrganizerAndNumPpl.layer.cornerRadius = 10 + eventOrganizerAndNumPpl.lineBreakMode = NSLineBreakMode.byWordWrapping + eventOrganizerAndNumPpl.numberOfLines = 0 + view.addSubview(eventOrganizerAndNumPpl) + + eventDescription = UILabel(frame: CGRect(x: view.frame.width * 0.05, y: view.frame.height * 0.725, width: view.frame.width * 0.9, height: view.frame.height * 0.225)) + eventDescription.text = event.description + eventDescription.clipsToBounds = true + eventDescription.layer.cornerRadius = 10 + eventDescription.lineBreakMode = NSLineBreakMode.byWordWrapping + eventDescription.numberOfLines = 0 + view.addSubview(eventDescription) + } + + func backPressed() { + dismiss(animated: true, completion: nil) + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + + /* + // MARK: - Navigation + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/MDBSocials/MDBSocials/MDBSocials/Event.swift b/MDBSocials/MDBSocials/MDBSocials/Event.swift new file mode 100644 index 0000000..2ae49aa --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/Event.swift @@ -0,0 +1,37 @@ +// +// Event.swift +// MDBSocials +// +// Created by Vidya Ravikumar on 10/13/16. +// Copyright © 2016 Mohit Katyal. All rights reserved. +// + +import UIKit +import FirebaseDatabase + +struct Event { + + var user : String! + var eventName : String! + var description : String! + var date : String! + var startTime : String! + var endTime : String! + var numAtendees : String! + var image : UIImage! + var itemRef : FIRDatabaseReference? + + init (user : String, eventName : String, description : String, date : String, + startTime : String, endTime : String) { + self.user = user + self.eventName = eventName + self.description = description + self.date = date + self.startTime = startTime + self.endTime = endTime + self.numAtendees = "0" +// self.image = image + self.itemRef = nil + } + +} diff --git a/MDBSocials/MDBSocials/MDBSocials/FeedCollectionViewCell.swift b/MDBSocials/MDBSocials/MDBSocials/FeedCollectionViewCell.swift new file mode 100644 index 0000000..c6242ad --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/FeedCollectionViewCell.swift @@ -0,0 +1,68 @@ +import UIKit + +class FeedCollectionViewCell: UICollectionViewCell { + //event variables + var eventImage: UIImageView! + var blackGradient: UILabel! + var dateLabel: UILabel! + var eventNameLabel: UILabel! + var hostLabel: UILabel! + var attendanceLabel: UILabel! + + + //Adds it to the FeedViewController + override func awakeFromNib() { + + //Creates event image + eventImage = UIImageView(frame: CGRect(x: contentView.frame.width*0.1, y: contentView.frame.height*0.1, width: contentView.frame.width*0.8, height: contentView.frame.height*0.4)) + eventImage.image = #imageLiteral(resourceName: "background") //Must change to input image + eventImage.contentMode = .scaleAspectFill + eventImage.clipsToBounds = true + eventImage.layer.cornerRadius = 10 + contentView.addSubview(eventImage) + + //Creates black gradient over the image + blackGradient = UILabel(frame: CGRect(x: contentView.frame.width*0.1, y: contentView.frame.height*0.1, width: contentView.frame.width*0.8, height: contentView.frame.height*0.4)) + blackGradient.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.3) + blackGradient.clipsToBounds = true + blackGradient.layer.cornerRadius = 10 + contentView.addSubview(blackGradient) + + //Creates date over the image + dateLabel = UILabel(frame: CGRect(x: contentView.frame.width*0.15, y: contentView.frame.height*0.05, width: contentView.frame.width*0.7, height: contentView.frame.height*0.5)) + dateLabel.text = "Date:" + dateLabel.textColor = UIColor.white + dateLabel.font = UIFont(name: dateLabel.font.fontName, size: 40) + dateLabel.font = UIFont.boldSystemFont(ofSize: 40) + dateLabel.textAlignment = .center + contentView.addSubview(dateLabel) + + //Creates name of the event + eventNameLabel = UILabel(frame: CGRect(x: contentView.frame.width*0.1, y: contentView.frame.height*0.5, width: contentView.frame.width*0.8, height: contentView.frame.height*0.2)) + eventNameLabel.text = "Name of Event" //Should change to actual event name + eventNameLabel.textColor = UIColor.black + eventNameLabel.font = UIFont(name: eventNameLabel.font.fontName, size: 20) + eventNameLabel.font = UIFont.boldSystemFont(ofSize: 40) + eventNameLabel.textAlignment = .center + contentView.addSubview(eventNameLabel) + + //Creates name of host + hostLabel = UILabel(frame: CGRect(x: contentView.frame.width*0.1, y: contentView.frame.height*0.7, width: contentView.frame.width*0.8, height: contentView.frame.height*0.1)) + hostLabel.text = "Host: Mohit Katyal" //Should change to actual host + hostLabel.textColor = UIColor.black + hostLabel.font = UIFont(name: hostLabel.font.fontName, size: 20) + contentView.addSubview(hostLabel) + + //Creates Number of people attending + attendanceLabel = UILabel(frame: CGRect(x: contentView.frame.width*0.1, y: contentView.frame.height*0.8, width: contentView.frame.width*0.8, height: contentView.frame.height*0.1)) + attendanceLabel.text = "Number of Attendents: 0 😢" //Should change to actual number of attendants + attendanceLabel.textColor = UIColor.black + attendanceLabel.font = UIFont(name: attendanceLabel.font.fontName, size: 20) + contentView.addSubview(attendanceLabel) + + + // Do any additional setup after loading the contentView. + } + + // Dispose of any resources that can be recreated. +} diff --git a/MDBSocials/MDBSocials/MDBSocials/FeedViewController.swift b/MDBSocials/MDBSocials/MDBSocials/FeedViewController.swift new file mode 100644 index 0000000..5bf76f1 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/FeedViewController.swift @@ -0,0 +1,167 @@ + +// FeedViewController.swift +// MDBSocials +// +// Created by Mohit Katyal on 10/2/16. +// Copyright © 2016 Mohit Katyal. All rights reserved. +// + +import UIKit +import Firebase +import FirebaseAuth +import FirebaseDatabase + +class FeedViewController: UIViewController { + + var collectionView: UICollectionView! + var navBarLabel : UILabel! + var signOutButton : UIButton! + var createEventButton : UIButton! + var ref : FIRDatabaseReference! + var events = [Event]() + var eventSelected : Event! + + + override func viewDidLoad() { + super.viewDidLoad() + + let ref = FIRDatabase.database().reference() + ref.child("events").queryOrderedByKey().observe(.childAdded, with: { + snapshot in + + let snapshotValue = snapshot.value as? NSDictionary + + let date = snapshotValue?["date"] as? String + let user = snapshotValue?["user"] as? String + let name = snapshotValue?["name"] as? String + let description = snapshotValue?["description"] as? String + let end = snapshotValue?["end"] as? String + let start = snapshotValue?["start"] as? String + let numPeople = snapshotValue?["numPeople"] as? String + + self.events.insert(Event(user: user!, eventName: name!, description: description!, date: date!, startTime: start!, endTime: end!), at: 0) + }) + + + navBarLabel = UILabel(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 64)) + navBarLabel.backgroundColor = UIColor(red: 235/255, green: 235/255, blue: 235/255, alpha: 1) + view.addSubview(navBarLabel) + + let layout = UICollectionViewFlowLayout() + layout.minimumLineSpacing = 0 + layout.minimumInteritemSpacing = 0 + collectionView = UICollectionView(frame: CGRect(x: 0, y: 64, width: view.frame.width, height: view.frame.height - 64), collectionViewLayout: layout) + collectionView.delegate = self + collectionView.dataSource = self + collectionView.backgroundColor = UIColor.white + collectionView.register(FeedCollectionViewCell.self, forCellWithReuseIdentifier: "feedCell") + view.addSubview(collectionView) + + createEventButton = UIButton(frame: CGRect(x: view.frame.width * 0.725, y: 18, width: view.frame.width * 0.25, height: 32)) + createEventButton.setTitle("New Event", for: .normal) + createEventButton.setTitleColor(UIColor.blue, for: .normal) + createEventButton.addTarget(self, action: #selector(createEvent), for: .touchUpInside) + view.addSubview(createEventButton) + + signOutButton = UIButton(frame: CGRect(x: 0, y: 18, width: 0.25 * view.frame.width, height: 32)) + signOutButton.setTitle("Sign Out",for: .normal) + signOutButton.setTitleColor(UIColor.blue, for: .normal) + signOutButton.addTarget(self, action: #selector(signOut), for: .touchUpInside) + view.addSubview(signOutButton) + // Do any additional setup after loading the view. + } + + override func viewDidAppear(_ animated: Bool) { + collectionView.reloadData() + } + +// func configureDatabase() { +// let ref = FIRDatabase.database().reference() +// } + +// override func viewDidAppear(_ animated: Bool) { +// let eventRef = ref.child("event") +// eventRef.observe(.value) { (FIRDataSnapshot) in +// <#code#> +// } +// } +// + func signOut() { + do { + try FIRAuth.auth()?.signOut() + AppState.sharedInstance.signedIn = false + dismiss(animated: true, completion: nil) + performSegue(withIdentifier: "feedToLogin", sender: self) + } catch let error as NSError { + print(error) + } + } + + func createEvent() { + performSegue(withIdentifier: "toNewSocial", sender: self) + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + if segue.identifier == "toDetail" { + let next = segue.destination as! DetailViewController + next.event = eventSelected + } + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} + +extension FeedViewController: UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource +{ + func numberOfSections(in collectionView: UICollectionView) -> Int { + return 1 + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + print(events.count) + return events.count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "feedCell", for: indexPath) + for subview in cell.contentView.subviews { + subview.removeFromSuperview() + } + cell.awakeFromNib() + return cell + } + + func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { + let feedCell = cell as! FeedCollectionViewCell + feedCell.dateLabel.text = events[indexPath.row].date + feedCell.eventNameLabel.text = events[indexPath.row].eventName + feedCell.hostLabel.text = events[indexPath.row].user + feedCell.attendanceLabel.text = (String)(events[indexPath.row].numAtendees) + + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + return CGSize(width: view.frame.width, height: (view.frame.height-64)/3) + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + eventSelected = events[indexPath.row] + performSegue(withIdentifier: "toDetail", sender: self) + } + +} diff --git a/MDBSocials/MDBSocials/MDBSocials/Info.plist b/MDBSocials/MDBSocials/MDBSocials/Info.plist new file mode 100644 index 0000000..d052473 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/MDBSocials/MDBSocials/MDBSocials/LoginViewController.swift b/MDBSocials/MDBSocials/MDBSocials/LoginViewController.swift new file mode 100644 index 0000000..1f11b38 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/LoginViewController.swift @@ -0,0 +1,147 @@ + +// +// ViewController.swift +// MDBSocials +// +// Created by Mohit Katyal on 10/2/16. +// Copyright © 2016 Mohit Katyal. All rights reserved. +// + +import UIKit +import Firebase + +class LoginViewController: UIViewController { + + //All Variables + var loginBackground: UIImageView! + var MDBLabel: UILabel! + var emailLabel: UILabel! + var passLabel: UILabel! + var logInButton: UIButton! + var createButton: UIButton! + var emailText: UITextField! + var passText: UITextField! + + override func viewDidLoad() { + + super.viewDidLoad() + +// FIRApp.configure() + + //Creates Background + loginBackground = UIImageView(frame: view.frame) + loginBackground.image = #imageLiteral(resourceName: "background") + view.addSubview(loginBackground) + + + //Creates Title + MDBLabel = UILabel(frame: CGRect(x: view.frame.width*0.1, y: view.frame.height*0.1, width: view.frame.width*0.8, height: view.frame.height*0.15)) + MDBLabel.text = "MDB Socials" + MDBLabel.textColor = UIColor.white + MDBLabel.textAlignment = .center + MDBLabel.font = UIFont(name: MDBLabel.font.fontName, size: 45) + MDBLabel.backgroundColor = UIColor(red: 41/255, green: 70/255, blue: 164/255, alpha: 0.9) + MDBLabel.layer.masksToBounds = true + MDBLabel.layer.cornerRadius = 10 + view.addSubview(MDBLabel) + + + //Creates UserName + emailLabel = UILabel(frame: CGRect(x: view.frame.width*0.15, y: MDBLabel.frame.height+view.frame.height*0.2, width: view.frame.width*0.4, height: view.frame.height*0.1)) + emailLabel.text = "Email:" + emailLabel.textColor = UIColor.white + emailLabel.font = UIFont(name: MDBLabel.font.fontName, size: 40) + emailLabel.font = UIFont.boldSystemFont(ofSize: 20.0) + view.addSubview(emailLabel) + + + //Creates Password + passLabel = UILabel(frame: CGRect(x: view.frame.width*0.15, y: MDBLabel.frame.height+view.frame.height*0.3, width: view.frame.width*0.4, height: view.frame.height*0.1)) + passLabel.text = "Password:" + passLabel.textColor = UIColor.white + passLabel.font = UIFont(name: MDBLabel.font.fontName, size: 40) + passLabel.font = UIFont.boldSystemFont(ofSize: 20.0) + view.addSubview(passLabel) + + //Creates Username Text Field + emailText = UITextField(frame: CGRect(x: view.frame.width*0.46, y: MDBLabel.frame.height+view.frame.height*0.23, width: view.frame.width*0.4, height: view.frame.height*0.04)) + emailText.backgroundColor = UIColor.white + emailText.layer.masksToBounds = true + emailText.layer.cornerRadius = 10 + view.addSubview(emailText) + + //Creates Password Text Field + passText = UITextField(frame: CGRect(x: view.frame.width*0.46, y: MDBLabel.frame.height+view.frame.height*0.33, width: view.frame.width*0.4, height: view.frame.height*0.04)) + passText.backgroundColor = UIColor.white + passText.layer.masksToBounds = true + passText.layer.cornerRadius = 10 + view.addSubview(passText) + + //Creates Login Button + logInButton = UIButton(frame: CGRect(x: view.frame.width*0.2, y: view.frame.height*0.6, width: view.frame.width*0.6, height: view.frame.height*0.1)) + logInButton.setTitle("Log In", for: .normal) + logInButton.setTitleColor(UIColor.white, for: .normal) + logInButton.backgroundColor = UIColor(red: 255/255, green: 191/255, blue: 0/255, alpha: 0.9) + logInButton.layer.masksToBounds = true + logInButton.layer.cornerRadius = 10 + view.addSubview(logInButton) + //Sets button to the function logInClicked + logInButton.addTarget(self, action: #selector(logInClicked), for: UIControlEvents.touchUpInside) + + //Creates CreateAnAccount Button + createButton = UIButton(frame: CGRect(x: view.frame.width*0.25, y: view.frame.height*0.7, width: view.frame.width*0.5, height: view.frame.height*0.1)) + createButton.setTitle("Create An Account", for: .normal) + createButton.setTitleColor(UIColor.white, for: .normal) + view.addSubview(createButton) + //Sets button to function createClicked + createButton.addTarget(self, action:#selector(createClicked), for: UIControlEvents.touchUpInside) + + //Do any additional setup after loading the view, typically from a nib. + + } + + override func viewDidAppear(_ animated: Bool) { + FIRAuth.auth()?.addStateDidChangeListener({ (auth : FIRAuth, user : FIRUser?) in + if let user = user { + self.signedIn(user) + } else { + print("Sign up or log in!") + } + }) + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + //When Log In Button is clicked, the FeedViewController opens + func logInClicked(sender: UIButton) + { + guard let email = emailText.text, let password = passText.text else {return} + FIRAuth.auth()?.signIn(withEmail: email, password: password) { (user, error) in + if let error = error { + print(error) + return + } else { + self.signedIn(user) + } + } + } + + func signedIn(_ user: FIRUser?) { + AppState.sharedInstance.signedIn = true + emailText.text = "" + passText.text = "" + performSegue(withIdentifier: "loginToFeed", sender: self) + } + + //When Create An Account is clicked, the SignUpViewControlelr opens + func createClicked(sender:UIButton) + { + performSegue(withIdentifier: "toSignUp", sender:self) + } + + +} + diff --git a/MDBSocials/MDBSocials/MDBSocials/MDBSocials.entitlements b/MDBSocials/MDBSocials/MDBSocials/MDBSocials.entitlements new file mode 100644 index 0000000..3c52a58 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/MDBSocials.entitlements @@ -0,0 +1,10 @@ + + + + + keychain-access-groups + + $(AppIdentifierPrefix)MohitMDB.MDBSocials + + + diff --git a/MDBSocials/MDBSocials/MDBSocials/NewSocialViewController.swift b/MDBSocials/MDBSocials/MDBSocials/NewSocialViewController.swift new file mode 100644 index 0000000..5c67ada --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/NewSocialViewController.swift @@ -0,0 +1,204 @@ +// +// NewSocialViewController.swift +// MDBSocials +// +// Created by Mohit Katyal on 10/2/16. +// Copyright © 2016 Mohit Katyal. All rights reserved. +// + +import UIKit +import Firebase + +class NewSocialViewController: UIViewController { + + var navBarLabel : UILabel! + var backButton : UIButton! + var newEventLabel : UILabel! + var eventNameLabel : UILabel! + var eventNameTextField : UITextField! + var eventLocationLabel : UILabel! + var eventLocationTextField : UITextField! + var eventDateLabel : UILabel! + var eventDateTextField : UITextField! + var eventStartTimeLabel : UILabel! + var eventStartTimeTextField : UITextField! + var eventEndTimeLabel : UILabel! + var eventEndTimeTextField : UITextField! + var nameLabel : UILabel! + var nameTextField : UITextField! + var eventDescLabel : UILabel! + var eventDescTextField : UITextField! + var eventPicLabel : UILabel! + var eventPicButton : UIButton! //not done + var createEventButton : UIButton! + var ref : FIRDatabaseReference! + + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = UIColor(red: 207/255, green: 229/255, blue: 250/255, alpha: 1) + ref = FIRDatabase.database().reference().child("events") + setUpUI() + // Do any additional setup after loading the view. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + func setUpUI() { + navBarLabel = UILabel(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 64)) + navBarLabel.backgroundColor = UIColor(red: 235/255, green: 235/255, blue: 235/255, alpha: 1) + view.addSubview(navBarLabel) + + backButton = UIButton(frame: CGRect(x: view.frame.width * 0, y: view.frame.height * 0.025, width: view.frame.width * 0.2, height: view.frame.height * 0.05)) + backButton.setTitle("<- Back", for: .normal) + backButton.setTitleColor(UIColor(red: 0/255, green: 0/255, blue: 255/255, alpha: 1), for: .normal) + backButton.addTarget(self, action: #selector(backPressed), for: .touchUpInside) + view.addSubview(backButton) + + newEventLabel = UILabel(frame: CGRect(x: view.frame.width * 0.0375, y: 64 + view.frame.height * 0.025, width: view.frame.width * 0.925, height: view.frame.height * 0.1)) + newEventLabel.text = "Create a new Event" + newEventLabel.textColor = UIColor.white + newEventLabel.textAlignment = .center + newEventLabel.font = UIFont(name: newEventLabel.font.fontName, size: 40) + newEventLabel.backgroundColor = UIColor(red: 0/255, green: 115/255, blue: 230/255, alpha: 0.9) + newEventLabel.layer.masksToBounds = true + newEventLabel.layer.cornerRadius = 10 + view.addSubview(newEventLabel) + + eventNameLabel = UILabel(frame: CGRect(x: view.frame.width * 0.0375, y: 64 + view.frame.height * 0.15, width: view.frame.width * 0.35, height: view.frame.height * 0.05)) + eventNameLabel.text = "Name of Event:" + eventNameLabel.font = UIFont.boldSystemFont(ofSize: 19.0) + view.addSubview(eventNameLabel) + + eventNameTextField = UITextField(frame: CGRect(x: view.frame.width * 0.39, y: 64 + view.frame.height * 0.15, width: view.frame.width * 0.56, height: view.frame.height * 0.05)) + eventNameTextField.layer.masksToBounds = true + eventNameTextField.layer.cornerRadius = 5 + eventNameTextField.layer.borderColor = UIColor.gray.cgColor + eventNameTextField.layer.borderWidth = 1 + view.addSubview(eventNameTextField) + +// eventLocationLabel = UILabel(frame: CGRect(x: view.frame.width * 0.0375, y: 64 + view.frame.height * 0.225, width: view.frame.width * 0.2, height: view.frame.height * 0.05)) +// eventLocationLabel.text = "Location: " +// eventLocationLabel.font = UIFont.boldSystemFont(ofSize: 19.0) +// view.addSubview(eventLocationLabel) +// +// eventLocationTextField = UITextField(frame: CGRect(x: view.frame.width * 0.25, y: 64 + view.frame.height * 0.225, width: view.frame.width * 0.7, height: view.frame.height * 0.05)) +// eventLocationTextField.layer.masksToBounds = true +// eventLocationTextField.layer.cornerRadius = 5 +// eventLocationTextField.layer.borderColor = UIColor.gray.cgColor +// eventLocationTextField.layer.borderWidth = 1 +// view.addSubview(eventLocationTextField) + + eventDateLabel = UILabel(frame: CGRect(x: view.frame.width * 0.3250, y: 64 + view.frame.height * 0.3, width: view.frame.width * 0.12, height: view.frame.height * 0.05)) + eventDateLabel.text = "Date: " + eventDateLabel.font = UIFont.boldSystemFont(ofSize: 19.0) + view.addSubview(eventDateLabel) + + eventDateTextField = UITextField(frame: CGRect(x: view.frame.width * 0.45, y: 64 + view.frame.height * 0.3, width: view.frame.width * 0.25, height: view.frame.height * 0.05)) + eventDateTextField.layer.masksToBounds = true + eventDateTextField.layer.cornerRadius = 5 + eventDateTextField.layer.borderColor = UIColor.gray.cgColor + eventDateTextField.layer.borderWidth = 1 + eventDateTextField.placeholder = " mm/dd/yyyy" + view.addSubview(eventDateTextField) + + eventStartTimeLabel = UILabel(frame: CGRect(x: view.frame.width * 0.04, y: 64 + view.frame.height * 0.375, width: view.frame.width * 0.13, height: view.frame.height * 0.05)) + eventStartTimeLabel.text = "Start: " + eventStartTimeLabel.font = UIFont.boldSystemFont(ofSize: 19.0) + view.addSubview(eventStartTimeLabel) + + eventStartTimeTextField = UITextField(frame: CGRect(x: view.frame.width * 0.2, y: 64 + view.frame.height * 0.375, width: view.frame.width * 0.225, height: view.frame.height * 0.05)) + eventStartTimeTextField.layer.masksToBounds = true + eventStartTimeTextField.layer.cornerRadius = 5 + eventStartTimeTextField.layer.borderColor = UIColor.gray.cgColor + eventStartTimeTextField.layer.borderWidth = 1 + eventStartTimeTextField.placeholder = " hh:mm am" + view.addSubview(eventStartTimeTextField) + + eventEndTimeLabel = UILabel(frame: CGRect(x: view.frame.width * 0.6, y: 64 + view.frame.height * 0.375, width: view.frame.width * 0.225, height: view.frame.height * 0.05)) + eventEndTimeLabel.text = "End: " + eventEndTimeLabel.font = UIFont.boldSystemFont(ofSize: 19.0) + view.addSubview(eventEndTimeLabel) + + eventEndTimeTextField = UITextField(frame: CGRect(x: view.frame.width * 0.725, y: 64 + view.frame.height * 0.375, width: view.frame.width * 0.225, height: view.frame.height * 0.05)) + eventEndTimeTextField.layer.masksToBounds = true + eventEndTimeTextField.layer.cornerRadius = 5 + eventEndTimeTextField.layer.borderWidth = 1 + eventEndTimeTextField.layer.borderColor = UIColor.gray.cgColor + eventEndTimeTextField.placeholder = " hh:mm pm" + view.addSubview(eventEndTimeTextField) + + nameLabel = UILabel(frame: CGRect(x: view.frame.width * 0.0375, y: 64 + view.frame.height * 0.45, width: view.frame.width * 0.275, height: view.frame.height * 0.05)) + nameLabel.text = "Full Name: " + nameLabel.font = UIFont.boldSystemFont(ofSize: 19.0) + view.addSubview(nameLabel) + + nameTextField = UITextField(frame: CGRect(x: view.frame.width * 0.325, y: 64 + view.frame.height * 0.45, width: view.frame.width * 0.625, height: view.frame.height * 0.05)) + nameTextField.placeholder = " Oski Bear" + nameTextField.layer.masksToBounds = true + nameTextField.layer.cornerRadius = 5 + nameTextField.layer.borderWidth = 1 + nameTextField.layer.borderColor = UIColor.gray.cgColor + view.addSubview(nameTextField) + + createEventButton = UIButton(frame: CGRect(x: view.frame.width * 0.0375, y: view.frame.height * 0.9, width: view.frame.width * 0.925, height: view.frame.height * 0.075)) + createEventButton.setTitle("Create Event!", for: .normal) + createEventButton.setTitleColor(UIColor.white, for: .normal) + createEventButton.layer.masksToBounds = true + createEventButton.layer.cornerRadius = 10 + createEventButton.backgroundColor = UIColor(red: 0/255, green: 0/255, blue: 255/255, alpha: 1) + createEventButton.addTarget(self, action: #selector(createEvent), for: .touchUpInside) + view.addSubview(createEventButton) + + eventDescLabel = UILabel(frame: CGRect(x: view.frame.width * 0.0375, y: 64 + view.frame.height * 0.5, width: view.frame.width * 0.275, height: view.frame.height * 0.05)) + eventDescLabel.text = "Even Description: " + eventDescLabel.font = UIFont.boldSystemFont(ofSize: 19.0) + view.addSubview(eventDescLabel) + + eventDescTextField = UITextField(frame: CGRect(x: view.frame.width * 0.325, y: 64 + view.frame.height * 0.52, width: view.frame.width * 0.625, height: view.frame.height * 0.2)) + eventDescTextField.placeholder = "Write a short description of your event" + eventDescTextField.layer.masksToBounds = true + eventDescTextField.layer.cornerRadius = 5 + eventDescTextField.layer.borderWidth = 1 + eventDescTextField.layer.borderColor = UIColor.gray.cgColor + view.addSubview(eventDescTextField) + + +// eventPicLabel = UILabel(frame: CGRect(x: view.frame.width * 0.0375, y: 64 + view.frame.height * 0.73, width: view.frame.width * 0.275, height: view.frame.height * 0.05)) +// eventPicLabel.text = "Pick an Image!: " +// eventPicLabel.font = UIFont.boldSystemFont(ofSize: 19.0) +// view.addSubview(eventPicLabel) + + + + } + + func createEvent() { + let event : [String : String] = ["name":eventNameTextField.text!, "date":eventDateTextField.text!, "start":eventStartTimeTextField.text!, "end":eventEndTimeTextField.text!, "description":eventDescTextField.text!, "numPeople":"0", "user":nameTextField.text!] + let ref = FIRDatabase.database().reference() + ref.child("events").childByAutoId().setValue(event) + dismiss(animated: true, completion: nil) + } + + func backPressed() { + dismiss(animated: true, completion: nil) + } + + func selectImage(sender: UIButton) + { + + } + + + /* + // MARK: - Navigation + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/MDBSocials/MDBSocials/MDBSocials/SignUpViewController.swift b/MDBSocials/MDBSocials/MDBSocials/SignUpViewController.swift new file mode 100644 index 0000000..86697c3 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/SignUpViewController.swift @@ -0,0 +1,192 @@ +// +// SignUpViewController.swift +// MDBSocials +// +// Created by Mohit Katyal on 10/2/16. +// Copyright © 2016 Mohit Katyal. All rights reserved. +// + +import UIKit +import Firebase + +class SignUpViewController: UIViewController { + + var backgroundImage : UIImageView! + var signUpLabel : UILabel! + var nameLabel : UILabel! + var nameTextField : UITextField! + var usernameLabel : UILabel! + var usernameTextField : UITextField! + var emailLabel : UILabel! + var emailTextField : UITextField! + var passwordLabel : UILabel! + var passwordTextField : UITextField! + var passwordRequirementLabel :UILabel! + var createAccountButton : UIButton! + var backButton : UIButton! + + override func viewDidLoad() { + super.viewDidLoad() + setUpUI() + } + + //Should Create a new account + func createAccountPressed(_ sender: UIButton) { + guard let email = emailTextField.text, let password = passwordTextField.text else {return} + FIRAuth.auth()?.createUser(withEmail: email, password: password, completion: { (user, error) in + if let error = error{ + print(error) + return + }else { + self.setDisplayName(user) + AppState.sharedInstance.signedIn = true + } + + }) + } + + func setDisplayName(_ user: FIRUser?) { + let changeRequest = user?.profileChangeRequest() + changeRequest?.displayName = user?.email!.components(separatedBy: "@")[0] + changeRequest?.commitChanges(completion: { (error) in + if let error = error { + print(error) + return + } else { + self.signedIn(FIRAuth.auth()?.currentUser) + } + }) + } + + func signedIn(_ user: FIRUser?) { + performSegue(withIdentifier: "signUpToFeed", sender: self) + } + + func backPressed() { + dismiss(animated: true, completion: nil) + } + + func setUpUI() { + //set background + backgroundImage = UIImageView(frame: view.frame) + backgroundImage.image = #imageLiteral(resourceName: "background") + view.addSubview(backgroundImage) + + //add sign up labels + signUpLabel = UILabel(frame: CGRect(x: view.frame.width * 0.1, y: view.frame.height * 0.1, width: view.frame.width * 0.8, height: view.frame.height * 0.15)) + signUpLabel.text = "Sign Up" + signUpLabel.textColor = UIColor.white + signUpLabel.textAlignment = .center + signUpLabel.font = UIFont(name: signUpLabel.font.fontName, size: 50) + signUpLabel.backgroundColor = UIColor(red: 41/255, green: 70/255, blue: 164/255, alpha: 0.9) + signUpLabel.layer.masksToBounds = true + signUpLabel.layer.cornerRadius = 10 + view.addSubview(signUpLabel) + + //add "Full Name: " label + nameLabel = UILabel(frame: CGRect(x: view.frame.width * 0.1, y: view.frame.height * 0.3, width: view.frame.width * 0.275, height: view.frame.height * 0.05)) + nameLabel.text = "Full Name: " + nameLabel.textColor = UIColor.white + nameLabel.font = UIFont.boldSystemFont(ofSize: 16.0) + nameLabel.font = UIFont(name: nameLabel.font.fontName, size: 20) + view.addSubview(nameLabel) + + //add textField for name + nameTextField = UITextField(frame: CGRect(x: view.frame.width * 0.375, y: view.frame.height * 0.3, width: view.frame.width * 0.525, height: view.frame.height * 0.05)) + nameTextField.placeholder = " Oski Bear" + nameTextField.layer.masksToBounds = true + nameTextField.layer.cornerRadius = 5 + nameTextField.backgroundColor = UIColor.white + view.addSubview(nameTextField) + + //add username label + usernameLabel = UILabel(frame: CGRect(x: view.frame.width * 0.1, y: view.frame.height * 0.4, width: view.frame.width * 0.3, height: view.frame.height * 0.05)) + usernameLabel.text = "Username: " + usernameLabel.textColor = UIColor.white + usernameLabel.font = UIFont.boldSystemFont(ofSize: 16.0) + usernameLabel.font = UIFont(name: usernameLabel.font.fontName, size: 20) + view.addSubview(usernameLabel) + + //add username text field + usernameTextField = UITextField(frame: CGRect(x: view.frame.width * 0.375, y: view.frame.height * 0.4, width: view.frame.width * 0.525, height: view.frame.height * 0.05)) + usernameTextField.placeholder = " oskiBearrr" + usernameTextField.layer.masksToBounds = true + usernameTextField.layer.cornerRadius = 5 + usernameTextField.backgroundColor = UIColor.white + view.addSubview(usernameTextField) + + //add email label + emailLabel = UILabel(frame: CGRect(x: view.frame.width * 0.1, y: view.frame.height * 0.5, width: view.frame.width * 0.15, height: view.frame.height * 0.05)) + emailLabel.text = "Email: " + emailLabel.textColor = UIColor.white + emailLabel.font = UIFont.boldSystemFont(ofSize: 16.0) + emailLabel.font = UIFont(name: emailLabel.font.fontName, size: 20) + view.addSubview(emailLabel) + + //add email text field + emailTextField = UITextField(frame: CGRect(x: view.frame.width * 0.275, y: view.frame.height * 0.5, width: view.frame.width * 0.625, height: view.frame.height * 0.05)) + emailTextField.placeholder = " oski@bearrr.edu" + emailTextField.layer.masksToBounds = true + emailTextField.layer.cornerRadius = 5 + emailTextField.backgroundColor = UIColor.white + view.addSubview(emailTextField) + + //add password label + passwordLabel = UILabel(frame: CGRect(x: view.frame.width * 0.1, y: view.frame.height * 0.6, width: view.frame.width * 0.275, height: view.frame.height * 0.05)) + passwordLabel.text = "Password: " + passwordLabel.textColor = UIColor.white + passwordLabel.font = UIFont.boldSystemFont(ofSize: 16.0) + passwordLabel.font = UIFont(name: passwordLabel.font.fontName, size: 20) + view.addSubview(passwordLabel) + + //add password text field + passwordTextField = UITextField(frame: CGRect(x: view.frame.width * 0.375, y: view.frame.height * 0.6, width: view.frame.width * 0.525, height: view.frame.height * 0.05)) + passwordTextField.placeholder = " oskisPassword123" + passwordTextField.layer.masksToBounds = true + passwordTextField.layer.cornerRadius = 5 + passwordTextField.backgroundColor = UIColor.white + view.addSubview(passwordTextField) + + + //add password requirements label + passwordRequirementLabel = UILabel(frame: CGRect(x: view.frame.width * 0.1, y: view.frame.height * 0.65, width: view.frame.width * 0.7, height: view.frame.height * 0.05)) + passwordRequirementLabel.text = "* minimum 6 characters in length" + passwordRequirementLabel.textColor = UIColor(red: 130/255, green: 130/255, blue: 130/255, alpha: 1.0) + passwordRequirementLabel.font = UIFont.boldSystemFont(ofSize: 16.0) + passwordRequirementLabel.font = UIFont(name: passwordRequirementLabel.font.fontName, size: 17) + view.addSubview(passwordRequirementLabel) + + //add create account button + createAccountButton = UIButton(frame: CGRect(x: view.frame.width * 0.1, y: view.frame.height * 0.75, width: view.frame.width * 0.8, height: view.frame.height * 0.15)) + createAccountButton.setTitle("Create an Account!", for: .normal) + createAccountButton.backgroundColor = UIColor(red: 255/255, green: 191/255, blue: 0/255, alpha: 1) + createAccountButton.setTitleColor(UIColor.white, for: .normal) + createAccountButton.layer.cornerRadius = 10 + createAccountButton.addTarget(self, action: #selector(createAccountPressed), for: .touchUpInside) + view.addSubview(createAccountButton) + + //add back button + backButton = UIButton(frame: CGRect(x: view.frame.width * 0, y: view.frame.height * 0.025, width: view.frame.width * 0.2, height: view.frame.height * 0.05)) + backButton.setTitle("<- Back", for: .normal) + backButton.setTitleColor(UIColor(red: 0/255, green: 0/255, blue: 255/255, alpha: 1), for: .normal) + backButton.addTarget(self, action: #selector(backPressed), for: .touchUpInside) + view.addSubview(backButton) + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/MDBSocials/MDBSocials/MDBSocials/User.swift b/MDBSocials/MDBSocials/MDBSocials/User.swift new file mode 100644 index 0000000..b8baa67 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocials/User.swift @@ -0,0 +1,31 @@ +// +// User.swift +// MDBSocials +// +// Created by Vidya Ravikumar on 10/13/16. +// Copyright © 2016 Mohit Katyal. All rights reserved. +// + +import Foundation +import FirebaseAuth + +struct User { + let uid : String + let email : String + + init(userData : FIRUser) { + uid = userData.uid + + if let mail = userData.providerData.first?.email { + email = mail + } else { + email = "" + } + } + + init (uid : String, email : String) { + self.uid = uid + self.email = email + } + +} diff --git a/MDBSocials/MDBSocials/MDBSocials/eventImage.jpg b/MDBSocials/MDBSocials/MDBSocials/eventImage.jpg new file mode 100644 index 0000000..2bd5b05 Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocials/eventImage.jpg differ diff --git a/MDBSocials/MDBSocials/MDBSocialsTests/.DS_Store b/MDBSocials/MDBSocials/MDBSocialsTests/.DS_Store new file mode 100644 index 0000000..987d725 Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocialsTests/.DS_Store differ diff --git a/MDBSocials/MDBSocials/MDBSocialsTests/Info.plist b/MDBSocials/MDBSocials/MDBSocialsTests/Info.plist new file mode 100644 index 0000000..6c6c23c --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocialsTests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/MDBSocials/MDBSocials/MDBSocialsTests/MDBSocialsTests.swift b/MDBSocials/MDBSocials/MDBSocialsTests/MDBSocialsTests.swift new file mode 100644 index 0000000..2edca59 --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocialsTests/MDBSocialsTests.swift @@ -0,0 +1,36 @@ +// +// MDBSocialsTests.swift +// MDBSocialsTests +// +// Created by Mohit Katyal on 10/2/16. +// Copyright © 2016 Mohit Katyal. All rights reserved. +// + +import XCTest +@testable import MDBSocials + +class MDBSocialsTests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/MDBSocials/MDBSocials/MDBSocialsUITests/.DS_Store b/MDBSocials/MDBSocials/MDBSocialsUITests/.DS_Store new file mode 100644 index 0000000..c309e8d Binary files /dev/null and b/MDBSocials/MDBSocials/MDBSocialsUITests/.DS_Store differ diff --git a/MDBSocials/MDBSocials/MDBSocialsUITests/Info.plist b/MDBSocials/MDBSocials/MDBSocialsUITests/Info.plist new file mode 100644 index 0000000..6c6c23c --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocialsUITests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/MDBSocials/MDBSocials/MDBSocialsUITests/MDBSocialsUITests.swift b/MDBSocials/MDBSocials/MDBSocialsUITests/MDBSocialsUITests.swift new file mode 100644 index 0000000..df61a3b --- /dev/null +++ b/MDBSocials/MDBSocials/MDBSocialsUITests/MDBSocialsUITests.swift @@ -0,0 +1,36 @@ +// +// MDBSocialsUITests.swift +// MDBSocialsUITests +// +// Created by Mohit Katyal on 10/2/16. +// Copyright © 2016 Mohit Katyal. All rights reserved. +// + +import XCTest + +class MDBSocialsUITests: XCTestCase { + + override func setUp() { + super.setUp() + + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. + XCUIApplication().launch() + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + +} diff --git a/MDBSocials/Podfile b/MDBSocials/Podfile new file mode 100644 index 0000000..a3d044c --- /dev/null +++ b/MDBSocials/Podfile @@ -0,0 +1,20 @@ +platform :ios, '9.0' +use_frameworks! +project ‘MDBSocials/MDBSocials.xcodeproj' + +target “MDBSocials” do + +pod 'Firebase/Core' +pod 'Firebase/AdMob' +pod 'Firebase/Messaging' +pod 'Firebase/Database' +#pod 'Firebase/Invites' +pod 'Firebase/DynamicLinks' +pod 'Firebase/Crash' +pod 'Firebase/RemoteConfig' +pod 'Firebase/Auth' +pod 'Firebase/AppIndexing' +pod 'Firebase/Storage' + +end + diff --git a/MDBSocials/Podfile.lock b/MDBSocials/Podfile.lock new file mode 100644 index 0000000..bf609b9 --- /dev/null +++ b/MDBSocials/Podfile.lock @@ -0,0 +1,118 @@ +PODS: + - Firebase/AdMob (3.7.1): + - Firebase/Core + - Google-Mobile-Ads-SDK (= 7.12.1) + - Firebase/AppIndexing (3.7.1): + - Firebase/Core + - FirebaseAppIndexing (= 1.2.0) + - Firebase/Auth (3.7.1): + - Firebase/Core + - FirebaseAuth (= 3.0.5) + - Firebase/Core (3.7.1): + - FirebaseAnalytics (= 3.4.4) + - FirebaseCore (= 3.4.3) + - Firebase/Crash (3.7.1): + - Firebase/Core + - FirebaseCrash (= 1.0.7) + - Firebase/Database (3.7.1): + - Firebase/Core + - FirebaseDatabase (= 3.0.3) + - Firebase/DynamicLinks (3.7.1): + - Firebase/Core + - FirebaseDynamicLinks (= 1.3.0) + - Firebase/Messaging (3.7.1): + - Firebase/Core + - FirebaseMessaging (= 1.2.0) + - Firebase/RemoteConfig (3.7.1): + - Firebase/Core + - FirebaseRemoteConfig (= 1.3.0) + - Firebase/Storage (3.7.1): + - Firebase/Core + - FirebaseStorage (= 1.0.3) + - FirebaseAnalytics (3.4.4): + - FirebaseCore (~> 3.4) + - FirebaseInstanceID (~> 1.0) + - GoogleInterchangeUtilities (~> 1.2) + - GoogleSymbolUtilities (~> 1.1) + - FirebaseAppIndexing (1.2.0) + - FirebaseAuth (3.0.5): + - FirebaseAnalytics (~> 3.3) + - GoogleNetworkingUtilities (~> 1.2) + - GoogleUtilities (~> 1.2) + - FirebaseCore (3.4.3): + - GoogleInterchangeUtilities (~> 1.2) + - GoogleUtilities (~> 1.2) + - FirebaseCrash (1.0.7): + - FirebaseAnalytics (~> 3.2) + - FirebaseInstanceID (~> 1.0) + - GoogleInterchangeUtilities (~> 1.2) + - GoogleSymbolUtilities (~> 1.1) + - GoogleUtilities (~> 1.2) + - FirebaseDatabase (3.0.3): + - FirebaseAnalytics (~> 3.3) + - FirebaseDynamicLinks (1.3.0): + - FirebaseAnalytics (~> 3.4) + - FirebaseInstanceID (1.0.8) + - FirebaseMessaging (1.2.0): + - FirebaseAnalytics (~> 3.3) + - FirebaseInstanceID (~> 1.0) + - GoogleInterchangeUtilities (~> 1.2) + - GoogleIPhoneUtilities (~> 1.2) + - GoogleSymbolUtilities (~> 1.1) + - FirebaseRemoteConfig (1.3.0): + - FirebaseAnalytics (~> 3.3) + - FirebaseInstanceID (~> 1.0) + - GoogleInterchangeUtilities (~> 1.2) + - GoogleIPhoneUtilities (~> 1.2) + - GoogleSymbolUtilities (~> 1.1) + - GoogleUtilities (~> 1.2) + - FirebaseStorage (1.0.3): + - FirebaseAnalytics (~> 3.3) + - GoogleNetworkingUtilities (~> 1.2) + - Google-Mobile-Ads-SDK (7.12.1) + - GoogleInterchangeUtilities (1.2.2): + - GoogleSymbolUtilities (~> 1.1) + - GoogleIPhoneUtilities (1.2.1): + - GoogleSymbolUtilities (~> 1.0) + - GoogleUtilities (~> 1.0) + - GoogleNetworkingUtilities (1.2.2): + - GoogleSymbolUtilities (~> 1.1) + - GoogleSymbolUtilities (1.1.2) + - GoogleUtilities (1.3.2): + - GoogleSymbolUtilities (~> 1.1) + +DEPENDENCIES: + - Firebase/AdMob + - Firebase/AppIndexing + - Firebase/Auth + - Firebase/Core + - Firebase/Crash + - Firebase/Database + - Firebase/DynamicLinks + - Firebase/Messaging + - Firebase/RemoteConfig + - Firebase/Storage + +SPEC CHECKSUMS: + Firebase: be473484f0d515e72ffd04acf22f981773c23e58 + FirebaseAnalytics: 0533a00b681e08fd0b2cd0444b7ddf0ef9fd7a1a + FirebaseAppIndexing: d0fa52ce0ad13f4b5b2f09e4b47fb0dc2213f4e9 + FirebaseAuth: 75a062bbf2d3c97d1e6e55bbc110e13a6853e25d + FirebaseCore: 5a885548bbc5f0c410b04f8e9ac9d73ff1221907 + FirebaseCrash: 2efeb3715b76ac843b841529ce413efb67e5fd4d + FirebaseDatabase: 750a4a0fe18ef114318876fd654b2d9c671e0992 + FirebaseDynamicLinks: 860aa20fca5409c8278909de566c09720c51e572 + FirebaseInstanceID: ba1e640935235e5fac39dfa816fe7660e72e1a8a + FirebaseMessaging: 789d23fd796594dfb55dcf36cd325541df887c22 + FirebaseRemoteConfig: 981f45d4278281cfefa8f48a6f5c566f2c95ac5a + FirebaseStorage: 3992817bf405f5c1a4f8349678d22724cd0ef509 + Google-Mobile-Ads-SDK: 542eb24c1ce6c8fd5084ee9572fd9dcd2d06065a + GoogleInterchangeUtilities: d5bc4d88d5b661ab72f9d70c58d02ca8c27ad1f7 + GoogleIPhoneUtilities: 63f25e93a3ddcb66884d182aab3a660d98f1479b + GoogleNetworkingUtilities: 3edd3a8161347494f2da60ea0deddc8a472d94cb + GoogleSymbolUtilities: 631ee17048aa5e9ab133470d768ea997a5ef9b96 + GoogleUtilities: 8bbc733218aad26306f9d4a253823986110e3358 + +PODFILE CHECKSUM: 9ebe0a33d0e492114208487e441249eb8cdfd127 + +COCOAPODS: 1.1.0.rc.3 diff --git a/MDBSocials/Pods/.DS_Store b/MDBSocials/Pods/.DS_Store new file mode 100644 index 0000000..201bac0 Binary files /dev/null and b/MDBSocials/Pods/.DS_Store differ diff --git a/MDBSocials/Pods/Firebase/Core/Sources/Firebase.h b/MDBSocials/Pods/Firebase/Core/Sources/Firebase.h new file mode 100755 index 0000000..90798a6 --- /dev/null +++ b/MDBSocials/Pods/Firebase/Core/Sources/Firebase.h @@ -0,0 +1,52 @@ +#import +#import + +#if !defined(__has_include) + #error "Firebase.h won't import anything if your compiler doesn't support __has_include. Please \ + import the headers individually." +#else + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + + #if __has_include() + #import + #endif + +#endif // defined(__has_include) diff --git a/MDBSocials/Pods/Firebase/Core/Sources/module.modulemap b/MDBSocials/Pods/Firebase/Core/Sources/module.modulemap new file mode 100755 index 0000000..3685b54 --- /dev/null +++ b/MDBSocials/Pods/Firebase/Core/Sources/module.modulemap @@ -0,0 +1,4 @@ +module Firebase { + export * + header "Firebase.h" +} \ No newline at end of file diff --git a/MDBSocials/Pods/Firebase/README.md b/MDBSocials/Pods/Firebase/README.md new file mode 100755 index 0000000..bfc5419 --- /dev/null +++ b/MDBSocials/Pods/Firebase/README.md @@ -0,0 +1,76 @@ +# Firebase APIs for iOS + +Simplify your iOS development, grow your user base, and monetize more +effectively with Firebase services. + +Much more information can be found at [https://firebase.google.com](https://firebase.google.com). + +## Install a Firebase SDK using CocoaPods + +Firebase distributes several iOS specific APIs and SDKs via CocoaPods. +You can install the CocoaPods tool on OS X by running the following command from +the terminal. Detailed information is available in the [Getting Started +guide](https://guides.cocoapods.org/using/getting-started.html#getting-started). + +``` +$ sudo gem install cocoapods +``` + +## Try out an SDK + +You can try any of the SDKs with `pod try`. Run the following command and select +the SDK you are interested in when prompted: + +``` +$ pod try Firebase +``` + +Note that some SDKs may require credentials. More information is available in +the SDK-specific documentation at [https://firebase.google.com/docs/](https://firebase.google.com/docs/). + +## Add a Firebase SDK to your iOS app + +CocoaPods is used to install and manage dependencies in existing Xcode projects. + +1. Create an Xcode project, and save it to your local machine. +2. Create a file named `Podfile` in your project directory. This file defines + your project's dependencies, and is commonly referred to as a Podspec. +3. Open `Podfile`, and add your dependencies. A simple Podspec is shown here: + + ``` + platform :ios, '7.0' + pod 'Firebase' + ``` + +4. Save the file. +5. Open a terminal and `cd` to the directory containing the Podfile. + + ``` + $ cd /project/ + ``` + +6. Run the `pod install` command. This will install the SDKs specified in the + Podspec, along with any dependencies they may have. + + ``` + $ pod install + ``` + +7. Open your app's `.xcworkspace` file to launch Xcode. + Use this file for all development on your app. +8. You can also install other Firebase SDKs by adding the subspecs in the + Podfile. + + ``` + pod 'Firebase/AdMob' + pod 'Firebase/Analytics' + pod 'Firebase/AppIndexing' + pod 'Firebase/Auth' + pod 'Firebase/Crash' + pod 'Firebase/Database' + pod 'Firebase/DynamicLinks' + pod 'Firebase/Invites' + pod 'Firebase/Messaging' + pod 'Firebase/RemoteConfig' + pod 'Firebase/Storage' + ``` diff --git a/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/FirebaseAnalytics b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/FirebaseAnalytics new file mode 100755 index 0000000..048c8d1 Binary files /dev/null and b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/FirebaseAnalytics differ diff --git a/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h new file mode 100755 index 0000000..e3ff4c1 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics+AppDelegate.h @@ -0,0 +1,57 @@ +#import + +#import "FIRAnalytics.h" + +/** + * Provides App Delegate handlers to be used in your App Delegate. + * + * To save time integrating Firebase Analytics in an application, Firebase Analytics does not + * require delegation implementation from the AppDelegate. Instead this is automatically done by + * Firebase Analytics. Should you choose instead to delegate manually, you can turn off the App + * Delegate Proxy by adding FirebaseAppDelegateProxyEnabled into your app's Info.plist and setting + * it to NO, and adding the methods in this category to corresponding delegation handlers. + * + * To handle Universal Links, you must return YES in + * [UIApplicationDelegate application:didFinishLaunchingWithOptions:]. + */ +@interface FIRAnalytics (AppDelegate) + +/** + * Handles events related to a URL session that are waiting to be processed. + * + * For optimal use of Firebase Analytics, call this method from the + * [UIApplicationDelegate application:handleEventsForBackgroundURLSession:completionHandler] + * method of the app delegate in your app. + * + * @param identifier The identifier of the URL session requiring attention. + * @param completionHandler The completion handler to call when you finish processing the events. + * Calling this completion handler lets the system know that your app's user interface is + * updated and a new snapshot can be taken. + */ ++ (void)handleEventsForBackgroundURLSession:(NSString *)identifier + completionHandler:(void (^)(void))completionHandler; + +/** + * Handles the event when the app is launched by a URL. + * + * Call this method from [UIApplicationDelegate application:openURL:options:] (on iOS 9.0 and + * above), or [UIApplicationDelegate application:openURL:sourceApplication:annotation:] (on iOS 8.x + * and below) in your app. + * + * @param url The URL resource to open. This resource can be a network resource or a file. + */ ++ (void)handleOpenURL:(NSURL *)url; + +/** + * Handles the event when the app receives data associated with user activity that includes a + * Universal Link (on iOS 9.0 and above). + * + * Call this method from [UIApplication continueUserActivity:restorationHandler:] in your app + * delegate (on iOS 9.0 and above). + * + * @param userActivity The activity object containing the data associated with the task the user + * was performing. + */ ++ (void)handleUserActivity:(id)userActivity; + +@end diff --git a/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h new file mode 100755 index 0000000..43ee86e --- /dev/null +++ b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h @@ -0,0 +1,71 @@ +#import + +#import "FIREventNames.h" +#import "FIRParameterNames.h" +#import "FIRUserPropertyNames.h" + +/// The top level Firebase Analytics singleton that provides methods for logging events and setting +/// user properties. See the developer guides for general +/// information on using Firebase Analytics in your apps. +@interface FIRAnalytics : NSObject + +/// Logs an app event. The event can have up to 25 parameters. Events with the same name must have +/// the same parameters. Up to 500 event names are supported. Using predefined events and/or +/// parameters is recommended for optimal reporting. +/// +/// The following event names are reserved and cannot be used: +///
    +///
  • app_clear_data
  • +///
  • app_remove
  • +///
  • app_update
  • +///
  • error
  • +///
  • first_open
  • +///
  • in_app_purchase
  • +///
  • notification_dismiss
  • +///
  • notification_foreground
  • +///
  • notification_open
  • +///
  • notification_receive
  • +///
  • os_update
  • +///
  • session_start
  • +///
  • user_engagement
  • +///
+/// +/// @param name The name of the event. Should contain 1 to 32 alphanumeric characters or +/// underscores. The name must start with an alphabetic character. Some event names are +/// reserved. See FIREventNames.h for the list of reserved event names. The "firebase_" prefix +/// is reserved and should not be used. Note that event names are case-sensitive and that +/// logging two events whose names differ only in case will result in two distinct events. +/// @param parameters The dictionary of event parameters. Passing nil indicates that the event has +/// no parameters. Parameter names can be up to 24 characters long and must start with an +/// alphabetic character and contain only alphanumeric characters and underscores. Only NSString +/// and NSNumber (signed 64-bit integer and 64-bit floating-point number) parameter types are +/// supported. NSString parameter values can be up to 36 characters long. The "firebase_" prefix +/// is reserved and should not be used for parameter names. ++ (void)logEventWithName:(nonnull NSString *)name + parameters:(nullable NSDictionary *)parameters; + +/// Sets a user property to a given value. Up to 25 user property names are supported. Once set, +/// user property values persist throughout the app lifecycle and across sessions. +/// +/// The following user property names are reserved and cannot be used: +///
    +///
  • first_open_time
  • +///
  • last_deep_link_referrer
  • +///
  • user_id
  • +///
+/// +/// @param value The value of the user property. Values can be up to 36 characters long. Setting the +/// value to nil removes the user property. +/// @param name The name of the user property to set. Should contain 1 to 24 alphanumeric characters +/// or underscores and must start with an alphabetic character. The "firebase_" prefix is +/// reserved and should not be used for user property names. ++ (void)setUserPropertyString:(nullable NSString *)value forName:(nonnull NSString *)name; + +/// Sets the user ID property. This feature must be used in accordance with +/// Google's Privacy Policy +/// +/// @param userID The user ID to ascribe to the user of this app on this device, which must be +/// non-empty and no more than 36 characters long. Setting userID to nil removes the user ID. ++ (void)setUserID:(nullable NSString *)userID; + +@end diff --git a/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalyticsConfiguration.h b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalyticsConfiguration.h new file mode 100755 index 0000000..dc227a4 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRAnalyticsConfiguration.h @@ -0,0 +1 @@ +#import diff --git a/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRApp.h b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRApp.h new file mode 100755 index 0000000..de24da1 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRApp.h @@ -0,0 +1 @@ +#import diff --git a/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRConfiguration.h b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRConfiguration.h new file mode 100755 index 0000000..be2ff7b --- /dev/null +++ b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRConfiguration.h @@ -0,0 +1 @@ +#import diff --git a/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIREventNames.h b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIREventNames.h new file mode 100755 index 0000000..f68967b --- /dev/null +++ b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIREventNames.h @@ -0,0 +1,321 @@ +/// @file FIREventNames.h +/// +/// Predefined event names. +/// +/// An Event is an important occurrence in your app that you want to measure. You can report up to +/// 500 different types of Events per app and you can associate up to 25 unique parameters with each +/// Event type. Some common events are suggested below, but you may also choose to specify custom +/// Event types that are associated with your specific app. Each event type is identified by a +/// unique name. Event names can be up to 32 characters long, may only contain alphanumeric +/// characters and underscores ("_"), and must start with an alphabetic character. The "firebase_" +/// prefix is reserved and should not be used. + +/// Add Payment Info event. This event signifies that a user has submitted their payment information +/// to your app. +static NSString *const kFIREventAddPaymentInfo = @"add_payment_info"; + +/// E-Commerce Add To Cart event. This event signifies that an item was added to a cart for +/// purchase. Add this event to a funnel with kFIREventEcommercePurchase to gauge the effectiveness +/// of your checkout process. Note: If you supply the {@link kFIRParameterValue} parameter, you must +/// also supply the {@link kFIRParameterCurrency} parameter so that revenue metrics can be computed +/// accurately. Params: +/// +///
    +///
  • {@link kFIRParameterQuantity} (signed 64-bit integer as NSNumber)
  • +///
  • {@link kFIRParameterItemID} (NSString)
  • +///
  • {@link kFIRParameterItemName} (NSString)
  • +///
  • {@link kFIRParameterItemCategory} (NSString)
  • +///
  • {@link kFIRParameterItemLocationID} (NSString) (optional)
  • +///
  • {@link kFIRParameterPrice} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterOrigin} (NSString) (optional)
  • +///
  • {@link kFIRParameterDestination} (NSString) (optional)
  • +///
  • {@link kFIRParameterStartDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterEndDate} (NSString) (optional)
  • +///
+static NSString *const kFIREventAddToCart = @"add_to_cart"; + +/// E-Commerce Add To Wishlist event. This event signifies that an item was added to a wishlist. +/// Use this event to identify popular gift items in your app. Note: If you supply the +/// {@link kFIRParameterValue} parameter, you must also supply the {@link kFIRParameterCurrency} +/// parameter so that revenue metrics can be computed accurately. Params: +/// +///
    +///
  • {@link kFIRParameterQuantity} (signed 64-bit integer as NSNumber)
  • +///
  • {@link kFIRParameterItemID} (NSString)
  • +///
  • {@link kFIRParameterItemName} (NSString)
  • +///
  • {@link kFIRParameterItemCategory} (NSString)
  • +///
  • {@link kFIRParameterItemLocationID} (NSString) (optional)
  • +///
  • {@link kFIRParameterPrice} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventAddToWishlist = @"add_to_wishlist"; + +/// App Open event. By logging this event when an App is moved to the foreground, developers can +/// understand how often users leave and return during the course of a Session. Although Sessions +/// are automatically reported, this event can provide further clarification around the continuous +/// engagement of app-users. +static NSString *const kFIREventAppOpen = @"app_open"; + +/// E-Commerce Begin Checkout event. This event signifies that a user has begun the process of +/// checking out. Add this event to a funnel with your kFIREventEcommercePurchase event to gauge the +/// effectiveness of your checkout process. Note: If you supply the {@link kFIRParameterValue} +/// parameter, you must also supply the {@link kFIRParameterCurrency} parameter so that revenue +/// metrics can be computed accurately. Params: +/// +///
    +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterTransactionID} (NSString) (optional)
  • +///
  • {@link kFIRParameterStartDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterEndDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterNumberOfNights} (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • {@link kFIRParameterNumberOfRooms} (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • {@link kFIRParameterNumberOfPassengers} (signed 64-bit integer as NSNumber) (optional) +/// for travel bookings
  • +///
  • {@link kFIRParameterOrigin} (NSString) (optional)
  • +///
  • {@link kFIRParameterDestination} (NSString) (optional)
  • +///
  • {@link kFIRParameterTravelClass} (NSString) (optional) for travel bookings
  • +///
+static NSString *const kFIREventBeginCheckout = @"begin_checkout"; + +/// Earn Virtual Currency event. This event tracks the awarding of virtual currency in your app. Log +/// this along with {@link kFIREventSpendVirtualCurrency} to better understand your virtual economy. +/// Params: +/// +///
    +///
  • {@link kFIRParameterVirtualCurrencyName} (NSString)
  • +///
  • {@link kFIRParameterValue} (signed 64-bit integer or double as NSNumber)
  • +///
+static NSString *const kFIREventEarnVirtualCurrency = @"earn_virtual_currency"; + +/// E-Commerce Purchase event. This event signifies that an item was purchased by a user. Note: +/// This is different from the in-app purchase event, which is reported automatically for App +/// Store-based apps. Note: If you supply the {@link kFIRParameterValue} parameter, you must also +/// supply the {@link kFIRParameterCurrency} parameter so that revenue metrics can be computed +/// accurately. Params: +/// +///
    +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterTransactionID} (NSString) (optional)
  • +///
  • {@link kFIRParameterTax} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterShipping} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCoupon} (NSString) (optional)
  • +///
  • {@link kFIRParameterLocation} (NSString) (optional)
  • +///
  • {@link kFIRParameterStartDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterEndDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterNumberOfNights} (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • {@link kFIRParameterNumberOfRooms} (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • {@link kFIRParameterNumberOfPassengers} (signed 64-bit integer as NSNumber) (optional) +/// for travel bookings
  • +///
  • {@link kFIRParameterOrigin} (NSString) (optional)
  • +///
  • {@link kFIRParameterDestination} (NSString) (optional)
  • +///
  • {@link kFIRParameterTravelClass} (NSString) (optional) for travel bookings
  • +///
+static NSString *const kFIREventEcommercePurchase = @"ecommerce_purchase"; + +/// Generate Lead event. Log this event when a lead has been generated in the app to understand the +/// efficacy of your install and re-engagement campaigns. Note: If you supply the +/// {@link kFIRParameterValue} parameter, you must also supply the {@link kFIRParameterCurrency} +/// parameter so that revenue metrics can be computed accurately. Params: +/// +///
    +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventGenerateLead = @"generate_lead"; + +/// Join Group event. Log this event when a user joins a group such as a guild, team or family. Use +/// this event to analyze how popular certain groups or social features are in your app. Params: +/// +///
    +///
  • {@link kFIRParameterGroupID} (NSString)
  • +///
+static NSString *const kFIREventJoinGroup = @"join_group"; + +/// Level Up event. This event signifies that a player has leveled up in your gaming app. It can +/// help you gauge the level distribution of your userbase and help you identify certain levels that +/// are difficult to pass. Params: +/// +///
    +///
  • {@link kFIRParameterLevel} (signed 64-bit integer as NSNumber)
  • +///
  • {@link kFIRParameterCharacter} (NSString) (optional)
  • +///
+static NSString *const kFIREventLevelUp = @"level_up"; + +/// Login event. Apps with a login feature can report this event to signify that a user has logged +/// in. +static NSString *const kFIREventLogin = @"login"; + +/// Post Score event. Log this event when the user posts a score in your gaming app. This event can +/// help you understand how users are actually performing in your game and it can help you correlate +/// high scores with certain audiences or behaviors. Params: +/// +///
    +///
  • {@link kFIRParameterScore} (signed 64-bit integer as NSNumber)
  • +///
  • {@link kFIRParameterLevel} (signed 64-bit integer as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCharacter} (NSString) (optional)
  • +///
+static NSString *const kFIREventPostScore = @"post_score"; + +/// Present Offer event. This event signifies that the app has presented a purchase offer to a user. +/// Add this event to a funnel with the kFIREventAddToCart and kFIREventEcommercePurchase to gauge +/// your conversion process. Note: If you supply the {@link kFIRParameterValue} parameter, you must +/// also supply the {@link kFIRParameterCurrency} parameter so that revenue metrics can be computed +/// accurately. Params: +/// +///
    +///
  • {@link kFIRParameterQuantity} (signed 64-bit integer as NSNumber)
  • +///
  • {@link kFIRParameterItemID} (NSString)
  • +///
  • {@link kFIRParameterItemName} (NSString)
  • +///
  • {@link kFIRParameterItemCategory} (NSString)
  • +///
  • {@link kFIRParameterItemLocationID} (NSString) (optional)
  • +///
  • {@link kFIRParameterPrice} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
+static NSString *const kFIREventPresentOffer = @"present_offer"; + +/// E-Commerce Purchase Refund event. This event signifies that an item purchase was refunded. +/// Note: If you supply the {@link kFIRParameterValue} parameter, you must also supply the +/// {@link kFIRParameterCurrency} parameter so that revenue metrics can be computed accurately. +/// Params: +/// +///
    +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterTransactionID} (NSString) (optional)
  • +///
+static NSString *const kFIREventPurchaseRefund = @"purchase_refund"; + +/// Search event. Apps that support search features can use this event to contextualize search +/// operations by supplying the appropriate, corresponding parameters. This event can help you +/// identify the most popular content in your app. Params: +/// +///
    +///
  • {@link kFIRParameterSearchTerm} (NSString)
  • +///
  • {@link kFIRParameterStartDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterEndDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterNumberOfNights} (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • {@link kFIRParameterNumberOfRooms} (signed 64-bit integer as NSNumber) (optional) for +/// hotel bookings
  • +///
  • {@link kFIRParameterNumberOfPassengers} (signed 64-bit integer as NSNumber) (optional) +/// for travel bookings
  • +///
  • {@link kFIRParameterOrigin} (NSString) (optional)
  • +///
  • {@link kFIRParameterDestination} (NSString) (optional)
  • +///
  • {@link kFIRParameterTravelClass} (NSString) (optional) for travel bookings
  • +///
+static NSString *const kFIREventSearch = @"search"; + +/// Select Content event. This general purpose event signifies that a user has selected some content +/// of a certain type in an app. The content can be any object in your app. This event can help you +/// identify popular content and categories of content in your app. Params: +/// +///
    +///
  • {@link kFIRParameterContentType} (NSString)
  • +///
  • {@link kFIRParameterItemID} (NSString)
  • +///
+static NSString *const kFIREventSelectContent = @"select_content"; + +/// Share event. Apps with social features can log the Share event to identify the most viral +/// content. Params: +/// +///
    +///
  • {@link kFIRParameterContentType} (NSString)
  • +///
  • {@link kFIRParameterItemID} (NSString)
  • +///
+static NSString *const kFIREventShare = @"share"; + +/// Sign Up event. This event indicates that a user has signed up for an account in your app. The +/// parameter signifies the method by which the user signed up. Use this event to understand the +/// different behaviors between logged in and logged out users. Params: +/// +///
    +///
  • {@link kFIRParameterSignUpMethod} (NSString)
  • +///
+static NSString *const kFIREventSignUp = @"sign_up"; + +/// Spend Virtual Currency event. This event tracks the sale of virtual goods in your app and can +/// help you identify which virtual goods are the most popular objects of purchase. Params: +/// +///
    +///
  • {@link kFIRParameterItemName} (NSString)
  • +///
  • {@link kFIRParameterVirtualCurrencyName} (NSString)
  • +///
  • {@link kFIRParameterValue} (signed 64-bit integer or double as NSNumber)
  • +///
+static NSString *const kFIREventSpendVirtualCurrency = @"spend_virtual_currency"; + +/// Tutorial Begin event. This event signifies the start of the on-boarding process in your app. Use +/// this in a funnel with kFIREventTutorialComplete to understand how many users complete this +/// process and move on to the full app experience. +static NSString *const kFIREventTutorialBegin = @"tutorial_begin"; + +/// Tutorial End event. Use this event to signify the user's completion of your app's on-boarding +/// process. Add this to a funnel with kFIREventTutorialBegin to gauge the completion rate of your +/// on-boarding process. +static NSString *const kFIREventTutorialComplete = @"tutorial_complete"; + +/// Unlock Achievement event. Log this event when the user has unlocked an achievement in your +/// game. Since achievements generally represent the breadth of a gaming experience, this event can +/// help you understand how many users are experiencing all that your game has to offer. Params: +/// +///
    +///
  • {@link kFIRParameterAchievementID} (NSString)
  • +///
+static NSString *const kFIREventUnlockAchievement = @"unlock_achievement"; + +/// View Item event. This event signifies that some content was shown to the user. This content may +/// be a product, a webpage or just a simple image or text. Use the appropriate parameters to +/// contextualize the event. Use this event to discover the most popular items viewed in your app. +/// Note: If you supply the {@link kFIRParameterValue} parameter, you must also supply the +/// {@link kFIRParameterCurrency} parameter so that revenue metrics can be computed accurately. +/// Params: +/// +///
    +///
  • {@link kFIRParameterItemID} (NSString)
  • +///
  • {@link kFIRParameterItemName} (NSString)
  • +///
  • {@link kFIRParameterItemCategory} (NSString)
  • +///
  • {@link kFIRParameterItemLocationID} (NSString) (optional)
  • +///
  • {@link kFIRParameterPrice} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterQuantity} (signed 64-bit integer as NSNumber) (optional)
  • +///
  • {@link kFIRParameterCurrency} (NSString) (optional)
  • +///
  • {@link kFIRParameterValue} (double as NSNumber) (optional)
  • +///
  • {@link kFIRParameterStartDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterEndDate} (NSString) (optional)
  • +///
  • {@link kFIRParameterFlightNumber} (NSString) (optional) for travel bookings
  • +///
  • {@link kFIRParameterNumberOfPassengers} (signed 64-bit integer as NSNumber) (optional) +/// for travel bookings
  • +///
  • {@link kFIRParameterNumberOfNights} (signed 64-bit integer as NSNumber) (optional) for +/// travel bookings
  • +///
  • {@link kFIRParameterNumberOfRooms} (signed 64-bit integer as NSNumber) (optional) for +/// travel bookings
  • +///
  • {@link kFIRParameterOrigin} (NSString) (optional)
  • +///
  • {@link kFIRParameterDestination} (NSString) (optional)
  • +///
  • {@link kFIRParameterSearchTerm} (NSString) (optional) for travel bookings
  • +///
  • {@link kFIRParameterTravelClass} (NSString) (optional) for travel bookings
  • +///
+static NSString *const kFIREventViewItem = @"view_item"; + +/// View Item List event. Log this event when the user has been presented with a list of items of a +/// certain category. Params: +/// +///
    +///
  • {@link kFIRParameterItemCategory} (NSString)
  • +///
+static NSString *const kFIREventViewItemList = @"view_item_list"; + +/// View Search Results event. Log this event when the user has been presented with the results of a +/// search. Params: +/// +///
    +///
  • {@link kFIRParameterSearchTerm} (NSString)
  • +///
+static NSString *const kFIREventViewSearchResults = @"view_search_results"; diff --git a/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIROptions.h b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIROptions.h new file mode 100755 index 0000000..126824b --- /dev/null +++ b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIROptions.h @@ -0,0 +1 @@ +#import diff --git a/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRParameterNames.h b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRParameterNames.h new file mode 100755 index 0000000..42c0c5e --- /dev/null +++ b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRParameterNames.h @@ -0,0 +1,304 @@ +/// @file FIRParameterNames.h +/// +/// Predefined event parameter names. +/// +/// Params supply information that contextualize Events. You can associate up to 25 unique Params +/// with each Event type. Some Params are suggested below for certain common Events, but you are +/// not limited to these. You may supply extra Params for suggested Events or custom Params for +/// Custom events. Param names can be up to 24 characters long, may only contain alphanumeric +/// characters and underscores ("_"), and must start with an alphabetic character. Param values can +/// be up to 36 characters long. The "firebase_" prefix is reserved and should not be used. + +/// Game achievement ID (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterAchievementID : @"10_matches_won",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterAchievementID = @"achievement_id"; + +/// Character used in game (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCharacter : @"beat_boss",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterCharacter = @"character"; + +/// Type of content selected (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterContentType : @"news article",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterContentType = @"content_type"; + +/// Coupon code for a purchasable item (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCoupon : @"zz123",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterCoupon = @"coupon"; + +/// Purchase currency in 3-letter +/// ISO_4217 format (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterCurrency : @"USD",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterCurrency = @"currency"; + +/// Flight or Travel destination (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterDestination : @"Mountain View, CA",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterDestination = @"destination"; + +/// The arrival date, check-out date or rental end date for the item. This should be in +/// YYYY-MM-DD format (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterEndDate : @"2015-09-14",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterEndDate = @"end_date"; + +/// Flight number for travel events (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterFlightNumber : @"ZZ800",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterFlightNumber = @"flight_number"; + +/// Group/clan/guild ID (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterGroupID : @"g1",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterGroupID = @"group_id"; + +/// Item category (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemCategory : @"t-shirts",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemCategory = @"item_category"; + +/// Item ID (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemID : @"p7654",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemID = @"item_id"; + +/// The Google Place ID (NSString) that +/// corresponds to the associated item. Alternatively, you can supply your own custom Location ID. +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemLocationID : @"ChIJiyj437sx3YAR9kUWC8QkLzQ",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemLocationID = @"item_location_id"; + +/// Item name (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterItemName : @"abc",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterItemName = @"item_name"; + +/// Level in game (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterLevel : @(42),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterLevel = @"level"; + +/// Location (NSString). The Google Place ID +/// that corresponds to the associated event. Alternatively, you can supply your own custom +/// Location ID. +///
+///     NSDictionary *params = @{
+///       kFIRParameterLocation : @"ChIJiyj437sx3YAR9kUWC8QkLzQ",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterLocation = @"location"; + +/// Number of nights staying at hotel (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterNumberOfNights : @(3),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterNumberOfNights = @"number_of_nights"; + +/// Number of passengers traveling (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterNumberOfPassengers : @(11),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterNumberOfPassengers = @"number_of_passengers"; + +/// Number of rooms for travel events (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterNumberOfRooms : @(2),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterNumberOfRooms = @"number_of_rooms"; + +/// Flight or Travel origin (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterOrigin : @"Mountain View, CA",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterOrigin = @"origin"; + +/// Purchase price (double as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterPrice : @(1.0),
+///       kFIRParameterCurrency : @"USD",  // e.g. $1.00 USD
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterPrice = @"price"; + +/// Purchase quantity (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterQuantity : @(1),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterQuantity = @"quantity"; + +/// Score in game (signed 64-bit integer as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterScore : @(4200),
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterScore = @"score"; + +/// The search string/keywords used (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterSearchTerm : @"periodic table",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterSearchTerm = @"search_term"; + +/// Shipping cost (double as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterShipping : @(9.50),
+///       kFIRParameterCurrency : @"USD",  // e.g. $9.50 USD
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterShipping = @"shipping"; + +/// Sign up method (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterSignUpMethod : @"google",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterSignUpMethod = @"sign_up_method"; + +/// The departure date, check-in date or rental start date for the item. This should be in +/// YYYY-MM-DD format (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterStartDate : @"2015-09-14",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterStartDate = @"start_date"; + +/// Tax amount (double as NSNumber). +///
+///     NSDictionary *params = @{
+///       kFIRParameterTax : @(1.0),
+///       kFIRParameterCurrency : @"USD",  // e.g. $1.00 USD
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterTax = @"tax"; + +/// A single ID for a ecommerce group transaction (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterTransactionID : @"ab7236dd9823",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterTransactionID = @"transaction_id"; + +/// Travel class (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterTravelClass : @"business",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterTravelClass = @"travel_class"; + +/// A context-specific numeric value which is accumulated automatically for each event type. This is +/// a general purpose parameter that is useful for accumulating a key metric that pertains to an +/// event. Examples include revenue, distance, time and points. Value should be specified as signed +/// 64-bit integer or double as NSNumber. Notes: Currency-related values should be supplied using +/// double as NSNumber and must be accompanied by a {@link kFIRParameterCurrency} parameter. The +/// valid range of accumulated values is [-9,223,372,036,854.77, 9,223,372,036,854.77]. +///
+///     NSDictionary *params = @{
+///       kFIRParameterValue : @(3.99),
+///       kFIRParameterCurrency : @"USD",  // e.g. $3.99 USD
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterValue = @"value"; + +/// Name of virtual currency type (NSString). +///
+///     NSDictionary *params = @{
+///       kFIRParameterVirtualCurrencyName : @"virtual_currency_name",
+///       // ...
+///     };
+/// 
+static NSString *const kFIRParameterVirtualCurrencyName = @"virtual_currency_name"; diff --git a/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h new file mode 100755 index 0000000..54cf1c2 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FIRUserPropertyNames.h @@ -0,0 +1,13 @@ +/// @file FIRUserPropertyNames.h +/// +/// Predefined user property names. +/// +/// A UserProperty is an attribute that describes the app-user. By supplying UserProperties, you can +/// later analyze different behaviors of various segments of your userbase. You may supply up to 25 +/// unique UserProperties per app, and you can use the name and value of your choosing for each one. +/// UserProperty names can be up to 24 characters long, may only contain alphanumeric characters and +/// underscores ("_"), and must start with an alphabetic character. UserProperty values can be up to +/// 36 characters long. The "firebase_" prefix is reserved and should not be used. + +/// The method used to sign in. For example, "google", "facebook" or "twitter". +static NSString *const kFIRUserPropertySignUpMethod = @"sign_up_method"; diff --git a/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h new file mode 100755 index 0000000..02667b3 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Headers/FirebaseAnalytics.h @@ -0,0 +1,11 @@ +// Generated umbrella header for FirebaseAnalytics. + +#import "FIRAnalytics+AppDelegate.h" +#import "FIRAnalytics.h" +#import "FIRAnalyticsConfiguration.h" +#import "FIRApp.h" +#import "FIRConfiguration.h" +#import "FIREventNames.h" +#import "FIROptions.h" +#import "FIRParameterNames.h" +#import "FIRUserPropertyNames.h" diff --git a/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Modules/module.modulemap b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Modules/module.modulemap new file mode 100755 index 0000000..e54b5ea --- /dev/null +++ b/MDBSocials/Pods/FirebaseAnalytics/Frameworks/frameworks/FirebaseAnalytics.framework/Modules/module.modulemap @@ -0,0 +1,23 @@ +framework module FirebaseAnalytics { + + export * + + umbrella header "FirebaseAnalytics.h" + + header "FIRAnalytics+AppDelegate.h" + header "FIRAnalytics.h" + header "FIRAnalyticsConfiguration.h" + header "FIRApp.h" + header "FIRConfiguration.h" + header "FIREventNames.h" + header "FIROptions.h" + header "FIRParameterNames.h" + header "FIRUserPropertyNames.h" + + link framework "AddressBook" + link framework "StoreKit" + + link "c++" + link "sqlite3" + link "z" +} diff --git a/MDBSocials/Pods/FirebaseAppIndexing/Frameworks/frameworks/FirebaseAppIndexing.framework/FirebaseAppIndexing b/MDBSocials/Pods/FirebaseAppIndexing/Frameworks/frameworks/FirebaseAppIndexing.framework/FirebaseAppIndexing new file mode 100755 index 0000000..6accd94 Binary files /dev/null and b/MDBSocials/Pods/FirebaseAppIndexing/Frameworks/frameworks/FirebaseAppIndexing.framework/FirebaseAppIndexing differ diff --git a/MDBSocials/Pods/FirebaseAppIndexing/Frameworks/frameworks/FirebaseAppIndexing.framework/Headers/FIRAppIndexing.h b/MDBSocials/Pods/FirebaseAppIndexing/Frameworks/frameworks/FirebaseAppIndexing.framework/Headers/FIRAppIndexing.h new file mode 100755 index 0000000..0e92624 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAppIndexing/Frameworks/frameworks/FirebaseAppIndexing.framework/Headers/FIRAppIndexing.h @@ -0,0 +1,29 @@ +// +// FirebaseAppIndexing +// Firebase iOS SDK +// +// Copyright 2015 Google Inc. +// + +#import + +// This class is meant to register apps with Google for the purposes for App Indexing from +// Google Search. + +@interface FIRAppIndexing : NSObject + +/** + * @method sharedInstance + * @abstract Returns the singleton instance of FIRAppIndexing. + * @return The shared instance of FIRAppIndexing. + */ ++ (instancetype)sharedInstance; + +/** + * @method registerApp + * @abstract Registers an app with Google for App Indexing purposes. + * @param iTunesID The iTunes ID of the app. + */ +- (void)registerApp:(NSUInteger)iTunesID; + +@end diff --git a/MDBSocials/Pods/FirebaseAppIndexing/Frameworks/frameworks/FirebaseAppIndexing.framework/Headers/FirebaseAppIndexing.h b/MDBSocials/Pods/FirebaseAppIndexing/Frameworks/frameworks/FirebaseAppIndexing.framework/Headers/FirebaseAppIndexing.h new file mode 100755 index 0000000..2259567 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAppIndexing/Frameworks/frameworks/FirebaseAppIndexing.framework/Headers/FirebaseAppIndexing.h @@ -0,0 +1,7 @@ +// +// FirebaseAppIndexing.h +// +// Copyright 2015 Google Inc. +// + +#import "FIRAppIndexing.h" diff --git a/MDBSocials/Pods/FirebaseAppIndexing/Frameworks/frameworks/FirebaseAppIndexing.framework/Modules/module.modulemap b/MDBSocials/Pods/FirebaseAppIndexing/Frameworks/frameworks/FirebaseAppIndexing.framework/Modules/module.modulemap new file mode 100755 index 0000000..6a8c165 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAppIndexing/Frameworks/frameworks/FirebaseAppIndexing.framework/Modules/module.modulemap @@ -0,0 +1,10 @@ +framework module FirebaseAppIndexing { + + export * + + umbrella header "FirebaseAppIndexing.h" + + header "FIRAppIndexing.h" + + link framework "SafariServices" +} diff --git a/MDBSocials/Pods/FirebaseAuth/CHANGELOG.md b/MDBSocials/Pods/FirebaseAuth/CHANGELOG.md new file mode 100755 index 0000000..1d6aecf --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/CHANGELOG.md @@ -0,0 +1,19 @@ +# 2016-09-14 -- v3.0.5 +- Works around a keychain issue in iOS 10 simulator. +- Reports the correct error for invalid email when signing with email and + password. + +# 2016-07-18 -- v3.0.4 +- Fixes a race condition bug that could crash the app with an exception from + NSURLSession on iOS 9. + +# 2016-06-20 -- v3.0.3 +- Adds documentation for all possible errors returned by each method. +- Improves error handling and messages for a variety of error conditions. +- Whether or not an user is considered anonymous is now consistent with other + platforms. +- A saved signed in user is now siloed between different Firebase projects + within the same app. + +# 2016-05-18 -- v3.0.2 +- Initial public release. diff --git a/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/FirebaseAuth b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/FirebaseAuth new file mode 100755 index 0000000..52da9d9 Binary files /dev/null and b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/FirebaseAuth differ diff --git a/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRAuth.h b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRAuth.h new file mode 100755 index 0000000..d80b8ec --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRAuth.h @@ -0,0 +1,257 @@ +/** @file FIRAuth.h + @brief Firebase Auth SDK + @copyright Copyright 2015 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ + +#import + +#import + +@class FIRApp; +@class FIRAuth; +@class FIRAuthCredential; +@class FIRUser; +@protocol FIRAuthStateListener; + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRAuthStateDidChangeListenerHandle + @brief The type of handle returned by @c FIRAuth.addAuthStateDidChangeListener:. + */ +typedef id FIRAuthStateDidChangeListenerHandle; + +/** @typedef FIRAuthStateDidChangeListenerBlock + @brief The type of block which can be registered as a listener for auth state did change events. + @param auth The @c FIRAuth object on which state changes occurred. + @param user Optionally; the current signed in user, if any. + */ +typedef void(^FIRAuthStateDidChangeListenerBlock)(FIRAuth *auth, FIRUser *_Nullable user); + +/** @var FIRAuthStateDidChangeNotification + @brief The name of the @c NSNotificationCenter notification which is posted when the auth state + changes (for example, a new token has been produced, a user signs in or signs out). The + object parameter of the notification is the sender @c FIRAuth instance. + */ +extern NSString *const FIRAuthStateDidChangeNotification; + +/** @typedef FIRAuthResultCallback + @brief The type of block invoked when sign-in related events complete. + @param user Optionally; the signed in user, if any. + @param error Optionally; if an error occurs, this is the NSError object that describes the + problem. Set to nil otherwise. + */ +typedef void (^FIRAuthResultCallback)(FIRUser *_Nullable user, NSError *_Nullable error); + +/** @typedef FIRProviderQueryCallback + @brief The type of block invoked when a list of identity providers for a given email address is + requested. + @param providers Optionally; a list of provider identifiers, if any. + @see FIRGoogleAuthProviderID etc. + @param error Optionally; if an error occurs, this is the NSError object that describes the + problem. Set to nil otherwise. + */ +typedef void (^FIRProviderQueryCallback)(NSArray *_Nullable providers, + NSError *_Nullable error); + +/** @typedef FIRSendPasswordResetCallback + @brief The type of block invoked when initiating a password reset. + @param error Optionally; if an error occurs, this is the NSError object that describes the + problem. Set to nil otherwise. + */ +typedef void (^FIRSendPasswordResetCallback)(NSError *_Nullable error); + +/** @class FIRAuth + @brief Manages authentication for Firebase apps. + @remarks This class is thread-safe. + */ +@interface FIRAuth : NSObject + +/** @fn auth + @brief Gets the auth object for the default Firebase app. + @remarks Thread safe. + */ ++ (nullable FIRAuth *)auth NS_SWIFT_NAME(auth()); + +/** @fn authWithApp: + @brief Gets the auth object for a @c FIRApp. + @param app The @c FIRApp for which to retrieve the associated @c FIRAuth instance. + @return The @c FIRAuth instance associated with the given @c FIRApp. + */ ++ (nullable FIRAuth *)authWithApp:(FIRApp *)app; + +/** @property app + @brief Gets the @c FIRApp object that this auth object is connected to. + */ +@property(nonatomic, weak, readonly, nullable) FIRApp *app; + +/** @property currentUser + @brief Synchronously gets the cached current user, or null if there is none. + */ +@property(nonatomic, strong, readonly, nullable) FIRUser *currentUser; + +/** @fn init + @brief Please access auth instances using @c FIRAuth.auth and @c FIRAuth.authForApp:. + */ +- (nullable instancetype)init NS_UNAVAILABLE; + +/** @fn fetchProvidersForEmail:completion: + @brief Fetches the list of IdPs that can be used for signing in with the provided email address. + Useful for an "identifier-first" sign-in flow. + @param email The email address for which to obtain a list of identity providers. + @param completion Optionally; a block which is invoked when the list of providers for the + specified email address is ready or an error was encountered. Invoked asynchronously on the + main thread in the future. + @remarks Possible error codes: + - @c FIRAuthErrorCodeInvalidEmail - Indicates the email address is malformed. + - See @c FIRAuthErrors for a list of error codes that are common to all API methods. + */ +- (void)fetchProvidersForEmail:(NSString *)email + completion:(nullable FIRProviderQueryCallback)completion; + +/** @fn signInWithEmail:password:completion: + @brief Signs in using an email address and password. + @param email The user's email address. + @param password The user's password. + @param completion Optionally; a block which is invoked when the sign in flow finishes, or is + canceled. Invoked asynchronously on the main thread in the future. + @remarks Possible error codes: + - @c FIRAuthErrorCodeOperationNotAllowed Indicates that email and password accounts are not + enabled. Enable them in the Auth section of the Firebase console. + - @c FIRAuthErrorCodeUserDisabled Indicates the user's account is disabled. + - @c FIRAuthErrorCodeWrongPassword Indicates the user attempted sign in with an incorrect + password. + - @c FIRAuthErrorCodeInvalidEmail - Indicates the email address is malformed. + - See @c FIRAuthErrors for a list of error codes that are common to all API methods. + */ +- (void)signInWithEmail:(NSString *)email + password:(NSString *)password + completion:(nullable FIRAuthResultCallback)completion; + +/** @fn signInWithCredential:completion: + @brief Asynchronously signs in to Firebase with the given 3rd-party credentials (e.g. a Facebook + login Access Token, a Google ID Token/Access Token pair, etc.) + @param credential The credential supplied by the IdP. + @param completion Optionally; a block which is invoked when the sign in flow finishes, or is + canceled. Invoked asynchronously on the main thread in the future. + @remarks Possible error codes: + - @c FIRAuthErrorCodeInvalidCredential Indicates the supplied credential is invalid. This + could happen if it has expired or it is malformed. + - @c FIRAuthErrorCodeOperationNotAllowed Indicates that accounts with the identity provider + represented by the credential are not enabled. Enable them in the Auth section of the + Firebase console. + - @c FIRAuthErrorCodeEmailAlreadyInUse Indicates the email asserted by the credential + (e.g. the email in a Facebook access token) is already in use by an existing account, + that cannot be authenticated with this sign-in method. Call fetchProvidersForEmail for + this user’s email and then prompt them to sign in with any of the sign-in providers + returned. This error will only be thrown if the “One account per email address” + setting is enabled in the Firebase console, under Auth settings. - Please note that the + error code raised in this specific situation may not be the same on Web and Android. + - @c FIRAuthErrorCodeUserDisabled Indicates the user's account is disabled. + - @c FIRAuthErrorCodeWrongPassword Indicates the user attempted sign in with a incorrect + password, if credential is of the type EmailPasswordAuthCredential. + - @c FIRAuthErrorCodeInvalidEmail - Indicates the email address is malformed. + - See @c FIRAuthErrors for a list of error codes that are common to all API methods. + */ +- (void)signInWithCredential:(FIRAuthCredential *)credential + completion:(nullable FIRAuthResultCallback)completion; + +/** @fn signInAnonymouslyWithCompletion: + @brief Asynchronously creates and becomes an anonymous user. + @param completion Optionally; a block which is invoked when the sign in finishes, or is + canceled. Invoked asynchronously on the main thread in the future. + @remarks If there is already an anonymous user signed in, that user will be returned instead. + If there is any other existing user signed in, that user will be signed out. + @remarks Possible error codes: + - @c FIRAuthErrorCodeOperationNotAllowed Indicates that anonymous accounts are not enabled. + Enable them in the Auth section of the Firebase console. + - See @c FIRAuthErrors for a list of error codes that are common to all API methods. + */ +- (void)signInAnonymouslyWithCompletion:(nullable FIRAuthResultCallback)completion; + +/** @fn signInWithCustomToken:completion: + @brief Asynchronously signs in to Firebase with the given Auth token. + @param token A self-signed custom auth token. + @param completion Optionally; a block which is invoked when the sign in finishes, or is + canceled. Invoked asynchronously on the main thread in the future. + @remarks Possible error codes: + - @c FIRAuthErrorCodeInvalidCustomToken Indicates a validation error with the custom token. + - @c FIRAuthErrorCodeCustomTokenMismatch Indicates the service account and the API key + belong to different projects. + - See @c FIRAuthErrors for a list of error codes that are common to all API methods. + */ +- (void)signInWithCustomToken:(NSString *)token + completion:(nullable FIRAuthResultCallback)completion; + +/** @fn createUserWithEmail:password:completion: + @brief Creates and, on success, signs in a user with the given email address and password. + @param email The user's email address. + @param password The user's desired password. + @param completion Optionally; a block which is invoked when the sign up flow finishes, or is + canceled. Invoked asynchronously on the main thread in the future. + @remarks Possible error codes: + - @c FIRAuthErrorCodeInvalidEmail - Indicates the email address is malformed. + - @c FIRAuthErrorCodeEmailAlreadyInUse Indicates the email used to attempt sign up + already exists. Call fetchProvidersForEmail to check which sign-in mechanisms the user + used, and prompt the user to sign in with one of those. + - @c FIRAuthErrorCodeOperationNotAllowed Indicates that email and password accounts are not + enabled. Enable them in the Auth section of the Firebase console. + - @c FIRAuthErrorCodeWeakPassword Indicates an attempt to set a password that is considered + too weak. The NSLocalizedFailureReasonErrorKey field in the NSError.userInfo dictionary + object will contain more detailed explanation that can be shown to the user. + - See @c FIRAuthErrors for a list of error codes that are common to all API methods. + */ +- (void)createUserWithEmail:(NSString *)email + password:(NSString *)password + completion:(nullable FIRAuthResultCallback)completion; + +/** @fn sendPasswordResetWithEmail:completion: + @brief Initiates a password reset for the given email address. + @param email The email address of the user. + @param completion Optionally; a block which is invoked when the request finishes. Invoked + asynchronously on the main thread in the future. + @remarks Possible error codes: + - See @c FIRAuthErrors for a list of error codes that are common to all API methods. + */ +- (void)sendPasswordResetWithEmail:(NSString *)email + completion:(nullable FIRSendPasswordResetCallback)completion; + +/** @fn signOut: + @brief Signs out the current user. + @param error Optionally; if an error occurs, upon return contains an NSError object that + describes the problem; is nil otherwise. + @return @YES when the sign out request was successful. @NO otherwise. + @remarks Possible error codes: + - @c FIRAuthErrorCodeKeychainError Indicates an error occurred when accessing the keychain. + The @c NSLocalizedFailureReasonErrorKey field in the @c NSError.userInfo dictionary + will contain more information about the error encountered. + */ +- (BOOL)signOut:(NSError *_Nullable *_Nullable)error; + +/** @fn addAuthStateDidChangeListener: + @brief Registers a block as an "auth state did change" listener. To be invoked when: + - The block is registered as a listener, + - The current user changes, or, + - The current user's access token changes. + @param listener The block to be invoked. The block is always invoked asynchronously on the main + thread, even for it's initial invocation after having been added as a listener. + @remarks The block is invoked immediately after adding it according to it's standard invocation + semantics, asynchronously on the main thread. Users should pay special attention to + making sure the block does not inadvertently retain objects which should not be retained by + the long-lived block. The block itself will be retained by @c FIRAuth until it is + unregistered or until the @c FIRAuth instance is otherwise deallocated. + @return A handle useful for manually unregistering the block as a listener. + */ +- (FIRAuthStateDidChangeListenerHandle)addAuthStateDidChangeListener: + (FIRAuthStateDidChangeListenerBlock)listener; + +/** @fn removeAuthStateDidChangeListener: + @brief Unregisters a block as an "auth state did change" listener. + @param listenerHandle The handle for the listener. + */ +- (void)removeAuthStateDidChangeListener:(FIRAuthStateDidChangeListenerHandle)listenerHandle; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRAuthCredential.h b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRAuthCredential.h new file mode 100755 index 0000000..24959d5 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRAuthCredential.h @@ -0,0 +1,31 @@ +/** @file FIRAuthCredential.h + @brief Firebase Auth SDK + @copyright Copyright 2015 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** @class FIRAuthCredential + @brief Represents a credential. + */ +@interface FIRAuthCredential : NSObject + +/** @property provider + @brief Gets the name of the identity provider for the credential. + */ +@property(nonatomic, copy, readonly) NSString *provider; + +/** @fn init + @brief This is an abstract base class. Concrete instances should be created via factory + methods available in the various authentication provider libraries (like the Facebook + provider or the Google provider libraries.) + */ +- (nullable instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRAuthErrors.h b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRAuthErrors.h new file mode 100755 index 0000000..9b32328 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRAuthErrors.h @@ -0,0 +1,166 @@ +/** @file FIRAuthErrors.h + @brief Firebase Auth SDK + @copyright Copyright 2015 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ + +#import + +/** @class FIRAuthErrors + @remarks Error Codes common to all API Methods: + - FIRAuthErrorCodeNetworkError - Indicates a network error occurred during the operation. + - FIRAuthErrorCodeUserNotFound - Indicates the user account was not found. This could happen + if the user account has been deleted. + - FIRAuthErrorCodeUserTokenExpired - Indicates the current user’s token has expired, for + example, the user may have changed account password on another device. You must prompt + the user to sign in again on this device. + - FIRAuthErrorCodeTooManyRequests - Indicates that the request has been blocked after an + abnormal number of requests have been made from the caller device to the Firebase Auth + servers. Retry again after some time. + - FIRAuthErrorCodeInvalidAPIKey - Indicates the application has been configured with an + invalid API key. + - FIRAuthErrorCodeAppNotAuthorized - Indicates the App is not authorized to use Firebase + Authentication with the provided API Key. Go to the Google API Console and check under + the credentials tab that the API key you are using has your application’s bundle ID + whitelisted. + - FIRAuthErrorCodeKeychainError - Indicates an error occurred while accessing the keychain. + The NSLocalizedFailureReasonErrorKey and NSUnderlyingErrorKey fields in the + NSError.userInfo dictionary will contain more information about the error encountered. + - FIRAuthErrorCodeInternalError - Indicates an internal error occurred. Please report the + error back to us with the entire NSError object. + @remarks Common error codes for FIRUser operations: + - FIRAuthErrorCodeInvalidUserToken - Indicates that the signed-in user's refresh token, + that holds session information, is invalid. You must prompt the user to sign in again + on this device. + - FIRAuthErrorCodeUserDisabled - Indicates the user's account is disabled and can no longer + be used until enabled again from within the Users panel in the Firebase console. + */ +@interface FIRAuthErrors + +/** @var FIRAuthErrorDomain + @brief The Firebase Auth error domain. + */ +extern NSString *const FIRAuthErrorDomain; + +/** @var FIRAuthErrorNameKey + @brief The name of the key for the "error_name" string in the NSError userinfo dictionary. + */ +extern NSString *const FIRAuthErrorNameKey; + +/** @enum FIRAuthErrorCode + @brief Error codes used by Firebase Auth. + */ +typedef NS_ENUM(NSInteger, FIRAuthErrorCode) { + /** Indicates a validation error with the custom token. + */ + FIRAuthErrorCodeInvalidCustomToken = 17000, + + /** Indicates the service account and the API key belong to different projects. + */ + FIRAuthErrorCodeCustomTokenMismatch = 17002, + + /** Indicates the IDP token or requestUri is invalid. + */ + FIRAuthErrorCodeInvalidCredential = 17004, + + /** Indicates the user's account is disabled on the server. + */ + FIRAuthErrorCodeUserDisabled = 17005, + + /** Indicates the administrator disabled sign in with the specified identity provider. + */ + FIRAuthErrorCodeOperationNotAllowed = 17006, + + /** Indicates the email used to attempt a sign up is already in use. + */ + FIRAuthErrorCodeEmailAlreadyInUse = 17007, + + /** Indicates the email is invalid. + */ + FIRAuthErrorCodeInvalidEmail = 17008, + + /** Indicates the user attempted sign in with a wrong password. + */ + FIRAuthErrorCodeWrongPassword = 17009, + + /** Indicates that too many requests were made to a server method. + */ + FIRAuthErrorCodeTooManyRequests = 17010, + + /** Indicates the user account was not found. + */ + FIRAuthErrorCodeUserNotFound = 17011, + + /** Indicates account linking is required. + */ + FIRAuthErrorCodeAccountExistsWithDifferentCredential = 17012, + + /** Same enum as @c FIRAuthErrorCodeAccountExistsWithDifferentCredential , + but with incorrect spelling. Only exists for backwards compatiblity. + */ + FIRAuthErrrorCodeAccountExistsWithDifferentCredential = 17012, + + /** Indicates the user has attemped to change email or password more than 5 minutes after + signing in. + */ + FIRAuthErrorCodeRequiresRecentLogin = 17014, + + /** Indicates an attempt to link a provider to which the account is already linked. + */ + FIRAuthErrorCodeProviderAlreadyLinked = 17015, + + /** Indicates an attempt to unlink a provider that is not linked. + */ + FIRAuthErrorCodeNoSuchProvider = 17016, + + /** Indicates user's saved auth credential is invalid, the user needs to sign in again. + */ + FIRAuthErrorCodeInvalidUserToken = 17017, + + /** Indicates a network error occurred (such as a timeout, interrupted connection, or + unreachable host). These types of errors are often recoverable with a retry. The @c + NSUnderlyingError field in the @c NSError.userInfo dictionary will contain the error + encountered. + */ + FIRAuthErrorCodeNetworkError = 17020, + + /** Indicates the saved token has expired, for example, the user may have changed account + password on another device. The user needs to sign in again on the device that made this + request. + */ + FIRAuthErrorCodeUserTokenExpired = 17021, + + /** Indicates an invalid API key was supplied in the request. + */ + FIRAuthErrorCodeInvalidAPIKey = 17023, + + /** Indicates that an attempt was made to reauthenticate with a user which is not the current + user. + */ + FIRAuthErrorCodeUserMismatch = 17024, + + /** Indicates an attempt to link with a credential that has already been linked with a + different Firebase account + */ + FIRAuthErrorCodeCredentialAlreadyInUse = 17025, + + /** Indicates an attempt to set a password that is considered too weak. + */ + FIRAuthErrorCodeWeakPassword = 17026, + + /** Indicates the App is not authorized to use Firebase Authentication with the + provided API Key. + */ + FIRAuthErrorCodeAppNotAuthorized = 17028, + + /** Indicates an error occurred while attempting to access the keychain. + */ + FIRAuthErrorCodeKeychainError = 17995, + + /** Indicates an internal error occurred. + */ + FIRAuthErrorCodeInternalError = 17999, +}; + +@end diff --git a/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIREmailPasswordAuthProvider.h b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIREmailPasswordAuthProvider.h new file mode 100755 index 0000000..a1444b9 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIREmailPasswordAuthProvider.h @@ -0,0 +1,39 @@ +/** @file FIREmailPasswordAuthProvider.h + @brief Firebase Auth SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ + +#import + +@class FIRAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +/** @var FIREmailPasswordAuthProviderID + @brief A string constant identifying the email & password identity provider. + */ +extern NSString *const FIREmailPasswordAuthProviderID; + +/** @class FIREmailPasswordAuthProvider + @brief A concrete implementation of @c FIRAuthProvider for Email & Password Sign In. + */ +@interface FIREmailPasswordAuthProvider : NSObject + +/** @fn credentialWithEmail:password: + @brief Creates an @c FIRAuthCredential for an email & password sign in. + @param email The user's email address. + @param password The user's password. + @return A @c FIRAuthCredential containing the email & password credential. + */ ++ (FIRAuthCredential *)credentialWithEmail:(NSString *)email password:(NSString *)password; + +/** @fn init + @brief This class is not meant to be initialized. + */ +- (nullable instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRFacebookAuthProvider.h b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRFacebookAuthProvider.h new file mode 100755 index 0000000..3b5d28f --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRFacebookAuthProvider.h @@ -0,0 +1,38 @@ +/** @file FIRFacebookAuthProvider.h + @brief Firebase Auth SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ + +#import + +@class FIRAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +/** @var FIRFacebookAuthProviderID + @brief A string constant identifying the Facebook identity provider. + */ +extern NSString *const FIRFacebookAuthProviderID; + +/** @class FIRFacebookAuthProvider + @brief Utility class for constructing Facebook credentials. + */ +@interface FIRFacebookAuthProvider : NSObject + +/** @fn credentialWithAccessToken: + @brief Creates an @c FIRAuthCredential for a Facebook sign in. + @param accessToken The Access Token from Facebook. + @return A @c FIRAuthCredential containing the Facebook credentials. + */ ++ (FIRAuthCredential *)credentialWithAccessToken:(NSString *)accessToken; + +/** @fn init + @brief This class should not be initialized. + */ +- (nullable instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRGitHubAuthProvider.h b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRGitHubAuthProvider.h new file mode 100755 index 0000000..ce139e3 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRGitHubAuthProvider.h @@ -0,0 +1,38 @@ +/** @file FIRGitHubAuthProvider.h + @brief Firebase Auth SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ + +#import + +@class FIRAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +/** @var FIRGitHubAuthProviderID + @brief A string constant identifying the GitHub identity provider. + */ +extern NSString *const FIRGitHubAuthProviderID; + +/** @class FIRGitHubAuthProvider + @brief Utility class for constructing GitHub credentials. + */ +@interface FIRGitHubAuthProvider : NSObject + +/** @fn credentialWithToken: + @brief Creates an @c FIRAuthCredential for a GitHub sign in. + @param token The GitHub OAuth access token. + @return A @c FIRAuthCredential containing the GitHub credential. + */ ++ (FIRAuthCredential *)credentialWithToken:(NSString *)token; + +/** @fn init + @brief This class is not meant to be initialized. + */ +- (nullable instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRGoogleAuthProvider.h b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRGoogleAuthProvider.h new file mode 100755 index 0000000..40b413c --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRGoogleAuthProvider.h @@ -0,0 +1,40 @@ +/** @file FIRGoogleAuthProvider.h + @brief Firebase Auth SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ + +#import + +@class FIRAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +/** @var FIRGoogleAuthProviderID + @brief A string constant identifying the Google identity provider. + */ +extern NSString *const FIRGoogleAuthProviderID; + +/** @class FIRGoogleAuthProvider + @brief Utility class for constructing Google Sign In credentials. + */ +@interface FIRGoogleAuthProvider : NSObject + +/** @fn credentialWithIDToken:accessToken: + @brief Creates an @c FIRAuthCredential for a Google sign in. + @param IDToken The ID Token from Google. + @param accessToken The Access Token from Google. + @return A @c FIRAuthCredential containing the Google credentials. + */ ++ (FIRAuthCredential *)credentialWithIDToken:(NSString *)IDToken + accessToken:(NSString *)accessToken; + +/** @fn init + @brief This class should not be initialized. + */ +- (nullable instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRTwitterAuthProvider.h b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRTwitterAuthProvider.h new file mode 100755 index 0000000..e333919 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRTwitterAuthProvider.h @@ -0,0 +1,39 @@ +/** @file FIRTwitterAuthProvider.h + @brief Firebase Auth SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ + +#import + +@class FIRAuthCredential; + +NS_ASSUME_NONNULL_BEGIN + +/** @var FIRTwitterAuthProviderID + @brief A string constant identifying the Twitter identity provider. + */ +extern NSString *const FIRTwitterAuthProviderID; + +/** @class FIRTwitterAuthProvider + @brief Utility class for constructing Twitter credentials. + */ +@interface FIRTwitterAuthProvider : NSObject + +/** @fn credentialWithToken:secret: + @brief Creates an @c FIRAuthCredential for a Twitter sign in. + @param token The Twitter OAuth token. + @param secret The Twitter OAuth secret. + @return A @c FIRAuthCredential containing the Twitter credential. + */ ++ (FIRAuthCredential *)credentialWithToken:(NSString *)token secret:(NSString *)secret; + +/** @fn init + @brief This class is not meant to be initialized. + */ +- (nullable instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRUser.h b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRUser.h new file mode 100755 index 0000000..e03d044 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRUser.h @@ -0,0 +1,290 @@ +/** @file FIRUser.h + @brief Firebase Auth SDK + @copyright Copyright 2015 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ + +#import + +#import +#import + +@class FIRUserProfileChangeRequest; + +NS_ASSUME_NONNULL_BEGIN + +/** @typedef FIRAuthTokenCallback + @brief The type of block called when a token is ready for use. + @see FIRUser.getTokenWithCompletion: + @see FIRUser.getTokenForcingRefresh:withCompletion: + @param token Optionally; an access token if the request was successful. + @param error Optionally; the error which occurred - or nil if the request was successful. + @remarks One of: @c token or @c error will always be non-nil. + */ +typedef void (^FIRAuthTokenCallback)(NSString *_Nullable token, NSError *_Nullable error); + +/** @typedef FIRUserProfileChangeCallback + @brief The type of block called when a user profile change has finished. + @param error Optionally; the error which occurred - or nil if the request was successful. + */ +typedef void (^FIRUserProfileChangeCallback)(NSError *_Nullable error); + +/** @typedef FIRSendEmailVerificationCallback + @brief The type of block called when a request to send an email verification has finished. + @param error Optionally; the error which occurred - or nil if the request was successful. + */ +typedef void (^FIRSendEmailVerificationCallback)(NSError *_Nullable error); + +/** @class FIRUser + @brief Represents a user. + @remarks This class is thread-safe. + */ +@interface FIRUser : NSObject + +/** @property anonymous + @brief Indicates the user represents an anonymous user. + */ +@property(nonatomic, readonly, getter=isAnonymous) BOOL anonymous; + +/** @property emailVerified + @brief Indicates the email address associated with this user has been verified. + */ +@property(nonatomic, readonly, getter=isEmailVerified) BOOL emailVerified; + +/** @property refreshToken + @brief A refresh token; useful for obtaining new access tokens independently. + @remarks This property should only be used for advanced scenarios, and is not typically needed. + */ +@property(nonatomic, readonly, nullable) NSString *refreshToken; + +/** @property providerData + @brief Profile data for each identity provider, if any. + @remarks This data is cached on sign-in and updated when linking or unlinking. + */ +@property(nonatomic, readonly, nonnull) NSArray> *providerData; + +/** @fn init + @brief This class should not be instantiated. + @remarks To retrieve the current user, use @c FIRAuth.currentUser. To sign a user + in or out, use the methods on @c FIRAuth. + */ +- (nullable instancetype)init NS_UNAVAILABLE; + +/** @fn updateEmail:completion: + @brief Updates the email address for the user. On success, the cached user profile data is + updated. + @remarks May fail if there is already an account with this email address that was created using + email and password authentication. + @param email The email address for the user. + @param completion Optionally; the block invoked when the user profile change has finished. + Invoked asynchronously on the main thread in the future. + @remarks Possible error codes: + - @c FIRAuthErrorCodeEmailAlreadyInUse - Indicates the email is already in use by another + account. + - @c FIRAuthErrorCodeInvalidEmail - Indicates the email address is malformed. + - @c FIRAuthErrorCodeRequiresRecentLogin - Updating a user’s email is a security sensitive + operation that requires a recent login from the user. This error indicates the user has + not signed in recently enough. To resolve, reauthenticate the user by invoking + reauthenticateWithCredential:completion: on FIRUser. + - See @c FIRAuthErrors for a list of error codes that are common to all FIRUser operations. + */ +- (void)updateEmail:(NSString *)email completion:(nullable FIRUserProfileChangeCallback)completion; + +/** @fn updatePassword:completion: + @brief Updates the password for the user. On success, the cached user profile data is updated. + @param password The new password for the user. + @param completion Optionally; the block invoked when the user profile change has finished. + Invoked asynchronously on the main thread in the future. + @remarks Possible error codes: + - @c FIRAuthErrorCodeOperationNotAllowed - Indicates the administrator disabled sign in with + the specified identity provider. + - @c FIRAuthErrorCodeRequiresRecentLogin - Updating a user’s password is a security + sensitive operation that requires a recent login from the user. This error indicates the + user has not signed in recently enough. To resolve, reauthenticate the user by invoking + reauthenticateWithCredential:completion: on FIRUser. + - @c FIRAuthErrorCodeWeakPassword - Indicates an attempt to set a password that is + considered too weak. The NSLocalizedFailureReasonErrorKey field in the NSError.userInfo + dictionary object will contain more detailed explanation that can be shown to the user. + - See @c FIRAuthErrors for a list of error codes that are common to all FIRUser operations. + */ +- (void)updatePassword:(NSString *)password + completion:(nullable FIRUserProfileChangeCallback)completion; + +/** @fn profileChangeRequest + @brief Creates an object which may be used to change the user's profile data. + @remarks Set the properties of the returned object, then call + @c FIRUserProfileChangeRequest.commitChangesWithCallback: to perform the updates atomically. + @return An object which may be used to change the user's profile data atomically. + */ +- (FIRUserProfileChangeRequest *)profileChangeRequest; + +/** @fn reloadWithCompletion: + @brief Reloads the user's profile data from the server. + @param completion Optionally; the block invoked when the reload has finished. Invoked + asynchronously on the main thread in the future. + @remarks May fail with a @c FIRAuthErrorCodeCredentialTooOld error code. In this case you should + call @c FIRUser.reauthenticateWithCredential:completion: before re-invoking + @c FIRUser.updateEmail:completion:. + @remarks Possible error codes: + - See @c FIRAuthErrors for a list of error codes that are common to all API methods. + */ +- (void)reloadWithCompletion:(nullable FIRUserProfileChangeCallback)completion; + +/** @fn reauthenticateWithCredential:completion: + @brief Renews the user's authentication tokens by validating a fresh set of credentials supplied + by the user. + @param credential A user-supplied credential, which will be validated by the server. This can be + a successful third-party identity provider sign-in, or an email address and password. + @param completion Optionally; the block invoked when the re-authentication operation has + finished. Invoked asynchronously on the main thread in the future. + @remarks If the user associated with the supplied credential is different from the current user, + or if the validation of the supplied credentials fails; an error is returned and the current + user remains signed in. + @remarks Possible error codes: + - @c FIRAuthErrorCodeInvalidCredential Indicates the supplied credential is invalid. This + could happen if it has expired or it is malformed. + - @c FIRAuthErrorCodeOperationNotAllowed Indicates that accounts with the identity provider + represented by the credential are not enabled. Enable them in the Auth section of the + Firebase console. + - @c FIRAuthErrorCodeEmailAlreadyInUse Indicates the email asserted by the credential + (e.g. the email in a Facebook access token) is already in use by an existing account, + that cannot be authenticated with this method. Call fetchProvidersForEmail for + this user’s email and then prompt them to sign in with any of the sign-in providers + returned. This error will only be thrown if the “One account per email address” + setting is enabled in the Firebase console, under Auth settings. - Please note that the + error code raised in this specific situation may not be the same on Web and Android. + - @c FIRAuthErrorCodeUserDisabled Indicates the user's account is disabled. + - @c FIRAuthErrorCodeWrongPassword Indicates the user attempted reauthentication with an + incorrect password, if credential is of the type EmailPasswordAuthCredential. + - @c FIRAuthErrorCodeUserMismatch Indicates that an attempt was made to reauthenticate with + a user which is not the current user. + - @c FIRAuthErrorCodeInvalidEmail - Indicates the email address is malformed. + - See @c FIRAuthErrors for a list of error codes that are common to all API methods. + */ +- (void)reauthenticateWithCredential:(FIRAuthCredential *)credential + completion:(nullable FIRUserProfileChangeCallback)completion; + +/** @fn getTokenWithCompletion: + @brief Retrieves the Firebase authentication token, possibly refreshing it if it has expired. + @param completion Optionally; the block invoked when the token is available. Invoked + asynchronously on the main thread in the future. + @remarks Possible error codes: + - See @c FIRAuthErrors for a list of error codes that are common to all API methods. + */ +- (void)getTokenWithCompletion:(nullable FIRAuthTokenCallback)completion; + +/** @fn getTokenForcingRefresh:completion: + @brief Retrieves the Firebase authentication token, possibly refreshing it if it has expired. + @param forceRefresh Forces a token refresh. Useful if the token becomes invalid for some reason + other than an expiration. + @param completion Optionally; the block invoked when the token is available. Invoked + asynchronously on the main thread in the future. + @remarks The authentication token will be refreshed (by making a network request) if it has + expired, or if @c forceRefresh is YES. + @remarks Possible error codes: + - See @c FIRAuthErrors for a list of error codes that are common to all API methods. + */ +- (void)getTokenForcingRefresh:(BOOL)forceRefresh + completion:(nullable FIRAuthTokenCallback)completion; + +/** @fn linkWithCredential:completion: + @brief Associates a user account from a third-party identity provider with this user. + @param credential The credential for the identity provider. + @param completion Optionally; the block invoked when the unlinking is complete, or fails. + Invoked asynchronously on the main thread in the future. + @remarks Possible error codes: + - @c FIRAuthErrorCodeProviderAlreadyLinked - Indicates an attempt to link a provider of a + type already linked to this account. + - @c FIRAuthErrorCodeCredentialAlreadyInUse - Indicates an attempt to link with a credential + that has already been linked with a different Firebase account. + - @c FIRAuthErrorCodeOperationNotAllowed - Indicates that accounts with the identity + provider represented by the credential are not enabled. Enable them in the Auth section + of the Firebase console. + - This method may also return error codes associated with updateEmail:completion: and + updatePassword:completion: on FIRUser. + - See @c FIRAuthErrors for a list of error codes that are common to all FIRUser operations. + */ +- (void)linkWithCredential:(FIRAuthCredential *)credential + completion:(nullable FIRAuthResultCallback)completion; + +/** @fn unlinkFromProvider:completion: + @brief Disassociates a user account from a third-party identity provider with this user. + @param provider The provider ID of the provider to unlink. + @param completion Optionally; the block invoked when the unlinking is complete, or fails. + Invoked asynchronously on the main thread in the future. + @remarks Possible error codes: + - @c FIRAuthErrorCodeNoSuchProvider - Indicates an attempt to unlink a provider that is not + linked to the account. + - @c FIRAuthErrorCodeRequiresRecentLogin - Updating email is a security sensitive operation + that requires a recent login from the user. This error indicates the user has not signed + in recently enough. To resolve, reauthenticate the user by invoking + reauthenticateWithCredential:completion: on FIRUser. + - See @c FIRAuthErrors for a list of error codes that are common to all FIRUser operations. + */ +- (void)unlinkFromProvider:(NSString *)provider + completion:(nullable FIRAuthResultCallback)completion; + +/** @fn sendEmailVerificationWithCompletion: + @brief Initiates email verification for the user. + @param completion Optionally; the block invoked when the request to send an email verification + is complete, or fails. Invoked asynchronously on the main thread in the future. + @remarks Possible error codes: + - @c FIRAuthErrorCodeUserNotFound - Indicates the user account was not found. + - See @c FIRAuthErrors for a list of error codes that are common to all FIRUser operations. + */ +- (void)sendEmailVerificationWithCompletion:(nullable FIRSendEmailVerificationCallback)completion; + +/** @fn deleteWithCompletion: + @brief Deletes the user account (also signs out the user, if this was the current user). + @param completion Optionally; the block invoked when the request to delete the account is + complete, or fails. Invoked asynchronously on the main thread in the future. + @remarks Possible error codes: + - @c FIRAuthErrorCodeRequiresRecentLogin - Updating email is a security sensitive operation + that requires a recent login from the user. This error indicates the user has not signed + in recently enough. To resolve, reauthenticate the user by invoking + reauthenticateWithCredential:completion: on FIRUser. + - See @c FIRAuthErrors for a list of error codes that are common to all FIRUser operations. + */ +- (void)deleteWithCompletion:(nullable FIRUserProfileChangeCallback)completion; + +@end + +/** @class FIRUserProfileChangeRequest + @brief Represents an object capable of updating a user's profile data. + @remarks Properties are marked as being part of a profile update when they are set. Setting a + property value to nil is not the same as leaving the property unassigned. + */ +@interface FIRUserProfileChangeRequest : NSObject + +/** @fn init + @brief Please use @c FIRUser.profileChangeRequest + */ +- (nullable instancetype)init NS_UNAVAILABLE; + +/** @property displayName + @brief The user's display name. + @remarks It is an error to set this property after calling + @c FIRUserProfileChangeRequest.commitChangesWithCallback: + */ +@property(nonatomic, copy, nullable) NSString *displayName; + +/** @property photoURL + @brief The user's photo URL. + @remarks It is an error to set this property after calling + @c FIRUserProfileChangeRequest.commitChangesWithCallback: + */ +@property(nonatomic, copy, nullable) NSURL *photoURL; + +/** @fn commitChangesWithCompletion: + @brief Commits any pending changes. + @remarks This method should only be called once. Once called, property values should not be + changed. + @param completion Optionally; the block invoked when the user profile change has been applied. + Invoked asynchronously on the main thread in the future. + */ +- (void)commitChangesWithCompletion:(nullable FIRUserProfileChangeCallback)completion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRUserInfo.h b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRUserInfo.h new file mode 100755 index 0000000..633fb87 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FIRUserInfo.h @@ -0,0 +1,44 @@ +/** @file FIRUserInfo.h + @brief Firebase Auth SDK + @copyright Copyright 2015 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** @protocol FIRUserInfo + @brief Represents user data returned from an identity provider. + */ +@protocol FIRUserInfo + +/** @property providerID + @brief The provider identifier. + */ +@property(nonatomic, copy, readonly) NSString *providerID; + +/** @property uid + @brief The provider's user ID for the user. + */ +@property(nonatomic, copy, readonly) NSString *uid; + +/** @property displayName + @brief The name of the user. + */ +@property(nonatomic, copy, readonly, nullable) NSString *displayName; + +/** @property photoURL + @brief The URL of the user's profile photo. + */ +@property(nonatomic, copy, readonly, nullable) NSURL *photoURL; + +/** @property email + @brief The user's email address. + */ +@property(nonatomic, copy, readonly, nullable) NSString *email; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FirebaseAuth.h b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FirebaseAuth.h new file mode 100755 index 0000000..0e7e80a --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Headers/FirebaseAuth.h @@ -0,0 +1,27 @@ +/** @file FirebaseAuth.h + @brief Firebase Auth SDK + @copyright Copyright 2015 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +/** @var FirebaseAuthVersionNumber + @brief Version number for FirebaseAuth. + */ +extern const double FirebaseAuthVersionNumber; + +/** @var FirebaseAuthVersionString + @brief Version string for FirebaseAuth. + */ +extern const unsigned char *const FirebaseAuthVersionString; diff --git a/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Modules/module.modulemap b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Modules/module.modulemap new file mode 100755 index 0000000..7c7754e --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/Frameworks/frameworks/FirebaseAuth.framework/Modules/module.modulemap @@ -0,0 +1,22 @@ +framework module FirebaseAuth { + umbrella header "FirebaseAuth.h" + + export * + + header "FIRAuth.h" + header "FIRAuthCredential.h" + header "FIRAuthErrors.h" + header "FIREmailPasswordAuthProvider.h" + header "FIRFacebookAuthProvider.h" + header "FIRGitHubAuthProvider.h" + header "FIRGoogleAuthProvider.h" + header "FIRTwitterAuthProvider.h" + header "FIRUser.h" + header "FIRUserInfo.h" + + link framework "Security" + + use FirebaseAnalytics + use GoogleUtilities + use GoogleNetworkingUtilities +} diff --git a/MDBSocials/Pods/FirebaseAuth/README.md b/MDBSocials/Pods/FirebaseAuth/README.md new file mode 100755 index 0000000..e766949 --- /dev/null +++ b/MDBSocials/Pods/FirebaseAuth/README.md @@ -0,0 +1,8 @@ +# Firebase Auth for iOS + +Firebase Auth enables apps to easily support multiple authentication options +for their end users. + +Please visit [our developer site](https://developers.google.com/) for +integration instructions, documentation, support information, and terms of +service. diff --git a/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/FirebaseCore b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/FirebaseCore new file mode 100755 index 0000000..5f3dcec Binary files /dev/null and b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/FirebaseCore differ diff --git a/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FIRAnalyticsConfiguration.h b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FIRAnalyticsConfiguration.h new file mode 100755 index 0000000..667d5a4 --- /dev/null +++ b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FIRAnalyticsConfiguration.h @@ -0,0 +1,38 @@ +#import + +/** + * This class provides configuration fields for Firebase Analytics. + */ +@interface FIRAnalyticsConfiguration : NSObject + +/** + * Returns the shared instance of FIRAnalyticsConfiguration. + */ ++ (FIRAnalyticsConfiguration *)sharedInstance; + +/** + * Sets the minimum engagement time in seconds required to start a new session. The default value + * is 10 seconds. + */ +- (void)setMinimumSessionInterval:(NSTimeInterval)minimumSessionInterval; + +/** + * Sets the interval of inactivity in seconds that terminates the current session. The default + * value is 1800 seconds (30 minutes). + */ +- (void)setSessionTimeoutInterval:(NSTimeInterval)sessionTimeoutInterval; + +/** + * Sets whether analytics collection is enabled for this app on this device. This setting is + * persisted across app sessions. By default it is enabled. + */ +- (void)setAnalyticsCollectionEnabled:(BOOL)analyticsCollectionEnabled; + +/** + * Deprecated. Sets whether measurement and reporting are enabled for this app on this device. By + * default they are enabled. + */ +- (void)setIsEnabled:(BOOL)isEnabled + DEPRECATED_MSG_ATTRIBUTE("Use setAnalyticsCollectionEnabled: instead."); + +@end diff --git a/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FIRApp.h b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FIRApp.h new file mode 100755 index 0000000..45b2388 --- /dev/null +++ b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FIRApp.h @@ -0,0 +1,94 @@ +#import +#import + +@class FIROptions; + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^FIRAppVoidBoolCallback)(BOOL success); + +/** + * The entry point of Firebase SDKs. + * + * Initialize and configure FIRApp using [FIRApp configure]; + * Or other customized ways as shown below. + * + * The logging system has two modes: default mode and debug mode. In default mode, only logs with + * log level Notice, Warning and Error will be sent to device. In debug mode, all logs will be sent + * to device. The log levels that Firebase uses are consistent with the ASL log levels. + * + * Enable debug mode by passing the -FIRDebugEnabled argument to the application. You can add this + * argument in the application's Xcode scheme. When debug mode is enabled via -FIRDebugEnabled, + * further executions of the application will also be in debug mode. In order to return to default + * mode, you must explicitly disable the debug mode with the application argument -FIRDebugDisabled. + */ +@interface FIRApp : NSObject + +/** + * Configures a default Firebase app. Raises an exception if any configuration step fails. The + * default app is named "__FIRAPP_DEFAULT". This method should be called after the app is launched + * and before using Firebase services. This method is thread safe. + */ ++ (void)configure; + +/** + * Configures the default Firebase app with the provided options. The default app is named + * "__FIRAPP_DEFAULT". Raises an exception if any configuration step fails. This method is thread + * safe. + * + * @param options The Firebase application options used to configure the service. + */ ++ (void)configureWithOptions:(FIROptions *)options; + +/** + * Configures a Firebase app with the given name and options. Raises an exception if any + * configuration step fails. This method is thread safe. + * + * @param name The application's name given by the developer. The name should should only contain + Letters, Numbers and Underscore. + * @param options The Firebase application options used to configure the services. + */ ++ (void)configureWithName:(NSString *)name options:(FIROptions *)options; + +/** + * Returns the default app, or nil if the default app does not exist. + */ ++ (nullable FIRApp *)defaultApp NS_SWIFT_NAME(defaultApp()); + +/** + * Returns a previously created FIRApp instance with the given name, or nil if no such app exists. + * This method is thread safe. + */ ++ (nullable FIRApp *)appNamed:(NSString *)name; + +/** + * Returns the set of all extant FIRApp instances, or nil if there is no FIRApp instance. This + * method is thread safe. + */ ++ (nullable NSDictionary *)allApps; + +/** + * Cleans up the current FIRApp, freeing associated data and returning its name to the pool for + * future use. This method is thread safe in class level. + */ +- (void)deleteApp:(FIRAppVoidBoolCallback)completion; + +/** + * FIRFirebaseApp instances should not be initialized directly. Call |FIRApp configure|, or + * |FIRApp configureWithOptions:|, or |FIRApp configureWithNames:options| directly. + */ +- (nullable instancetype)init NS_UNAVAILABLE; + +/** + * Gets the name of this app. + */ +@property(nonatomic, copy, readonly) NSString *name; + +/** + * Gets the options for this app. + */ +@property(nonatomic, readonly) FIROptions *options; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FIRConfiguration.h b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FIRConfiguration.h new file mode 100755 index 0000000..e85ea8b --- /dev/null +++ b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FIRConfiguration.h @@ -0,0 +1,33 @@ +#import + +#import "FIRAnalyticsConfiguration.h" + +/** + * The log levels used by FIRConfiguration. + */ +typedef NS_ENUM(NSInteger, FIRLogLevel) { + kFIRLogLevelError __deprecated = 0, + kFIRLogLevelWarning __deprecated, + kFIRLogLevelInfo __deprecated, + kFIRLogLevelDebug __deprecated, + kFIRLogLevelAssert __deprecated, + kFIRLogLevelMax __deprecated = kFIRLogLevelAssert +} DEPRECATED_MSG_ATTRIBUTE( + "Use -FIRDebugEnabled and -FIRDebugDisabled. See FIRApp.h for more details."); + +/** + * This interface provides global level properties that the developer can tweak, and the singleton + * of the Firebase Analytics configuration class. + */ +@interface FIRConfiguration : NSObject + ++ (FIRConfiguration *)sharedInstance; + +// The configuration class for Firebase Analytics. +@property(nonatomic, readwrite) FIRAnalyticsConfiguration *analyticsConfiguration; + +// Global log level. Defaults to kFIRLogLevelError. +@property(nonatomic, readwrite, assign) FIRLogLevel logLevel DEPRECATED_MSG_ATTRIBUTE( + "Use -FIRDebugEnabled and -FIRDebugDisabled. See FIRApp.h for more details."); + +@end diff --git a/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FIROptions.h b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FIROptions.h new file mode 100755 index 0000000..5ab20c6 --- /dev/null +++ b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FIROptions.h @@ -0,0 +1,87 @@ +#import + +/** + * This class provides constant fields of Google APIs. + */ +@interface FIROptions : NSObject + +/** + * Returns the default options. + */ ++ (FIROptions *)defaultOptions; + +/** + * An iOS API key used for authenticating requests from your app, e.g. + * @"AIzaSyDdVgKwhZl0sTTTLZ7iTmt1r3N2cJLnaDk", used to identify your app to Google servers. + */ +@property(nonatomic, readonly, copy) NSString *APIKey; + +/** + * The OAuth2 client ID for iOS application used to authenticate Google users, for example + * @"12345.apps.googleusercontent.com", used for signing in with Google. + */ +@property(nonatomic, readonly, copy) NSString *clientID; + +/** + * The tracking ID for Google Analytics, e.g. @"UA-12345678-1", used to configure Google Analytics. + */ +@property(nonatomic, readonly, copy) NSString *trackingID; + +/** + * The Project Number from the Google Developer's console, for example @"012345678901", used to + * configure Google Cloud Messaging. + */ +@property(nonatomic, readonly, copy) NSString *GCMSenderID; + +/** + * The Android client ID used in Google AppInvite when an iOS app has its Android version, for + * example @"12345.apps.googleusercontent.com". + */ +@property(nonatomic, readonly, copy) NSString *androidClientID; + +/** + * The Google App ID that is used to uniquely identify an instance of an app. + */ +@property(nonatomic, readonly, copy) NSString *googleAppID; + +/** + * The database root URL, e.g. @"http://abc-xyz-123.firebaseio.com". + */ +@property(nonatomic, readonly, copy) NSString *databaseURL; + +/** + * The URL scheme used to set up Durable Deep Link service. + */ +@property(nonatomic, readwrite, copy) NSString *deepLinkURLScheme; + +/** + * The Google Cloud Storage bucket name, e.g. @"abc-xyz-123.storage.firebase.com". + */ +@property(nonatomic, readonly, copy) NSString *storageBucket; + +/** + * Initializes a customized instance of FIROptions with keys. googleAppID, bundleID and GCMSenderID + * are required. Other keys may required for configuring specific services. + */ +- (instancetype)initWithGoogleAppID:(NSString *)googleAppID + bundleID:(NSString *)bundleID + GCMSenderID:(NSString *)GCMSenderID + APIKey:(NSString *)APIKey + clientID:(NSString *)clientID + trackingID:(NSString *)trackingID + androidClientID:(NSString *)androidClientID + databaseURL:(NSString *)databaseURL + storageBucket:(NSString *)storageBucket + deepLinkURLScheme:(NSString *)deepLinkURLScheme; + +/** + * Initializes a customized instance of FIROptions from the file at the given plist file path. + * For example, + * NSString *filePath = + * [[NSBundle mainBundle] pathForResource:@"GoogleService-Info" ofType:@"plist"]; + * FIROptions *options = [[FIROptions alloc] initWithContentsOfFile:filePath]; + * Returns nil if the plist file does not exist or is invalid. + */ +- (instancetype)initWithContentsOfFile:(NSString *)plistPath; + +@end diff --git a/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FirebaseCore.h b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FirebaseCore.h new file mode 100755 index 0000000..d144758 --- /dev/null +++ b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Headers/FirebaseCore.h @@ -0,0 +1,6 @@ +// Generated umbrella header for FirebaseCore. + +#import "FIRAnalyticsConfiguration.h" +#import "FIRApp.h" +#import "FIRConfiguration.h" +#import "FIROptions.h" diff --git a/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Modules/module.modulemap b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Modules/module.modulemap new file mode 100755 index 0000000..82d14eb --- /dev/null +++ b/MDBSocials/Pods/FirebaseCore/Frameworks/frameworks/FirebaseCore.framework/Modules/module.modulemap @@ -0,0 +1,15 @@ +framework module FirebaseCore { + + export * + + umbrella header "FirebaseCore.h" + + header "FIRAnalyticsConfiguration.h" + header "FIRApp.h" + header "FIRConfiguration.h" + header "FIROptions.h" + + link framework "SystemConfiguration" + + link "c++" +} diff --git a/MDBSocials/Pods/FirebaseCrash/Frameworks/frameworks/FirebaseCrash.framework/FirebaseCrash b/MDBSocials/Pods/FirebaseCrash/Frameworks/frameworks/FirebaseCrash.framework/FirebaseCrash new file mode 100755 index 0000000..7c14de6 Binary files /dev/null and b/MDBSocials/Pods/FirebaseCrash/Frameworks/frameworks/FirebaseCrash.framework/FirebaseCrash differ diff --git a/MDBSocials/Pods/FirebaseCrash/Frameworks/frameworks/FirebaseCrash.framework/Headers/FIRCrashLog.h b/MDBSocials/Pods/FirebaseCrash/Frameworks/frameworks/FirebaseCrash.framework/Headers/FIRCrashLog.h new file mode 100755 index 0000000..ac446a6 --- /dev/null +++ b/MDBSocials/Pods/FirebaseCrash/Frameworks/frameworks/FirebaseCrash.framework/Headers/FIRCrashLog.h @@ -0,0 +1,164 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * @abstract Logs a message to the Firebase Crash Reporter system. + * + * @discussion This method adds a message to the crash reporter + * logging system. The recent logs will be sent with the crash + * report when the application exits abnormally. Note that the + * timestamp of this message and the timestamp of the console + * message may differ by a few milliseconds. + * + * Messages should be brief as the total size of the message payloads + * is limited by the uploader and may change between releases of the + * crash reporter. Excessively long messages will be truncated + * safely but that will introduce a delay in submitting the message. + * + * @warning Raises an NSInvalidArgumentException if @p format is nil. + * + * @param format A format string. + * + * @param ap A variable argument list. + */ +FOUNDATION_EXTERN NS_FORMAT_FUNCTION(1, 0) +void FIRCrashLogv(NSString *format, va_list ap); + +/** + * @abstract Logs a message to the Firebase Crash Reporter system. + * + * @discussion This method adds a message to the crash reporter + * logging system. The recent logs will be sent with the crash + * report when the application exits abnormally. Note that the + * timestamp of this message and the timestamp of the console + * message may differ by a few milliseconds. + * + * Messages should be brief as the total size of the message payloads + * is limited by the uploader and may change between releases of the + * crash reporter. Excessively long messages will be truncated + * safely but that will introduce a delay in submitting the message. + * + * @warning Raises an NSInvalidArgumentException if @p format is nil. + * + * @param format A format string. + * + * @param ... A comma-separated list of arguments to substitute into + * format. + * + * @see FIRCrashLogv(format, ap) + */ +FOUNDATION_STATIC_INLINE NS_FORMAT_FUNCTION(1, 2) +void FIRCrashLog(NSString *format, ...) { + va_list ap; + + va_start(ap, format); + FIRCrashLogv(format, ap); + va_end(ap); +} + +/** + * @abstract Logs a message to the Firebase Crash Reporter system as + * well as NSLog(). + * + * @discussion This method adds a message to the crash reporter + * logging system. The recent logs will be sent with the crash + * report when the application exits abnormally. Note that the + * timestamp of this message and the timestamp of the console + * message may differ by a few milliseconds. + * + * Messages should be brief as the total size of the message payloads + * is limited by the uploader and may change between releases of the + * crash reporter. Excessively long messages will be truncated + * safely but that will introduce a delay in submitting the message. + * + * @warning Raises an NSInvalidArgumentException if @p format is nil. + * + * @param format A format string. + * + * @param ap A variable argument list. + */ +FOUNDATION_STATIC_INLINE NS_FORMAT_FUNCTION(1, 0) +void FIRCrashNSLogv(NSString *format, va_list ap) { + va_list ap2; + + va_copy(ap2, ap); + NSLogv(format, ap); + FIRCrashLogv(format, ap2); + va_end(ap2); +} + +/** + * @abstract Logs a message to the Firebase Crash Reporter system as + * well as NSLog(). + * + * @discussion This method adds a message to the crash reporter + * logging system. The recent logs will be sent with the crash + * report when the application exits abnormally. Note that the + * timestamp of this message and the timestamp of the console + * message may differ by a few milliseconds. + * + * Messages should be brief as the total size of the message payloads + * is limited by the uploader and may change between releases of the + * crash reporter. Excessively long messages will be truncated + * safely but that will introduce a delay in submitting the message. + * + * @warning Raises an NSInvalidArgumentException if @p format is nil. + * + * @param format A format string. + * + * @param ... A comma-separated list of arguments to substitute into + * format. + * + * @see FIRCrashLogv(format, ap) + */ +FOUNDATION_STATIC_INLINE NS_FORMAT_FUNCTION(1, 2) +void FIRCrashNSLog(NSString *format, ...) { + va_list ap; + + va_start(ap, format); + FIRCrashNSLogv(format, ap); + va_end(ap); +} + +/** + * @abstract Logs a message to the Firebase Crash Reporter system in + * a way that is easily called from Swift code. + * + * @discussion This method adds a message to the crash reporter + * logging system. Similar to FIRCrashLog, but with a call signature + * that is more Swift friendly. Unlike FIRCrashLog, callers + * use string interpolation instead of formatting arguments. + * + * @code + * public func mySwiftFunction() { + * let unexpected_number = 10; + * FIRCrashMessage("This number doesn't seem right: \(unexpected_number)"); + * } + * @endcode + * + * Messages should be brief as the total size of the message payloads + * is limited by the uploader and may change between releases of the + * crash reporter. Excessively long messages will be truncated + * safely but that will introduce a delay in submitting the message. + * + * @param Message A log message + * + * @see FIRCrashLog(format, ...) + */ +FOUNDATION_STATIC_INLINE +void FIRCrashMessage(NSString *message) { + FIRCrashLog(@"%@", message); +} + +NS_ASSUME_NONNULL_END + +#ifdef FIRCRASH_REPLACE_NSLOG +#if defined(DEBUG) || defined(FIRCRASH_LOG_TO_CONSOLE) +#define NSLog(...) FIRCrashNSLog(__VA_ARGS__) +#define NSLogv(...) FIRCrashNSLogv(__VA_ARGS__) +#else +#define NSLog(...) FIRCrashLog(__VA_ARGS__) +#define NSLogv(...) FIRCrashLogv(__VA_ARGS__) +#endif +#endif diff --git a/MDBSocials/Pods/FirebaseCrash/Frameworks/frameworks/FirebaseCrash.framework/Headers/FirebaseCrash.h b/MDBSocials/Pods/FirebaseCrash/Frameworks/frameworks/FirebaseCrash.framework/Headers/FirebaseCrash.h new file mode 100755 index 0000000..1865921 --- /dev/null +++ b/MDBSocials/Pods/FirebaseCrash/Frameworks/frameworks/FirebaseCrash.framework/Headers/FirebaseCrash.h @@ -0,0 +1 @@ +#import "FIRCrashLog.h" diff --git a/MDBSocials/Pods/FirebaseCrash/Frameworks/frameworks/FirebaseCrash.framework/Modules/module.modulemap b/MDBSocials/Pods/FirebaseCrash/Frameworks/frameworks/FirebaseCrash.framework/Modules/module.modulemap new file mode 100755 index 0000000..eef609c --- /dev/null +++ b/MDBSocials/Pods/FirebaseCrash/Frameworks/frameworks/FirebaseCrash.framework/Modules/module.modulemap @@ -0,0 +1,13 @@ +framework module FirebaseCrash { + + export * + + umbrella header "FirebaseCrash.h" + + header "FIRCrashLog.h" + + link framework "CoreTelephony" + link framework "SystemConfiguration" + + link "c++" +} diff --git a/MDBSocials/Pods/FirebaseCrash/README.md b/MDBSocials/Pods/FirebaseCrash/README.md new file mode 100755 index 0000000..b0a8e9e --- /dev/null +++ b/MDBSocials/Pods/FirebaseCrash/README.md @@ -0,0 +1,54 @@ +# Firebase Crash Reporting + +Firebase Crash Reporting is a free mobile crash analytics service. It provides +detailed analytics and diagnostic information about the crashes encountered +by your users. For more information about crash reporting and many other +cool mobile services, check out [Firebase] (https://firebase.google.com). + +## Getting Started with Cocoapods + +1. Follow the instructions for + [setting up Firebase](https://developers.google.com/firebase/docs/ios/) +2. Add the following to your Podfile + + ``` + pod 'Firebase/Crash' + ``` + +3. Set up automatic symbol file uploads. Symbol files are required to + turn your stack traces into pretty classes and selectors. In + Xcode, click on your project file, choose your application target, + select "Build Phases", hit the little + sign to add a phase, + then select "Run Script". Fill the resulting build step with: + + ``` + "${PODS_ROOT}"/FirebaseCrash/upload-sym.sh + ``` + +## Testing Integration + +In order to try out integration, you need to force a crash +**while not attached to the debugger**. The debugger will +intercept all crashes, preventing Firebase Crash Reporting from +gathering any useful information. + +1. Add a crash somewhere in your app. This will do the trick: + + ``` + abort(); + ``` + +2. Run your app to get the latest code installed on the test + device, then once the app has launched, hit stop. + +3. Relaunch your app directly from the test device and trigger the crash. + +4. Restart your app (either in the debugger or not) and the crash will be + uploaded. Wait at least 10 seconds. Firebase Crash Reporting delays + crash uploading at startup to avoid creating contention with your own code. + +5. Your crash should show up in Firebase within 20 minutes. + +More information can be found in the +[Firebase documentation](https://developers.google.com/firebase/). +Happy bug hunting! diff --git a/MDBSocials/Pods/FirebaseCrash/batch-upload b/MDBSocials/Pods/FirebaseCrash/batch-upload new file mode 100755 index 0000000..5acd781 --- /dev/null +++ b/MDBSocials/Pods/FirebaseCrash/batch-upload @@ -0,0 +1,412 @@ +#!/bin/bash + +usage () { + echo >&2 "usage: ${0##*/} [-hv] [-p google-service] [-i info] service-account-file {mach-o file|uuid} ..." +} + +help () { + usage + cat >&2 </dev/null)"}" + xcdebug "FCR_BUNDLE_ID = ${FCR_BUNDLE_ID:="$(/usr/libexec/PlistBuddy -c 'print CFBundleIdentifier' "${INFO_PLIST}" 2>/dev/null)"}" +fi + +var_check FCR_PROD_VERS FCR_BUNDLE_ID + +ERROR=$'environment variable empty or unset\n\nExplicitly add to environment or set GoogleService-Info.plist (-p)\nand Info.plist (-i) flags to extract values from the files.\n\nTry "'"$0"' -h" for details.' + +: "${FIREBASE_API_KEY:?"${ERROR}"}" "${FIREBASE_APP_ID:?"${ERROR}"}" +: "${FCR_PROD_VERS:?"${ERROR}"}" "${FCR_BUNDLE_ID:?"${ERROR}"}" + +# Extract key from legacy cache. + +if [[ ! "${SERVICE_ACCOUNT_FILE}" ]]; then + xcwarning "Running extract-keys on desktop." + EXTRACT_KEYS="$(script_dir)/extract-keys" + (cd "${HOME}/Desktop"; "${EXTRACT_KEYS}") || exit $? + SERVICE_ACCOUNT_FILE="${HOME}/Desktop/${FIREBASE_APP_ID}.json" + xcdebug "Using ${SERVICE_ACCOUNT_FILE} as account file. Please move this and all other extracted keys to a safe place." +fi + +if [[ ! -f "${SERVICE_ACCOUNT_FILE}" ]]; then + echo >&2 "Unable to find service account file." + echo >&2 + usage + exit 2 +fi + +# usage: extract_symbols_and_upload *dwarf-file* *arch* *exe-file* +# +# Do NOT use the dSYM bundle path. While it may work on occasion, it +# is not guaranteed to do so; the full path to the DWARF companion +# file will always work. (Discovered by Kerem Erkan.) +# +# If the executable is empty, use the DWARF companion file as a proxy +# for the executable. +extract_symbols_and_upload () { + local DWARF_COMPANION="$1" ARCH="$2" EXECUTABLE="$3" + + if [[ ! "${EXECUTABLE}" ]]; then + xcdebug "No executable; using ${DWARF_COMPANION} as symbol source." + + EXECUTABLE="${DWARF_COMPANION}" + unset DWARF_COMPANION + fi + + [[ "${EXECUTABLE}" ]] || return 1 + + : "${SWIFT_DEMANGLE:="$(xcrun --find swift-demangle 2>/dev/null | head -n1)"}" + + fcr_mktemp SYMBOL_FILE + + "${DUMP_SYMS:="$(script_dir)/dump_syms"}" -a "${ARCH}" ${DWARF_COMPANION:+-g "${DWARF_COMPANION}"} "${EXECUTABLE}" | "${SWIFT_DEMANGLE:=cat}" >|"${SYMBOL_FILE}" || return $? + + fcr_upload_files "${SYMBOL_FILE}" || return $? +} + +# usage: is_executable *path* +# +# Check to see if the file is an executable or a dSYM bundle +is_executable () { + [[ -f "$1" || ( -d "$1" && "${1%/}" == *.dSYM ) ]] +} + +# usage: is_uuid *string* +# +# Verify that the argument is a UUID. +is_uuid () { + [[ "$1" =~ ^[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}$ ]] +} + +# usage: set_uuids_archs *mach-o-file* +# +# side effect: appends to UUIDS, ARCHS +# +# Extract the uuid and architecture information from the given Mach-O +# file and append the information to the UUIDS and ARCHS arrays. +set_uuids_archs () { + eval "$(dwarfdump --uuid "$1" | awk '/^UUID:/ { print "UUIDS+=(" $2 "); ARCHS+=" $3 }')" +} + +# usage: mdls_to_bash +# +# Convert the output of mdls to a string consumable by bash. mdls +# outputs string arrays as quoted strings separated by commas, and +# Unicode characters as '\Uxxxx'. +# +# Note: this is sensitive to the current locale. If the locale is not +# UTF-8, then wide-character warnings will result if the strings +# contain non-ASCII characters. This is actually a desired behavior, +# because bash has issues with non-Unicode encodings for file names. +# (The macOS default is to have UTF-8 enabled, so this should not be a +# problem for the majority of use cases.) +mdls_to_bash () { + perl -C -ple 's/,$//; s/\\U(....)/chr hex $1/ge' +} + +for EXE; do + if is_executable "${EXE}"; then + xcdebug "Assuming ${EXE} is an executable or dSYM bundle." + + # Import architecture UUID information + UUIDS=() ARCHS=() + set_uuids_archs "${EXE}" + + for I in "${!UUIDS[@]}"; do + xcdebug "Found ${UUIDS[$I]} for ${ARCHS[$I]} in ${EXE}" + done + + if ((${#UUIDS[*]} == 0)); then + xcwarning "${EXE} exists, but has no architecture information." + continue + fi + + if [[ "${EXE}" = *.dSYM ]]; then + xcdebug "Removing dSYM bundle as executable target." + unset EXE + fi + + elif is_uuid "${EXE}"; then + xcdebug "${EXE} looks like a UUID to me." + UUIDS=("${EXE}"); unset EXE + + else + xcwarning "${EXE}: not an executable, bundle, or UUID." + continue + fi + + BUNDLES=() + + for UUID in "${UUIDS[@]}"; do + xcdebug "Searching for ${UUID} ..." + + QUERY_UUID="com_apple_xcode_dsym_uuids == '${UUID}'" + QUERY_TYPE="kMDItemContentType == 'com.apple.xcode.dsym' || kMDItemContentType == 'com.apple.xcode.archive'" + QUERY="(${QUERY_UUID}) && (${QUERY_TYPE})" + + if ((VERBOSE > 1)); then + xcnote "Passing query \"${QUERY}\" to mdfind." + fi + + MD_FIND_RESULT=() + + eval "$(mdfind "${QUERY}" -0 | xargs -0 perl -le 'print "MD_FIND_RESULT+=(\Q$_\E)" for @ARGV')" + + xcdebug "mdfind returned (${MD_FIND_RESULT[*]})" + + # BUNDLES should contain no duplicates. + for I in "${!MD_FIND_RESULT[@]}"; do + for BUNDLE in "${BUNDLES[@]}"; do + if [[ "${MD_FIND_RESULT[$I]}" == "$BUNDLE" ]]; then + unset "MD_FIND_RESULT[$I]" + fi + done + done + + BUNDLES+=("${MD_FIND_RESULT[@]}") + done + + if [[ ${#BUNDLES[@]} == 0 && ${#ARCHS[@]} == 0 ]]; then + xcwarning "No executable or bundle found for ${UUIDS[*]}." + xcnote "Try passing in the executable itself instead of a UUID." + continue + fi + + xcdebug "BUNDLES = (${BUNDLES[*]})" + + if [[ ${#BUNDLES[@]} == 0 ]]; then + xcdebug "No dSYM bundle found." + + # The dSYM has to be on a normal volume (not temporary). It + # can, however, be shared among multiple executables. + if [[ ! "${SCRATCH_BUNDLE}" ]]; then + SCRATCH_BUNDLE="${HOME}/com.google.BatchUploadScratchFile.dSYM" + FCR_TEMPORARY_FILES+=("${SCRATCH_BUNDLE}") + fi + + xcdebug "Creating one in ${SCRATCH_BUNDLE}" + + BUNDLES=("${SCRATCH_BUNDLE}") + + # Create the dSYM bundle. This may produce an empty dSYM + # bundle if the executable has no debugging information. + xcrun dsymutil -o "${BUNDLES[0]}" "${EXE}"; STATUS=$? + + if ((STATUS)); then + xcwarning "Command dsymutil failed with exit code ${STATUS}." + continue + fi + + # Import the dSYM bundle. There is a momentary delay between + # creating the bundle and having it indexed; explicitly + # importing guarantees the mds database is up-to-date when we + # ask it for information about UUIDs and paths. + mdimport "${SCRATCH_BUNDLE}"; STATUS=$? + + if ((STATUS)); then + xcwarning "Command mdimport failed with exit code ${STATUS}." + continue + fi + fi + + SEEN_ARCH=() SEEN_PATH=() + + for BUNDLE in "${BUNDLES[@]}"; do + typeset -a BNDL_UUIDS BNDL_PATHS # keeps ShellLint happy + + eval "BNDL_UUIDS=$(mdls -raw -name com_apple_xcode_dsym_uuids "${BUNDLE}" | mdls_to_bash)" + eval "BNDL_PATHS=$(mdls -raw -name com_apple_xcode_dsym_paths "${BUNDLE}" | mdls_to_bash)" + + # Neither of these SHOULD occur, but curious things happen out + # in the field. + if ((${#BNDL_UUIDS[@]} != ${#BNDL_PATHS[@]})); then + xcwarning "${BUNDLE}: Malformed dSYM bundle." + continue + elif ((${#BNDL_UUIDS[@]} == 0)); then + xcwarning "${BUNDLE}: No DWARF information." + continue + fi + + # If no executable was specified, then the UUIDS and ARCHS + # arrays are empty. Populate them with information from the + # bundle. + if [[ ! "${EXE}" ]]; then + # The final UUIDS setting will be the intersection of the + # discovered set and the originally specified UUIDS. This + # is to prevent uploading potentially private information. + SOUGHT_UUIDS=("${UUIDS[@]}") + + UUIDS=() ARCHS=() + for BNDL_PATH in "${BNDL_PATHS[@]}"; do + set_uuids_archs "${BUNDLE}/${BNDL_PATH}" + done + + if ((${#SOUGHT_UUIDS[@]})); then + for I in "${!UUIDS[@]}"; do + for UUID in "${SOUGHT_UUIDS[@]}"; do + if [[ "${UUIDS[$I]}" == "${UUID}" ]]; then + continue 2 + fi + done + + # This is not the DWARF you are looking for... + xcdebug "Rejecting ${UUIDS[$I]} (${ARCHS[$I]}) as candidate DWARF file." + unset "UUIDS[$I]" "ARCHS[$I]" + done + fi + + unset SOUGHT_UUIDS + fi + + for I in "${!BNDL_UUIDS[@]}"; do + # See comment on extract_symbols_and_upload for why the + # full path to the companion file is required. + + BNDL_UUID="${BNDL_UUIDS[$I]}" DWARF_COMPANION="${BUNDLE}/${BNDL_PATHS[$I]}" + + for J in "${!ARCHS[@]}"; do + # A dSYM bundle can contain multiple architectures for + # multiple applications. Make sure we get the right + # one. + if [[ "${BNDL_UUID}" == "${UUIDS[$J]}" ]]; then + ARCH="${ARCHS[$J]}" + break + fi + done + + if [[ ! "${ARCH}" ]]; then + # This is not an error: it is legal for a dSYM bundle + # to contain debugging information for multiple + # executables (such as a framework with multiple + # subframeworks). Just ignore it. + xcdebug "No matching information found in ${DWARF_COMPANION} with UUID ${BNDL_UUID}." + continue + fi + + xcdebug "Found ${UUID} for ${ARCH} in ${DWARF_COMPANION}" + + # Have we already uploaded this file? + for J in "${!SEEN_ARCH[@]}"; do + if [[ "${ARCH}" == "${SEEN_ARCH[$J]}" ]] && cmp -s "${DWARF_COMPANION}" "${SEEN_PATH[$J]}"; then + xcdebug "${DWARF_COMPANION}: copy of ${SEEN_PATH[$J]}; no need to upload." + continue 2 + fi + done + + if [[ -f "${DWARF_COMPANION}" ]]; then + extract_symbols_and_upload "${DWARF_COMPANION}" "${ARCH}" "${EXE}" || exit $? + SEEN_ARCH+=("${ARCH}") SEEN_PATH+=("${DWARF_COMPANION}") + fi + done + done +done + +# For debugging odd cases. +if "${KEEP_TEMPORARIES}"; then + FCR_TEMPORARY_FILES=() +fi + +echo "Done." diff --git a/MDBSocials/Pods/FirebaseCrash/dump_syms b/MDBSocials/Pods/FirebaseCrash/dump_syms new file mode 100755 index 0000000..a48b2d9 Binary files /dev/null and b/MDBSocials/Pods/FirebaseCrash/dump_syms differ diff --git a/MDBSocials/Pods/FirebaseCrash/extract-keys b/MDBSocials/Pods/FirebaseCrash/extract-keys new file mode 100755 index 0000000..0da5700 --- /dev/null +++ b/MDBSocials/Pods/FirebaseCrash/extract-keys @@ -0,0 +1,12 @@ +#!/bin/bash + +PLIST="${HOME}/Library/Preferences/com.google.SymbolUpload.plist" + +[[ -f $PLIST ]] || exit + +defaults read com.google.SymbolUpload | +perl -nle '/"(app_\d+_\d+_ios_.*)"/ and print $1' | +while read KEY; do + APP_ID="${KEY#app_}"; APP_ID="${APP_ID//_/:}" + plutil -extract "${KEY}" json -o "${APP_ID}.json" "${PLIST}" +done diff --git a/MDBSocials/Pods/FirebaseCrash/upload-sym b/MDBSocials/Pods/FirebaseCrash/upload-sym new file mode 100755 index 0000000..1d802a3 --- /dev/null +++ b/MDBSocials/Pods/FirebaseCrash/upload-sym @@ -0,0 +1,270 @@ +#!/bin/bash + +usage () { + echo >&2 "usage: $0 [-h] [-v] [-w|-e] service-account-file" +} + +help () { + usage + + cat >&2 <&2 "Either -w or -e may be specified, but not both." + echo >&2 + usage + exit 2 +fi + +SERVICE_ACCOUNT_FILE="$1"; shift + +if (($#)); then + echo >&2 "Unexpected argument '$1'" + echo >&2 + usage + exit 2 +fi + +export PATH=/bin:/usr/bin # play it safe + +# Load common utility routines. + +. "$(dirname "$0")/upload-sym-util.bash" + +# Make the error output Xcode-friendly. + +# This is a bit of Bash voodoo that cries for an explanation and is +# horribly underdocumented on-line. The construct '>(...)' starts a +# subprocess with its stdin connected to a pipe. After starting the +# subprocess, the parser replaces the construct with the NAME of the +# writable end of the pipe as a named file descriptor '/dev/fd/XX', +# then reevaluates the line. So, after the subprocess is started +# (which filters stdin and outputs to stderr [not stdout]), the line +# "exec 2> /dev/fd/XX" is evaluated. This redirects the main +# process's stderr to the given file descriptor. +# +# The end result is that anything sent to stderr of the form: +# file.in: line 47: blah blah +# is replaced with +# file.in:47: error: blah blah +# which Xcode will detect and emphasize in the formatted output. + +exec 2> >(sed -e 's/: line \([0-9]*\):/:\1: error:/' >&2) + +# Be long-winded about problems. The user may not understand how this +# script works or what prerequisites it has. If the user sees this, +# it is likely that they are executing the script outside of an Xcode +# build. + +ERRMSG=$'Value missing\n\nThis script must be executed as part of an Xcode build stage to have the\nproper environment variables set.' + +# Locate Xcode-generated files. + +: "${TARGET_BUILD_DIR:?"${ERRMSG}"}" +: "${FULL_PRODUCT_NAME:?"${ERRMSG}"}" + +DSYM_BUNDLE="${DWARF_DSYM_FOLDER_PATH?"${ERRMSG}"}/${DWARF_DSYM_FILE_NAME?"${ERRMSG}"}" +[[ -e "${DSYM_BUNDLE}" ]] || unset DSYM_BUNDLE + +EXECUTABLE="${TARGET_BUILD_DIR?"${ERRMSG}"}/${EXECUTABLE_PATH?"${ERRMSG}"}" + +# Locate dump_syms utility. + +if ! [[ -f "${FCR_DUMP_SYMS:=$(script_dir)/dump_syms}" && -x "${FCR_DUMP_SYMS}" ]]; then + xcerror "Cannot find dump_syms." + xcnote "It should have been installed with the Cocoapod. The location of dump_syms can be explicitly set using the environment variable FCR_DUMP_SYMS if you are using a non-standard install." + + exit 2 +fi + +if [[ ! "${FIREBASE_API_KEY}" || ! "${FIREBASE_APP_ID}" ]]; then + : "${SERVICE_PLIST:="$(find "${TARGET_BUILD_DIR}/${FULL_PRODUCT_NAME}" -name GoogleService-Info.plist | head -n1)"}" + : "${SERVICE_PLIST:?"GoogleService-Info.plist could not be located"}" + : "${FIREBASE_API_KEY:="$(property API_KEY "${SERVICE_PLIST}")"}" + : "${FIREBASE_APP_ID:="$(property GOOGLE_APP_ID "${SERVICE_PLIST}")"}" +fi + +if ! [[ "${FIREBASE_API_KEY}" ]]; then + xcerror "Unable to get API_KEY from ${SERVICE_PLIST}." + xcnote "Specify FIREBASE_API_KEY in environment." + exit 2 +fi + +if ! [[ "${FIREBASE_APP_ID}" ]]; then + xcerror "Unable to get GOOGLE_APP_ID from ${SERVICE_PLIST}." + xcnote "Specify FIREBASE_APP_ID in environment." + exit 2 +fi + +# Load Info.plist values (Bundle ID & version) + +INFOPLIST="${TARGET_BUILD_DIR}/${INFOPLIST_PATH}" + +if [[ -f "${INFOPLIST}" ]]; then + : "${FCR_PROD_VERS:="$(property CFBundleShortVersionString "${INFOPLIST}")"}" + : "${FCR_BUNDLE_ID:="$(property CFBundleIdentifier "${INFOPLIST}")"}" +fi + +if ! [[ "${FCR_PROD_VERS}" ]]; then + xcerror "Unable to get CFBundleShortVersionString from Info.plist." + xcnote "Specify FCR_PROD_VERS in environment." + exit 2 +fi + +if ! [[ "${FCR_BUNDLE_ID}" ]]; then + xcerror "Unable to get CFBundleIdentifier from Info.plist." + xcnote "Specify FCR_BUNDLE_ID in environment." + exit 2 +fi + +# Support legacy account file cache before giving up + +if [[ ! -f "${SERVICE_ACCOUNT_FILE}" ]]; then + xcwarning "No service account JSON file specified on command line." + + xcdebug "Trying to extract JSON file from cache." + + CACHE_PLIST="${HOME}/Library/Preferences/com.google.SymbolUpload.plist" + + if [[ -f "${CACHE_PLIST}" ]]; then + fcr_mktemp SERVICE_ACCOUNT_FILE + /usr/bin/plutil -extract "app_${FIREBASE_APP_ID//:/_}" \ + json -o "${SERVICE_ACCOUNT_FILE}" "${CACHE_PLIST}" >/dev/null 2>&1 + if [[ ! -s "${SERVICE_ACCOUNT_FILE}" ]]; then + xcwarning "${FIREBASE_APP_ID} not found in cache." + /bin/rm -f "${SERVICE_ACCOUNT_FILE}" + else + xcnote "${FIREBASE_APP_ID} found in cache. Consider using extract-keys.pl to reduce reliance on cache." + fi + else + xcnote "No cache file found." + fi +fi + +if [[ ! -f "${SERVICE_ACCOUNT_FILE}" ]]; then + xcerror "All attempts to find the service account JSON file have failed." + xcnote "You must supply it on the command line." + echo >&2 -n "$0:1: note: "; usage + exit 2 +fi + +# Dump collected information if requested + +if ((VERBOSE >= 2)); then + xcnote "FIREBASE_API_KEY = ${FIREBASE_API_KEY}" + xcnote "FIREBASE_APP_ID = ${FIREBASE_APP_ID}" + xcnote "DSYM_BUNDLE = ${DSYM_BUNDLE:-(unset, will use symbols in executable)}" + xcnote "EXECUTABLE = ${EXECUTABLE}" + xcnote "INFOPLIST = ${INFOPLIST}" + xcnote "FCR_PROD_VERS = ${FCR_PROD_VERS}" + xcnote "FCR_BUNDLE_ID = ${FCR_BUNDLE_ID}" +fi + +# Create and upload symbol files for each architecture + +if [[ ! -x "${SWIFT_DEMANGLE:="$(xcrun --find swift-demangle 2>/dev/null)"}" ]]; then + SWIFT_DEMANGLE=/bin/cat +fi + +for ARCH in ${ARCHS?:}; do + SYMBOL_FILE="SYMBOL_FILE_${ARCH}" + fcr_mktemp "${SYMBOL_FILE}" SCRATCH + + # Just because there is a dSYM bundle at that path does not mean + # it is the RIGHT dSYM bundle... + + if [[ -d "${DSYM_BUNDLE}" ]]; then + DSYM_UUID="$(dwarfdump --arch "${ARCH}" --uuid "${DSYM_BUNDLE}" | awk '{print $2}')" + EXE_UUID="$(dwarfdump --arch "${ARCH}" --uuid "${EXECUTABLE}" | awk '{print $2}')" + if ((VERBOSE > 1)); then + xcnote "dSYM bundle UUID: ${DSYM_UUID}" + xcnote "Executable UUID: ${EXE_UUID}" + fi + if [[ "${DSYM_UUID}" != "${EXE_UUID}" ]]; then + xcdebug "Current dSYM bundle is not valid." + unset DSYM_BUNDLE + fi + fi + + if [[ ! -d "${DSYM_BUNDLE}" ]]; then + xcdebug "Extracting dSYM from executable." + fcr_mktempdir TMP_DSYM + DSYM_BUNDLE="${TMP_DSYM}/${EXECUTABLE##*/}.dSYM" + xcrun dsymutil -o "${DSYM_BUNDLE}" "${EXECUTABLE}" + STATUS=$? + if ((STATUS)); then + xcerror "Command dsymutil failed with exit code ${STATUS}." + exit ${STATUS} + fi + fi + + "${FCR_DUMP_SYMS}" -a "${ARCH}" -g "${DSYM_BUNDLE}" "${EXECUTABLE}" >"${SCRATCH}" 2> >(sed -e 's/^/warning: dump_syms: /' | grep -v 'failed to demangle' >&2) + + STATUS=$? + if ((STATUS)); then + xcerror "Command dump_syms failed with exit code ${STATUS}." + exit ${STATUS} + fi + + "${SWIFT_DEMANGLE}" <"${SCRATCH}" >|"${!SYMBOL_FILE}" || exit 1 + + if ((VERBOSE >= 2)); then + xcnote "${EXECUTABLE##*/} (architecture ${ARCH}) symbol dump follows (first 20 lines):" + head >&2 -n20 "${!SYMBOL_FILE}" + elif ((VERBOSE >= 1)); then + xcnote "${EXECUTABLE##*/} (architecture ${ARCH}) symbol dump follows (first line only):" + head >&2 -n1 "${!SYMBOL_FILE}" + fi + + fcr_upload_files "${!SYMBOL_FILE}" || exit 1 +done diff --git a/MDBSocials/Pods/FirebaseCrash/upload-sym-util.bash b/MDBSocials/Pods/FirebaseCrash/upload-sym-util.bash new file mode 100755 index 0000000..a8f8c65 --- /dev/null +++ b/MDBSocials/Pods/FirebaseCrash/upload-sym-util.bash @@ -0,0 +1,382 @@ +# Output a clickable message. This will not count as a warning or +# error. + +xcnote () { + echo >&2 "${BASH_SOURCE[1]}:${BASH_LINENO[0]}: note: $*" +} + +# Output a clickable message prefixed with a warning symbol (U+26A0) +# and highlighted yellow. This will increase the overall warning +# count. A non-zero value for the variable ERRORS_ONLY will force +# warnings to be treated as errors. + +if ((ERRORS_ONLY)); then + xcwarning () { + echo >&2 "${BASH_SOURCE[1]}:${BASH_LINENO[0]}: error: $*" + } +else + xcwarning () { + echo >&2 "${BASH_SOURCE[1]}:${BASH_LINENO[0]}: warning: $*" + } +fi + +# Output a clickable message prefixed with a halt symbol (U+1F6D1) and +# highlighted red. This will increase the overall error count. Xcode +# will flag the build as failed if the error count is non-zero at the +# end of the build, even if this script returns a successful exit +# code. Set WARNINGS_ONLY to non-zero to prevent this. + +if ((WARNINGS_ONLY)); then + xcerror () { + echo >&2 "${BASH_SOURCE[1]}:${BASH_LINENO[0]}: warning: $*" + } +else + xcerror () { + echo >&2 "${BASH_SOURCE[1]}:${BASH_LINENO[0]}: error: $*" + } +fi + +xcdebug () { + if ((VERBOSE)); then + echo >&2 "${BASH_SOURCE[1]}:${BASH_LINENO[0]}: note: $*" + fi +} + +# Locate the script directory. + +script_dir () { + local SCRIPT="$0" SCRIPT_DIR="$(dirname "$0")" + + while SCRIPT="$(readlink "${SCRIPT}")"; do + [[ "${SCRIPT}" != /* ]] && SCRIPT="${SCRIPT_DIR}/${SCRIPT}" + SCRIPT_DIR="$(dirname "${SCRIPT}")" + done + + ( cd "${SCRIPT_DIR}"; pwd -P ) +} + +# Timestamp needed for various operations. Does not need to be exact, +# but does need to be consistent across web service calls. + +readonly NOW="$(/bin/date +%s)" + +# All files created by fcr_mktemp will be listed in FCR_TEMPORARY_FILES. +# Delete these when the enclosing script exits. (You may manually +# add files to this array as well to have them cleaned up on exit.) + +typeset -a FCR_TEMPORARY_FILES +trap 'STATUS=$?; rm -rf "${FCR_TEMPORARY_FILES[@]}"; exit ${STATUS}' 0 1 2 15 + +# Create a temporary file and add it to the list of files to delete when the +# script finishes. +# +# usage: fcr_mktemp VARNAME... + +fcr_mktemp () { + for VAR; do + eval "${VAR}=\$(mktemp -t com.google.FIRCrash) || return 1" + FCR_TEMPORARY_FILES+=("${!VAR}") + done +} + +# Create a temporary directory and add it to the list of files to +# delete when the script finishes. +# +# usage: fcr_mktempdir VARNAME... + +fcr_mktempdir () { + for VAR; do + eval "${VAR}=\$(mktemp -d -t com.google.FIRCrash) || return 1" + FCR_TEMPORARY_FILES+=("${!VAR}") + done +} + +# The keys we care about in the JSON objects. There are others that +# we do not use. Note that 'expires_at' and 'app_id' are not part of +# the original payload, but are computed from the environment used to +# make the call. + +FCR_SVC_KEYS=(client_email private_key private_key_id token_uri type) +FCR_TOK_KEYS=(access_token expires_at token_type app_id) + +# Extract a value from the property list. +# +# usage: property *name* *file* + +property () { + [[ -f "$2" ]] || echo '{}' >|"$2" # keeps PlistBuddy quiet + /usr/libexec/PlistBuddy "$2" -c "Print :$1" 2>/dev/null +} + +# Retrieve the property from the service account property list. +# +# usage: svc_property *name* + +svc_property () { + property "$1" "${SVC_PLIST}" +} + +# Does the same as svc_property above but for the token cache +# property list. +# +# usage: tok_property *name* + +tok_property () { + property "$1" "${TOK_PLIST}" +} + +# Verify that the service account property list has values for the +# required keys. Does not check the values themselves. + +fcr_verify_svc_plist () { + for key in "${FCR_SVC_KEYS[@]}"; do + if ! svc_property "${key}" >/dev/null; then + xcdebug "${key} not found in ${SVC_PLIST}. Service account invalid." + return 1 + fi + done +} + +# Verify that the token cache property list has values for the +# required keys. If the token_type is incorrect, the expiration date +# has been passed, or the application id does not match, return +# failure. + +fcr_verify_tok_plist () { + for key in "${FCR_TOK_KEYS[@]}"; do + if ! tok_property "${key}" >/dev/null; then + xcdebug "${key} not found in ${TOK_PLIST}. Token invalid." + return 1 + fi + done + + if [[ "$(tok_property token_type)" != "Bearer" ]]; then + xcwarning "Invalid token type '$(tok_property token_type)'." + return 1 + fi + + if (($(tok_property expires_at) <= NOW)); then + xcdebug "Token well-formed but expired at $(date -jf %s "$(tok_property expires_at)")." + echo '{}' >|"${TOK_PLIST}" + return 1 + fi + + if [[ "$(tok_property app_id)" != "${FIREBASE_APP_ID}" ]]; then + xcdebug "Cached token is for a different application." + echo '{}' >|"${TOK_PLIST}" + return 1 + fi +} + +# Convert a JSON certificate file to a PList certificate file. +# +# usage: fcr_load_certificate VARNAME + +fcr_load_certificate () { + : "${SERVICE_ACCOUNT_FILE:?must be the path to the service account JSON file.}" + fcr_mktemp "$1" + + if ! /usr/bin/plutil -convert binary1 "${SERVICE_ACCOUNT_FILE}" -o "${!1}"; then + xcerror "Unable to read service account file ${SERVICE_ACCOUNT_FILE}." + return 2 + fi +} + +# BASE64URL uses a sligtly different character set than BASE64, and +# uses no padding characters. + +function base64url () { + /usr/bin/base64 | sed -e 's/=//g; s/+/-/g; s/\//_/g' +} + +# Assemble the JSON Web Token (RFC 1795) +# +# usage: fcr_create_jwt *client-email* *token-uri* + +fcr_create_jwt () { + local JWT_HEADER="$(base64url <<<'{"alg":"RS256","typ":"JWT"}')" + local JWT_CLAIM="$(base64url <<<'{'"\"iss\":\"${1:?}\",\"aud\":\"${2:?}\",\"exp\":\"$((NOW + 3600))\",\"iat\":\"${NOW}\",\"scope\":\"https://www.googleapis.com/auth/mobilecrashreporting\""'}')" + local JWT_BODY="${JWT_HEADER}.${JWT_CLAIM}" + local JWT_SIG="$(echo -n "${JWT_BODY}" | openssl dgst -sha256 -sign <(svc_property private_key) -binary | base64url)" + + echo "${JWT_BODY}.${JWT_SIG}" +} + +# Set the BEARER_TOKEN variable for authentication. +# +# usage: fcr_authenticate + +fcr_authenticate () { + : "${FIREBASE_APP_ID:?required to select authentication credentials}" + + local SVC_PLIST + + fcr_load_certificate SVC_PLIST || return 2 + + local TOK_PLIST="${HOME}/Library/Preferences/com.google.SymbolUploadToken.plist" + + if ((VERBOSE > 2)); then + CURLOPT='--trace-ascii /dev/fd/2' + elif ((VERBOSE > 1)); then + CURLOPT='--verbose' + else + CURLOPT='' + fi + + # If the token will expire in the next sixty seconds (or already + # has), reload it. + if ! fcr_verify_tok_plist; then + xcdebug "Token cannot be used. Requesting OAuth2 token using installed credentials." + + if ! fcr_verify_svc_plist; then + xcerror "Incorrect/incomplete service account file." + return 2 + else + xcdebug "Certificate information appears valid." + fi + + TOKEN_URI="$(svc_property token_uri)" + CLIENT_EMAIL="$(svc_property client_email)" + + # Assemble the JSON Web Token (RFC 1795) + local JWT="$(fcr_create_jwt "${CLIENT_EMAIL}" "${TOKEN_URI}")" + + fcr_mktemp TOKEN_JSON + + HTTP_STATUS="$(curl ${CURLOPT} -o "${TOKEN_JSON}" -s -d grant_type='urn:ietf:params:oauth:grant-type:jwt-bearer' -d assertion="${JWT}" -w '%{http_code}' "${TOKEN_URI}")" + + if [[ "${HTTP_STATUS}" == 403 ]]; then + xcerror "Invalid certificate. Unable to retrieve OAuth2 token." + return 2 + elif [[ "${HTTP_STATUS}" != 200 ]]; then + cat >&2 "${TOKEN_JSON}" + return 2 + fi + + # Store the token in the preferences directory for future use. + /usr/bin/plutil -convert binary1 "${TOKEN_JSON}" -o "${TOK_PLIST}" + + EXPIRES_IN="$(tok_property expires_in)" + EXPIRES_AT="$((EXPIRES_IN + NOW))" + + /usr/libexec/PlistBuddy \ + -c "Add :app_id string \"${FIREBASE_APP_ID}\"" \ + -c "Add :expires_at integer ${EXPIRES_AT}" \ + -c "Add :expiration_date date $(TZ=GMT date -jf %s ${EXPIRES_AT})" \ + "${TOK_PLIST}" + + if ! fcr_verify_tok_plist; then + ((VERBOSE)) && /usr/libexec/PlistBuddy -c 'Print' "${TOK_PLIST}" + + echo '{}' >|"${TOK_PLIST}" + xcwarning "Token returned is not valid." + xcnote "If this error persists, download a fresh certificate." + + return 2 + fi + else + xcdebug "Token still valid." + EXPIRES_AT="$(tok_property expires_at)" + fi + + xcdebug "Token will expire on $(date -jf %s "${EXPIRES_AT}")." + xcdebug "Using service account with key $(svc_property private_key_id)." + + BEARER_TOKEN="$(tok_property access_token)" + + if [[ ! "${BEARER_TOKEN}" ]]; then + if ((VERBOSE)); then + xcwarning "Current malformed token cache:" + tok_property | while read; do xcnote "${REPLY}"; done + fi + xcerror "Unable to retrieve authentication token from server." + return 2 + fi + + return 0 +} + +# Upload the files to the server. +# +# Arguments: Names of files to upload. + +fcr_upload_files() { + fcr_authenticate || return $? + + : "${FCR_PROD_VERS:?}" + : "${FCR_BUNDLE_ID:?}" + : "${FIREBASE_APP_ID:?}" + : "${FIREBASE_API_KEY:?}" + : "${FCR_BASE_URL:=https://mobilecrashreporting.googleapis.com}" + + fcr_mktemp FILE_UPLOAD_LOCATION_PLIST META_UPLOAD_RESULT_PLIST + + if ((VERBOSE > 2)); then + CURLOPT='--trace-ascii /dev/fd/2' + elif ((VERBOSE > 1)); then + CURLOPT='--verbose' + else + CURLOPT='' + fi + + for FILE; do + xcdebug "Get signed URL for uploading." + + URL="${FCR_BASE_URL}/v1/apps/${FIREBASE_APP_ID}" + + HTTP_STATUS="$(curl ${CURLOPT} -o "${FILE_UPLOAD_LOCATION_PLIST}" -sL -H "X-Ios-Bundle-Identifier: ${FCR_BUNDLE_ID}" -H "Authorization: Bearer ${BEARER_TOKEN}" -X POST -d '' -w '%{http_code}' "${URL}/symbolFileUploadLocation?key=${FIREBASE_API_KEY}")" + STATUS=$? + + if [[ "${STATUS}" == 22 && "${HTTP_STATUS}" == 403 ]]; then + xcerror "Unable to access resource. Token invalid." + xcnote "Please verify the service account file." + return 2 + elif [[ "${STATUS}" != 0 ]]; then + xcerror "curl exited with non-zero status ${STATUS}." + ((STATUS == 22)) && xcerror "HTTP response code is ${HTTP_STATUS}." + return 2 + fi + + /usr/bin/plutil -convert binary1 "${FILE_UPLOAD_LOCATION_PLIST}" || return 1 + + UPLOAD_KEY="$(property uploadKey "${FILE_UPLOAD_LOCATION_PLIST}")" + UPLOAD_URL="$(property uploadUrl "${FILE_UPLOAD_LOCATION_PLIST}")" + ERRMSG="$(property error:message "${FILE_UPLOAD_LOCATION_PLIST}")" + + if [[ "${ERRMSG}" ]]; then + if ((VERBOSE)); then + xcnote "Server response:" + /usr/bin/plutil -p "${FILE_UPLOAD_LOCATION_PLIST}" >&2 + fi + xcerror "symbolFileUploadLocation: ${ERRMSG}" + xcnote "symbolFileUploadLocation: Failed to get upload location." + return 1 + fi + + xcdebug "Upload symbol file." + + HTTP_STATUS=$(curl ${CURLOPT} -sfL -H 'Content-Type: text/plain' -H "Authorization: Bearer ${BEARER_TOKEN}" -w '%{http_code}' -T "${FILE}" "${UPLOAD_URL}") + STATUS=$? + + if ((STATUS == 22)); then # exit code 22 is a non-successful HTTP response + xcerror "upload: Unable to upload symbol file (HTTP Status ${HTTP_STATUS})." + return 1 + elif ((STATUS != 0)); then + xcerror "upload: Unable to upload symbol file (reason unknown)." + return 1 + fi + + xcdebug "Upload metadata information." + + curl ${CURLOPT} -sL -H 'Content-Type: application/json' -H "X-Ios-Bundle-Identifier: ${FCR_BUNDLE_ID}" -H "Authorization: Bearer ${BEARER_TOKEN}" -X POST -d '{"upload_key":"'"${UPLOAD_KEY}"'","symbol_file_mapping":{"symbol_type":2,"app_version":"'"${FCR_PROD_VERS}"'"}}' "${URL}/symbolFileMappings:upsert?key=${FIREBASE_API_KEY}" >|"${META_UPLOAD_RESULT_PLIST}" || return 1 + /usr/bin/plutil -convert binary1 "${META_UPLOAD_RESULT_PLIST}" || return 1 + + ERRMSG="$(property error:message "${META_UPLOAD_RESULT_PLIST}")" + + if [[ "${ERRMSG}" ]]; then + xcerror "symbolFileMappings:upsert: ${ERRMSG}" + xcnote "symbolFileMappings:upsert: The metadata for the symbol file failed to update." + return 1 + fi + done +} diff --git a/MDBSocials/Pods/FirebaseCrash/upload-sym.sh b/MDBSocials/Pods/FirebaseCrash/upload-sym.sh new file mode 100755 index 0000000..c0a34e3 --- /dev/null +++ b/MDBSocials/Pods/FirebaseCrash/upload-sym.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +echo "$0:0: error: $0 has been removed. Please use upload-sym instead." +exit 1 diff --git a/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/FirebaseDatabase b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/FirebaseDatabase new file mode 100755 index 0000000..6b226a4 Binary files /dev/null and b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/FirebaseDatabase differ diff --git a/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDataEventType.h b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDataEventType.h new file mode 100755 index 0000000..d940f9b --- /dev/null +++ b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDataEventType.h @@ -0,0 +1,43 @@ +/* + * Firebase iOS Client Library + * + * Copyright © 2013 Firebase - All Rights Reserved + * https://www.firebase.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binaryform must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY FIREBASE AS IS AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL FIREBASE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef Firebase_FIRDataEventType_h +#define Firebase_FIRDataEventType_h + +/** + * This enum is the set of events that you can observe at a Firebase Database location. + */ +typedef NS_ENUM(NSInteger, FIRDataEventType) { + FIRDataEventTypeChildAdded, // 0, fired when a new child node is added to a location + FIRDataEventTypeChildRemoved, // 1, fired when a child node is removed from a location + FIRDataEventTypeChildChanged, // 2, fired when a child node at a location changes + FIRDataEventTypeChildMoved, // 3, fired when a child node moves relative to the other child nodes at a location + FIRDataEventTypeValue // 4, fired when any data changes at a location and, recursively, any children +}; + +#endif diff --git a/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDataSnapshot.h b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDataSnapshot.h new file mode 100755 index 0000000..7953102 --- /dev/null +++ b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDataSnapshot.h @@ -0,0 +1,158 @@ +/* + * Firebase iOS Client Library + * + * Copyright © 2013 Firebase - All Rights Reserved + * https://www.firebase.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binaryform must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY FIREBASE AS IS AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL FIREBASE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class FIRDatabaseReference; + +/** + * A FIRDataSnapshot contains data from a Firebase Database location. Any time you read + * Firebase data, you receive the data as a FIRDataSnapshot. + * + * FIRDataSnapshots are passed to the blocks you attach with observeEventType:withBlock: or observeSingleEvent:withBlock:. + * They are efficiently-generated immutable copies of the data at a Firebase Database location. + * They can't be modified and will never change. To modify data at a location, + * use a FIRDatabaseReference (e.g. with setValue:). + */ +@interface FIRDataSnapshot : NSObject + + +/** @name Navigating and inspecting a snapshot */ + +/** + * Gets a FIRDataSnapshot for the location at the specified relative path. + * The relative path can either be a simple child key (e.g. 'fred') + * or a deeper slash-separated path (e.g. 'fred/name/first'). If the child + * location has no data, an empty FIRDataSnapshot is returned. + * + * @param childPathString A relative path to the location of child data. + * @return The FIRDataSnapshot for the child location. + */ +- (FIRDataSnapshot *)childSnapshotForPath:(NSString *)childPathString; + + +/** + * Return YES if the specified child exists. + * + * @param childPathString A relative path to the location of a potential child. + * @return YES if data exists at the specified childPathString, else NO. + */ +- (BOOL) hasChild:(NSString *)childPathString; + + +/** + * Return YES if the DataSnapshot has any children. + * + * @return YES if this snapshot has any children, else NO. + */ +- (BOOL) hasChildren; + + +/** + * Return YES if the DataSnapshot contains a non-null value. + * + * @return YES if this snapshot contains a non-null value, else NO. + */ +- (BOOL) exists; + + +/** @name Data export */ + +/** + * Returns the raw value at this location, coupled with any metadata, such as priority. + * + * Priorities, where they exist, are accessible under the ".priority" key in instances of NSDictionary. + * For leaf locations with priorities, the value will be under the ".value" key. + */ +- (id __nullable) valueInExportFormat; + + +/** @name Properties */ + +/** + * Returns the contents of this data snapshot as native types. + * + * Data types returned: + * * NSDictionary + * * NSArray + * * NSNumber (also includes booleans) + * * NSString + * + * @return The data as a native object. + */ +@property (strong, readonly, nonatomic, nullable) id value; + + +/** + * Gets the number of children for this DataSnapshot. + * + * @return An integer indicating the number of children. + */ +@property (readonly, nonatomic) NSUInteger childrenCount; + + +/** + * Gets a FIRDatabaseReference for the location that this data came from + * + * @return A FIRDatabaseReference instance for the location of this data + */ +@property (nonatomic, readonly, strong) FIRDatabaseReference * ref; + + +/** + * The key of the location that generated this FIRDataSnapshot. + * + * @return An NSString containing the key for the location of this FIRDataSnapshot. + */ +@property (strong, readonly, nonatomic) NSString* key; + + +/** + * An iterator for snapshots of the child nodes in this snapshot. + * You can use the native for..in syntax: + * + * for (FIRDataSnapshot* child in snapshot.children) { + * ... + * } + * + * @return An NSEnumerator of the children + */ +@property (strong, readonly, nonatomic) NSEnumerator* children; + +/** + * The priority of the data in this FIRDataSnapshot. + * + * @return The priority as a string, or nil if no priority was set. + */ +@property (strong, readonly, nonatomic, nullable) id priority; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDatabase.h b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDatabase.h new file mode 100755 index 0000000..fece3e6 --- /dev/null +++ b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDatabase.h @@ -0,0 +1,138 @@ +/* + * Firebase iOS Client Library + * + * Copyright © 2013 Firebase - All Rights Reserved + * https://www.firebase.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binaryform must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY FIREBASE AS IS AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL FIREBASE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import "FIRDatabaseReference.h" + +@class FIRApp; + +NS_ASSUME_NONNULL_BEGIN + +/** + * The entry point for accessing a Firebase Database. You can get an instance by calling + * [FIRDatabase database]. To access a location in the database and read or write data, + * use [FIRDatabase reference]. + */ +@interface FIRDatabase : NSObject + +/** + * Gets the instance of FIRDatabase for the default FIRApp. + * + * @return A FIRDatabase instance. + */ ++ (FIRDatabase *) database NS_SWIFT_NAME(database()); + +/** + * Gets an instance of FIRDatabase for a specific FIRApp. + * + * @param app The FIRApp to get a FIRDatabase for. + * @return A FIRDatabase instance. + */ ++ (FIRDatabase *) databaseForApp:(FIRApp*)app NS_SWIFT_NAME(database(app:)); + +/** The FIRApp instance to which this FIRDatabase belongs. */ +@property (weak, readonly, nonatomic) FIRApp *app; + +/** + * Gets a FIRDatabaseReference for the root of your Firebase Database. + */ +- (FIRDatabaseReference *) reference; + +/** + * Gets a FIRDatabaseReference for the provided path. + * + * @param path Path to a location in your Firebase Database. + * @return A FIRDatabaseReference pointing to the specified path. + */ +- (FIRDatabaseReference *) referenceWithPath:(NSString *)path; + +/** + * Gets a FIRDatabaseReference for the provided URL. The URL must be a URL to a path + * within this Firebase Database. To create a FIRDatabaseReference to a different database, + * create a FIRApp} with a FIROptions object configured with the appropriate database URL. + * + * @param url A URL to a path within your database. + * @return A FIRDatabaseReference for the provided URL. +*/ +- (FIRDatabaseReference *) referenceFromURL:(NSString *)databaseUrl; + +/** + * The Firebase Database client automatically queues writes and sends them to the server at the earliest opportunity, + * depending on network connectivity. In some cases (e.g. offline usage) there may be a large number of writes + * waiting to be sent. Calling this method will purge all outstanding writes so they are abandoned. + * + * All writes will be purged, including transactions and onDisconnect writes. The writes will + * be rolled back locally, perhaps triggering events for affected event listeners, and the client will not + * (re-)send them to the Firebase Database backend. + */ +- (void)purgeOutstandingWrites; + +/** + * Shuts down our connection to the Firebase Database backend until goOnline is called. + */ +- (void)goOffline; + +/** + * Resumes our connection to the Firebase Database backend after a previous goOffline call. + */ +- (void)goOnline; + +/** + * The Firebase Database client will cache synchronized data and keep track of all writes you've + * initiated while your application is running. It seamlessly handles intermittent network + * connections and re-sends write operations when the network connection is restored. + * + * However by default your write operations and cached data are only stored in-memory and will + * be lost when your app restarts. By setting this value to `YES`, the data will be persisted + * to on-device (disk) storage and will thus be available again when the app is restarted + * (even when there is no network connectivity at that time). Note that this property must be + * set before creating your first Database reference and only needs to be called once per + * application. + * + */ +@property (nonatomic) BOOL persistenceEnabled; + +/** + * Sets the dispatch queue on which all events are raised. The default queue is the main queue. + * + * Note that this must be set before creating your first Database reference. + */ +@property (nonatomic, strong) dispatch_queue_t callbackQueue; + +/** + * Enables verbose diagnostic logging. + * @param enabled YES to enable logging, NO to disable. + */ ++ (void) setLoggingEnabled:(BOOL)enabled; + +/** Retrieve the Firebase Database SDK version. */ ++ (NSString *) sdkVersion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDatabaseQuery.h b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDatabaseQuery.h new file mode 100755 index 0000000..a70aadb --- /dev/null +++ b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDatabaseQuery.h @@ -0,0 +1,318 @@ +/* + * Firebase iOS Client Library + * + * Copyright © 2013 Firebase - All Rights Reserved + * https://www.firebase.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binaryform must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY FIREBASE AS IS AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL FIREBASE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import "FIRDataEventType.h" +#import "FIRDataSnapshot.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef NSUInteger FIRDatabaseHandle; + +/** + * A FIRDatabaseQuery instance represents a query over the data at a particular location. + * + * You create one by calling one of the query methods (queryOrderedByChild:, queryStartingAtValue:, etc.) + * on a FIRDatabaseReference. The query methods can be chained to further specify the data you are interested in + * observing + */ +@interface FIRDatabaseQuery : NSObject + + +/** @name Attach observers to read data */ + +/** + * observeEventType:withBlock: is used to listen for data changes at a particular location. + * This is the primary way to read data from the Firebase Database. Your block will be triggered + * for the initial data and again whenever the data changes. + * + * Use removeObserverWithHandle: to stop receiving updates. + * @param eventType The type of event to listen for. + * @param block The block that should be called with initial data and updates. It is passed the data as a FIRDataSnapshot. + * @return A handle used to unregister this block later using removeObserverWithHandle: + */ +- (FIRDatabaseHandle)observeEventType:(FIRDataEventType)eventType withBlock:(void (^)(FIRDataSnapshot *snapshot))block; + + +/** + * observeEventType:andPreviousSiblingKeyWithBlock: is used to listen for data changes at a particular location. + * This is the primary way to read data from the Firebase Database. Your block will be triggered + * for the initial data and again whenever the data changes. In addition, for FIRDataEventTypeChildAdded, FIRDataEventTypeChildMoved, and + * FIRDataEventTypeChildChanged events, your block will be passed the key of the previous node by priority order. + * + * Use removeObserverWithHandle: to stop receiving updates. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called with initial data and updates. It is passed the data as a FIRDataSnapshot + * and the previous child's key. + * @return A handle used to unregister this block later using removeObserverWithHandle: + */ +- (FIRDatabaseHandle)observeEventType:(FIRDataEventType)eventType andPreviousSiblingKeyWithBlock:(void (^)(FIRDataSnapshot *snapshot, NSString *__nullable prevKey))block; + + +/** + * observeEventType:withBlock: is used to listen for data changes at a particular location. + * This is the primary way to read data from the Firebase Database. Your block will be triggered + * for the initial data and again whenever the data changes. + * + * The cancelBlock will be called if you will no longer receive new events due to no longer having permission. + * + * Use removeObserverWithHandle: to stop receiving updates. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called with initial data and updates. It is passed the data as a FIRDataSnapshot. + * @param cancelBlock The block that should be called if this client no longer has permission to receive these events + * @return A handle used to unregister this block later using removeObserverWithHandle: + */ +- (FIRDatabaseHandle)observeEventType:(FIRDataEventType)eventType withBlock:(void (^)(FIRDataSnapshot *snapshot))block withCancelBlock:(nullable void (^)(NSError* error))cancelBlock; + + +/** + * observeEventType:andPreviousSiblingKeyWithBlock: is used to listen for data changes at a particular location. + * This is the primary way to read data from the Firebase Database. Your block will be triggered + * for the initial data and again whenever the data changes. In addition, for FIRDataEventTypeChildAdded, FIRDataEventTypeChildMoved, and + * FIRDataEventTypeChildChanged events, your block will be passed the key of the previous node by priority order. + * + * The cancelBlock will be called if you will no longer receive new events due to no longer having permission. + * + * Use removeObserverWithHandle: to stop receiving updates. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called with initial data and updates. It is passed the data as a FIRDataSnapshot + * and the previous child's key. + * @param cancelBlock The block that should be called if this client no longer has permission to receive these events + * @return A handle used to unregister this block later using removeObserverWithHandle: + */ +- (FIRDatabaseHandle)observeEventType:(FIRDataEventType)eventType andPreviousSiblingKeyWithBlock:(void (^)(FIRDataSnapshot *snapshot, NSString *__nullable prevKey))block withCancelBlock:(nullable void (^)(NSError* error))cancelBlock; + + +/** + * This is equivalent to observeEventType:withBlock:, except the block is immediately canceled after the initial data is returned. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called. It is passed the data as a FIRDataSnapshot. + */ +- (void)observeSingleEventOfType:(FIRDataEventType)eventType withBlock:(void (^)(FIRDataSnapshot *snapshot))block; + + +/** + * This is equivalent to observeEventType:withBlock:, except the block is immediately canceled after the initial data is returned. In addition, for FIRDataEventTypeChildAdded, FIRDataEventTypeChildMoved, and + * FIRDataEventTypeChildChanged events, your block will be passed the key of the previous node by priority order. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called. It is passed the data as a FIRDataSnapshot and the previous child's key. + */ +- (void)observeSingleEventOfType:(FIRDataEventType)eventType andPreviousSiblingKeyWithBlock:(void (^)(FIRDataSnapshot *snapshot, NSString *__nullable prevKey))block; + + +/** + * This is equivalent to observeEventType:withBlock:, except the block is immediately canceled after the initial data is returned. + * + * The cancelBlock will be called if you do not have permission to read data at this location. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called. It is passed the data as a FIRDataSnapshot. + * @param cancelBlock The block that will be called if you don't have permission to access this data + */ +- (void)observeSingleEventOfType:(FIRDataEventType)eventType withBlock:(void (^)(FIRDataSnapshot *snapshot))block withCancelBlock:(nullable void (^)(NSError* error))cancelBlock; + + +/** + * This is equivalent to observeEventType:withBlock:, except the block is immediately canceled after the initial data is returned. In addition, for FIRDataEventTypeChildAdded, FIRDataEventTypeChildMoved, and + * FIRDataEventTypeChildChanged events, your block will be passed the key of the previous node by priority order. + * + * The cancelBlock will be called if you do not have permission to read data at this location. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called. It is passed the data as a FIRDataSnapshot and the previous child's key. + * @param cancelBlock The block that will be called if you don't have permission to access this data + */ +- (void)observeSingleEventOfType:(FIRDataEventType)eventType andPreviousSiblingKeyWithBlock:(void (^)(FIRDataSnapshot *snapshot, NSString *__nullable prevKey))block withCancelBlock:(nullable void (^)(NSError* error))cancelBlock; + +/** @name Detaching observers */ + +/** + * Detach a block previously attached with observeEventType:withBlock:. + * + * @param handle The handle returned by the call to observeEventType:withBlock: which we are trying to remove. + */ +- (void) removeObserverWithHandle:(FIRDatabaseHandle)handle; + + +/** + * Detach all blocks previously attached to this Firebase Database location with observeEventType:withBlock: + */ +- (void) removeAllObservers; + +/** + * By calling `keepSynced:YES` on a location, the data for that location will automatically be downloaded and + * kept in sync, even when no listeners are attached for that location. Additionally, while a location is kept + * synced, it will not be evicted from the persistent disk cache. + * + * @param keepSynced Pass YES to keep this location synchronized, pass NO to stop synchronization. +*/ + - (void) keepSynced:(BOOL)keepSynced; + + +/** @name Querying and limiting */ + + +/** +* queryLimitedToFirst: is used to generate a reference to a limited view of the data at this location. +* The FIRDatabaseQuery instance returned by queryLimitedToFirst: will respond to at most the first limit child nodes. +* +* @param limit The upper bound, inclusive, for the number of child nodes to receive events for +* @return A FIRDatabaseQuery instance, limited to at most limit child nodes. +*/ +- (FIRDatabaseQuery *)queryLimitedToFirst:(NSUInteger)limit; + + +/** +* queryLimitedToLast: is used to generate a reference to a limited view of the data at this location. +* The FIRDatabaseQuery instance returned by queryLimitedToLast: will respond to at most the last limit child nodes. +* +* @param limit The upper bound, inclusive, for the number of child nodes to receive events for +* @return A FIRDatabaseQuery instance, limited to at most limit child nodes. +*/ +- (FIRDatabaseQuery *)queryLimitedToLast:(NSUInteger)limit; + +/** +* queryOrderBy: is used to generate a reference to a view of the data that's been sorted by the values of +* a particular child key. This method is intended to be used in combination with queryStartingAtValue:, +* queryEndingAtValue:, or queryEqualToValue:. +* + * @param key The child key to use in ordering data visible to the returned FIRDatabaseQuery + * @return A FIRDatabaseQuery instance, ordered by the values of the specified child key. +*/ +- (FIRDatabaseQuery *)queryOrderedByChild:(NSString *)key; + +/** + * queryOrderedByKey: is used to generate a reference to a view of the data that's been sorted by child key. + * This method is intended to be used in combination with queryStartingAtValue:, queryEndingAtValue:, + * or queryEqualToValue:. + * + * @return A FIRDatabaseQuery instance, ordered by child keys. + */ +- (FIRDatabaseQuery *) queryOrderedByKey; + +/** + * queryOrderedByValue: is used to generate a reference to a view of the data that's been sorted by child value. + * This method is intended to be used in combination with queryStartingAtValue:, queryEndingAtValue:, + * or queryEqualToValue:. + * + * @return A FIRDatabaseQuery instance, ordered by child value. + */ +- (FIRDatabaseQuery *) queryOrderedByValue; + +/** + * queryOrderedByPriority: is used to generate a reference to a view of the data that's been sorted by child + * priority. This method is intended to be used in combination with queryStartingAtValue:, queryEndingAtValue:, + * or queryEqualToValue:. + * + * @return A FIRDatabaseQuery instance, ordered by child priorities. + */ +- (FIRDatabaseQuery *) queryOrderedByPriority; + +/** + * queryStartingAtValue: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryStartingAtValue: will respond to events at nodes with a value + * greater than or equal to startValue. + * + * @param startValue The lower bound, inclusive, for the value of data visible to the returned FIRDatabaseQuery + * @return A FIRDatabaseQuery instance, limited to data with value greater than or equal to startValue + */ +- (FIRDatabaseQuery *)queryStartingAtValue:(nullable id)startValue; + +/** + * queryStartingAtValue:childKey: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryStartingAtValue:childKey will respond to events at nodes with a value + * greater than startValue, or equal to startValue and with a key greater than or equal to childKey. + * + * @param startValue The lower bound, inclusive, for the value of data visible to the returned FIRDatabaseQuery + * @param childKey The lower bound, inclusive, for the key of nodes with value equal to startValue + * @return A FIRDatabaseQuery instance, limited to data with value greater than or equal to startValue + */ +- (FIRDatabaseQuery *)queryStartingAtValue:(nullable id)startValue childKey:(nullable NSString *)childKey; + +/** + * queryEndingAtValue: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryEndingAtValue: will respond to events at nodes with a value + * less than or equal to endValue. + * + * @param endValue The upper bound, inclusive, for the value of data visible to the returned FIRDatabaseQuery + * @return A FIRDatabaseQuery instance, limited to data with value less than or equal to endValue + */ +- (FIRDatabaseQuery *)queryEndingAtValue:(nullable id)endValue; + +/** + * queryEndingAtValue:childKey: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryEndingAtValue:childKey will respond to events at nodes with a value + * less than endValue, or equal to endValue and with a key less than or equal to childKey. + * + * @param endValue The upper bound, inclusive, for the value of data visible to the returned FIRDatabaseQuery + * @param childKey The upper bound, inclusive, for the key of nodes with value equal to endValue + * @return A FIRDatabaseQuery instance, limited to data with value less than or equal to endValue + */ +- (FIRDatabaseQuery *)queryEndingAtValue:(nullable id)endValue childKey:(nullable NSString *)childKey; + +/** + * queryEqualToValue: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryEqualToValue: will respond to events at nodes with a value equal + * to the supplied argument. + * + * @param value The value that the data returned by this FIRDatabaseQuery will have + * @return A FIRDatabaseQuery instance, limited to data with the supplied value. + */ +- (FIRDatabaseQuery *)queryEqualToValue:(nullable id)value; + +/** + * queryEqualToValue:childKey: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryEqualToValue:childKey will respond to events at nodes with a value + * equal to the supplied argument with a name equal to childKey. There will be at most one node that matches because + * child keys are unique. + * + * @param value The value that the data returned by this FIRDatabaseQuery will have + * @param childKey The name of nodes with the right value + * @return A FIRDatabaseQuery instance, limited to data with the supplied value and the key. + */ +- (FIRDatabaseQuery *)queryEqualToValue:(nullable id)value childKey:(nullable NSString *)childKey; + + +/** @name Properties */ + + +/** +* Gets a FIRDatabaseReference for the location of this query. +* +* @return A FIRDatabaseReference for the location of this query. +*/ +@property (nonatomic, readonly, strong) FIRDatabaseReference * ref; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDatabaseReference.h b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDatabaseReference.h new file mode 100755 index 0000000..5f847b6 --- /dev/null +++ b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRDatabaseReference.h @@ -0,0 +1,730 @@ +/* + * Firebase iOS Client Library + * + * Copyright © 2013 Firebase - All Rights Reserved + * https://www.firebase.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binaryform must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY FIREBASE AS IS AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL FIREBASE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#import +#import "FIRDatabaseQuery.h" +#import "FIRDatabase.h" +#import "FIRDataSnapshot.h" +#import "FIRMutableData.h" +#import "FIRTransactionResult.h" +#import "FIRServerValue.h" + +NS_ASSUME_NONNULL_BEGIN + +@class FIRDatabase; + +/** + * A FIRDatabaseReference represents a particular location in your Firebase Database + * and can be used for reading or writing data to that Firebase Database location. + * + * This class is the starting point for all Firebase Database operations. After you've + * initialized it with initWithUrl: you can use it + * to read data (ie. observeEventType:withBlock:), write data (ie. setValue:), and to create new + * FIRDatabaseReferences (ie. child:). + */ +@interface FIRDatabaseReference : FIRDatabaseQuery + + +/** @name Getting references to children locations */ + +/** + * Gets a FIRDatabaseReference for the location at the specified relative path. + * The relative path can either be a simple child key (e.g. 'fred') or a + * deeper slash-separated path (e.g. 'fred/name/first'). + * + * @param pathString A relative path from this location to the desired child location. + * @return A FIRDatabaseReference for the specified relative path. + */ +- (FIRDatabaseReference *)child:(NSString *)pathString; + +/** + * childByAppendingPath: is deprecated, use child: instead. + */ +- (FIRDatabaseReference *)childByAppendingPath:(NSString *)pathString __deprecated_msg("use child: instead"); + +/** + * childByAutoId generates a new child location using a unique key and returns a + * FIRDatabaseReference to it. This is useful when the children of a Firebase Database + * location represent a list of items. + * + * The unique key generated by childByAutoId: is prefixed with a client-generated + * timestamp so that the resulting list will be chronologically-sorted. + * + * @return A FIRDatabaseReference for the generated location. + */ +- (FIRDatabaseReference *) childByAutoId; + + +/** @name Writing data */ + +/** Write data to this Firebase Database location. + +This will overwrite any data at this location and all child locations. + +Data types that can be set are: + +- NSString -- @"Hello World" +- NSNumber (also includes boolean) -- @YES, @43, @4.333 +- NSDictionary -- @{@"key": @"value", @"nested": @{@"another": @"value"} } +- NSArray + +The effect of the write will be visible immediately and the corresponding +events will be triggered. Synchronization of the data to the Firebase Database +servers will also be started. + +Passing null for the new value is equivalent to calling remove:; +all data at this location or any child location will be deleted. + +Note that setValue: will remove any priority stored at this location, so if priority +is meant to be preserved, you should use setValue:andPriority: instead. + +@param value The value to be written. + */ +- (void) setValue:(nullable id)value; + + +/** + * The same as setValue: with a block that gets triggered after the write operation has + * been committed to the Firebase Database servers. + * + * @param value The value to be written. + * @param block The block to be called after the write has been committed to the Firebase Database servers. + */ +- (void) setValue:(nullable id)value withCompletionBlock:(void (^)(NSError *__nullable error, FIRDatabaseReference * ref))block; + + +/** + * The same as setValue: with an additional priority to be attached to the data being written. + * Priorities are used to order items. + * + * @param value The value to be written. + * @param priority The priority to be attached to that data. + */ +- (void) setValue:(nullable id)value andPriority:(nullable id)priority; + + +/** + * The same as setValue:andPriority: with a block that gets triggered after the write operation has + * been committed to the Firebase Database servers. + * + * @param value The value to be written. + * @param priority The priority to be attached to that data. + * @param block The block to be called after the write has been committed to the Firebase Database servers. + */ +- (void) setValue:(nullable id)value andPriority:(nullable id)priority withCompletionBlock:(void (^)(NSError *__nullable error, FIRDatabaseReference * ref))block; + + +/** + * Remove the data at this Firebase Database location. Any data at child locations will also be deleted. + * + * The effect of the delete will be visible immediately and the corresponding events + * will be triggered. Synchronization of the delete to the Firebase Database servers will + * also be started. + * + * remove: is equivalent to calling setValue:nil + */ +- (void) removeValue; + + +/** + * The same as remove: with a block that gets triggered after the remove operation has + * been committed to the Firebase Database servers. + * + * @param block The block to be called after the remove has been committed to the Firebase Database servers. + */ +- (void) removeValueWithCompletionBlock:(void (^)(NSError *__nullable error, FIRDatabaseReference * ref))block; + +/** + * Sets a priority for the data at this Firebase Database location. + * Priorities can be used to provide a custom ordering for the children at a location + * (if no priorities are specified, the children are ordered by key). + * + * You cannot set a priority on an empty location. For this reason + * setValue:andPriority: should be used when setting initial data with a specific priority + * and setPriority: should be used when updating the priority of existing data. + * + * Children are sorted based on this priority using the following rules: + * + * Children with no priority come first. + * Children with a number as their priority come next. They are sorted numerically by priority (small to large). + * Children with a string as their priority come last. They are sorted lexicographically by priority. + * Whenever two children have the same priority (including no priority), they are sorted by key. Numeric + * keys come first (sorted numerically), followed by the remaining keys (sorted lexicographically). + * + * Note that priorities are parsed and ordered as IEEE 754 double-precision floating-point numbers. + * Keys are always stored as strings and are treated as numbers only when they can be parsed as a + * 32-bit integer + * + * @param priority The priority to set at the specified location. + */ +- (void) setPriority:(nullable id)priority; + + +/** + * The same as setPriority: with a block that is called once the priority has + * been committed to the Firebase Database servers. + * + * @param priority The priority to set at the specified location. + * @param block The block that is triggered after the priority has been written on the servers. + */ +- (void) setPriority:(nullable id)priority withCompletionBlock:(void (^)(NSError *__nullable error, FIRDatabaseReference * ref))block; + +/** + * Updates the values at the specified paths in the dictionary without overwriting other + * keys at this location. + * + * @param values A dictionary of the keys to change and their new values + */ +- (void) updateChildValues:(NSDictionary *)values; + +/** + * The same as update: with a block that is called once the update has been committed to the + * Firebase Database servers + * + * @param values A dictionary of the keys to change and their new values + * @param block The block that is triggered after the update has been written on the Firebase Database servers + */ +- (void) updateChildValues:(NSDictionary *)values withCompletionBlock:(void (^)(NSError *__nullable error, FIRDatabaseReference * ref))block; + + +/** @name Attaching observers to read data */ + +/** + * observeEventType:withBlock: is used to listen for data changes at a particular location. + * This is the primary way to read data from the Firebase Database. Your block will be triggered + * for the initial data and again whenever the data changes. + * + * Use removeObserverWithHandle: to stop receiving updates. + * @param eventType The type of event to listen for. + * @param block The block that should be called with initial data and updates. It is passed the data as a FIRDataSnapshot. + * @return A handle used to unregister this block later using removeObserverWithHandle: + */ +- (FIRDatabaseHandle)observeEventType:(FIRDataEventType)eventType withBlock:(void (^)(FIRDataSnapshot *snapshot))block; + + +/** + * observeEventType:andPreviousSiblingKeyWithBlock: is used to listen for data changes at a particular location. + * This is the primary way to read data from the Firebase Database. Your block will be triggered + * for the initial data and again whenever the data changes. In addition, for FIRDataEventTypeChildAdded, FIRDataEventTypeChildMoved, and + * FIRDataEventTypeChildChanged events, your block will be passed the key of the previous node by priority order. + * + * Use removeObserverWithHandle: to stop receiving updates. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called with initial data and updates. It is passed the data as a FIRDataSnapshot + * and the previous child's key. + * @return A handle used to unregister this block later using removeObserverWithHandle: + */ +- (FIRDatabaseHandle)observeEventType:(FIRDataEventType)eventType andPreviousSiblingKeyWithBlock:(void (^)(FIRDataSnapshot *snapshot, NSString *__nullable prevKey))block; + + +/** + * observeEventType:withBlock: is used to listen for data changes at a particular location. + * This is the primary way to read data from the Firebase Database. Your block will be triggered + * for the initial data and again whenever the data changes. + * + * The cancelBlock will be called if you will no longer receive new events due to no longer having permission. + * + * Use removeObserverWithHandle: to stop receiving updates. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called with initial data and updates. It is passed the data as a FIRDataSnapshot. + * @param cancelBlock The block that should be called if this client no longer has permission to receive these events + * @return A handle used to unregister this block later using removeObserverWithHandle: + */ +- (FIRDatabaseHandle)observeEventType:(FIRDataEventType)eventType withBlock:(void (^)(FIRDataSnapshot *snapshot))block withCancelBlock:(nullable void (^)(NSError* error))cancelBlock; + + +/** + * observeEventType:andPreviousSiblingKeyWithBlock: is used to listen for data changes at a particular location. + * This is the primary way to read data from the Firebase Database. Your block will be triggered + * for the initial data and again whenever the data changes. In addition, for FIRDataEventTypeChildAdded, FIRDataEventTypeChildMoved, and + * FIRDataEventTypeChildChanged events, your block will be passed the key of the previous node by priority order. + * + * The cancelBlock will be called if you will no longer receive new events due to no longer having permission. + * + * Use removeObserverWithHandle: to stop receiving updates. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called with initial data and updates. It is passed the data as a FIRDataSnapshot + * and the previous child's key. + * @param cancelBlock The block that should be called if this client no longer has permission to receive these events + * @return A handle used to unregister this block later using removeObserverWithHandle: + */ +- (FIRDatabaseHandle)observeEventType:(FIRDataEventType)eventType andPreviousSiblingKeyWithBlock:(void (^)(FIRDataSnapshot *snapshot, NSString *__nullable prevKey))block withCancelBlock:(nullable void (^)(NSError* error))cancelBlock; + + +/** + * This is equivalent to observeEventType:withBlock:, except the block is immediately canceled after the initial data is returned. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called. It is passed the data as a FIRDataSnapshot. + */ +- (void)observeSingleEventOfType:(FIRDataEventType)eventType withBlock:(void (^)(FIRDataSnapshot *snapshot))block; + + +/** + * This is equivalent to observeEventType:withBlock:, except the block is immediately canceled after the initial data is returned. In addition, for FIRDataEventTypeChildAdded, FIRDataEventTypeChildMoved, and + * FIRDataEventTypeChildChanged events, your block will be passed the key of the previous node by priority order. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called. It is passed the data as a FIRDataSnapshot and the previous child's key. + */ +- (void)observeSingleEventOfType:(FIRDataEventType)eventType andPreviousSiblingKeyWithBlock:(void (^)(FIRDataSnapshot *snapshot, NSString *__nullable prevKey))block; + + +/** + * This is equivalent to observeEventType:withBlock:, except the block is immediately canceled after the initial data is returned. + * + * The cancelBlock will be called if you do not have permission to read data at this location. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called. It is passed the data as a FIRDataSnapshot. + * @param cancelBlock The block that will be called if you don't have permission to access this data + */ +- (void)observeSingleEventOfType:(FIRDataEventType)eventType withBlock:(void (^)(FIRDataSnapshot *snapshot))block withCancelBlock:(nullable void (^)(NSError* error))cancelBlock; + + +/** + * This is equivalent to observeEventType:withBlock:, except the block is immediately canceled after the initial data is returned. In addition, for FIRDataEventTypeChildAdded, FIRDataEventTypeChildMoved, and + * FIRDataEventTypeChildChanged events, your block will be passed the key of the previous node by priority order. + * + * The cancelBlock will be called if you do not have permission to read data at this location. + * + * @param eventType The type of event to listen for. + * @param block The block that should be called. It is passed the data as a FIRDataSnapshot and the previous child's key. + * @param cancelBlock The block that will be called if you don't have permission to access this data + */ +- (void)observeSingleEventOfType:(FIRDataEventType)eventType andPreviousSiblingKeyWithBlock:(void (^)(FIRDataSnapshot *snapshot, NSString *__nullable prevKey))block withCancelBlock:(nullable void (^)(NSError* error))cancelBlock; + +/** @name Detaching observers */ + +/** + * Detach a block previously attached with observeEventType:withBlock:. + * + * @param handle The handle returned by the call to observeEventType:withBlock: which we are trying to remove. + */ +- (void) removeObserverWithHandle:(FIRDatabaseHandle)handle; + +/** + * By calling `keepSynced:YES` on a location, the data for that location will automatically be downloaded and + * kept in sync, even when no listeners are attached for that location. Additionally, while a location is kept + * synced, it will not be evicted from the persistent disk cache. + * + * @param keepSynced Pass YES to keep this location synchronized, pass NO to stop synchronization. + */ +- (void) keepSynced:(BOOL)keepSynced; + + +/** + * Removes all observers at the current reference, but does not remove any observers at child references. + * removeAllObservers must be called again for each child reference where a listener was established to remove the observers. + */ +- (void) removeAllObservers; + +/** @name Querying and limiting */ + + +/** + * queryLimitedToFirst: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryLimitedToFirst: will respond to at most the first limit child nodes. + * + * @param limit The upper bound, inclusive, for the number of child nodes to receive events for + * @return A FIRDatabaseQuery instance, limited to at most limit child nodes. + */ +- (FIRDatabaseQuery *)queryLimitedToFirst:(NSUInteger)limit; + + +/** + * queryLimitedToLast: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryLimitedToLast: will respond to at most the last limit child nodes. + * + * @param limit The upper bound, inclusive, for the number of child nodes to receive events for + * @return A FIRDatabaseQuery instance, limited to at most limit child nodes. + */ +- (FIRDatabaseQuery *)queryLimitedToLast:(NSUInteger)limit; + +/** + * queryOrderBy: is used to generate a reference to a view of the data that's been sorted by the values of + * a particular child key. This method is intended to be used in combination with queryStartingAtValue:, + * queryEndingAtValue:, or queryEqualToValue:. + * + * @param key The child key to use in ordering data visible to the returned FIRDatabaseQuery + * @return A FIRDatabaseQuery instance, ordered by the values of the specified child key. + */ +- (FIRDatabaseQuery *)queryOrderedByChild:(NSString *)key; + +/** + * queryOrderedByKey: is used to generate a reference to a view of the data that's been sorted by child key. + * This method is intended to be used in combination with queryStartingAtValue:, queryEndingAtValue:, + * or queryEqualToValue:. + * + * @return A FIRDatabaseQuery instance, ordered by child keys. + */ +- (FIRDatabaseQuery *) queryOrderedByKey; + +/** + * queryOrderedByPriority: is used to generate a reference to a view of the data that's been sorted by child + * priority. This method is intended to be used in combination with queryStartingAtValue:, queryEndingAtValue:, + * or queryEqualToValue:. + * + * @return A FIRDatabaseQuery instance, ordered by child priorities. + */ +- (FIRDatabaseQuery *) queryOrderedByPriority; + +/** + * queryStartingAtValue: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryStartingAtValue: will respond to events at nodes with a value + * greater than or equal to startValue. + * + * @param startValue The lower bound, inclusive, for the value of data visible to the returned FIRDatabaseQuery + * @return A FIRDatabaseQuery instance, limited to data with value greater than or equal to startValue + */ +- (FIRDatabaseQuery *)queryStartingAtValue:(nullable id)startValue; + +/** + * queryStartingAtValue:childKey: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryStartingAtValue:childKey will respond to events at nodes with a value + * greater than startValue, or equal to startValue and with a key greater than or equal to childKey. + * + * @param startValue The lower bound, inclusive, for the value of data visible to the returned FIRDatabaseQuery + * @param childKey The lower bound, inclusive, for the key of nodes with value equal to startValue + * @return A FIRDatabaseQuery instance, limited to data with value greater than or equal to startValue + */ +- (FIRDatabaseQuery *)queryStartingAtValue:(nullable id)startValue childKey:(nullable NSString *)childKey; + +/** + * queryEndingAtValue: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryEndingAtValue: will respond to events at nodes with a value + * less than or equal to endValue. + * + * @param endValue The upper bound, inclusive, for the value of data visible to the returned FIRDatabaseQuery + * @return A FIRDatabaseQuery instance, limited to data with value less than or equal to endValue + */ +- (FIRDatabaseQuery *)queryEndingAtValue:(nullable id)endValue; + +/** + * queryEndingAtValue:childKey: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryEndingAtValue:childKey will respond to events at nodes with a value + * less than endValue, or equal to endValue and with a key less than or equal to childKey. + * + * @param endValue The upper bound, inclusive, for the value of data visible to the returned FIRDatabaseQuery + * @param childKey The upper bound, inclusive, for the key of nodes with value equal to endValue + * @return A FIRDatabaseQuery instance, limited to data with value less than or equal to endValue + */ +- (FIRDatabaseQuery *)queryEndingAtValue:(nullable id)endValue childKey:(nullable NSString *)childKey; + +/** + * queryEqualToValue: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryEqualToValue: will respond to events at nodes with a value equal + * to the supplied argument. + * + * @param value The value that the data returned by this FIRDatabaseQuery will have + * @return A FIRDatabaseQuery instance, limited to data with the supplied value. + */ +- (FIRDatabaseQuery *)queryEqualToValue:(nullable id)value; + +/** + * queryEqualToValue:childKey: is used to generate a reference to a limited view of the data at this location. + * The FIRDatabaseQuery instance returned by queryEqualToValue:childKey will respond to events at nodes with a value + * equal to the supplied argument with a key equal to childKey. There will be at most one node that matches because + * child keys are unique. + * + * @param value The value that the data returned by this FIRDatabaseQuery will have + * @param childKey The key of nodes with the right value + * @return A FIRDatabaseQuery instance, limited to data with the supplied value and the key. + */ +- (FIRDatabaseQuery *)queryEqualToValue:(nullable id)value childKey:(nullable NSString *)childKey; + +/** @name Managing presence */ + +/** + * Ensure the data at this location is set to the specified value when + * the client is disconnected (due to closing the browser, navigating + * to a new page, or network issues). + * + * onDisconnectSetValue: is especially useful for implementing "presence" systems, + * where a value should be changed or cleared when a user disconnects + * so that he appears "offline" to other users. + * + * @param value The value to be set after the connection is lost. + */ +- (void) onDisconnectSetValue:(nullable id)value; + + +/** + * Ensure the data at this location is set to the specified value when + * the client is disconnected (due to closing the browser, navigating + * to a new page, or network issues). + * + * The completion block will be triggered when the operation has been successfully queued up on the Firebase Database servers + * + * @param value The value to be set after the connection is lost. + * @param block Block to be triggered when the operation has been queued up on the Firebase Database servers + */ +- (void) onDisconnectSetValue:(nullable id)value withCompletionBlock:(void (^)(NSError *__nullable error, FIRDatabaseReference * ref))block; + + +/** + * Ensure the data at this location is set to the specified value and priority when + * the client is disconnected (due to closing the browser, navigating + * to a new page, or network issues). + * + * @param value The value to be set after the connection is lost. + * @param priority The priority to be set after the connection is lost. + */ +- (void) onDisconnectSetValue:(nullable id)value andPriority:(id)priority; + + +/** + * Ensure the data at this location is set to the specified value and priority when + * the client is disconnected (due to closing the browser, navigating + * to a new page, or network issues). + * + * The completion block will be triggered when the operation has been successfully queued up on the Firebase Database servers + * + * @param value The value to be set after the connection is lost. + * @param priority The priority to be set after the connection is lost. + * @param block Block to be triggered when the operation has been queued up on the Firebase Database servers + */ +- (void) onDisconnectSetValue:(nullable id)value andPriority:(nullable id)priority withCompletionBlock:(void (^)(NSError *__nullable error, FIRDatabaseReference * ref))block; + + +/** + * Ensure the data at this location is removed when + * the client is disconnected (due to closing the app, navigating + * to a new page, or network issues). + * + * onDisconnectRemoveValue is especially useful for implementing "presence" systems. + */ +- (void) onDisconnectRemoveValue; + + +/** + * Ensure the data at this location is removed when + * the client is disconnected (due to closing the app, navigating + * to a new page, or network issues). + * + * onDisconnectRemoveValueWithCompletionBlock: is especially useful for implementing "presence" systems. + * + * @param block Block to be triggered when the operation has been queued up on the Firebase Database servers + */ +- (void) onDisconnectRemoveValueWithCompletionBlock:(void (^)(NSError *__nullable error, FIRDatabaseReference * ref))block; + + + +/** + * Ensure the data has the specified child values updated when + * the client is disconnected (due to closing the browser, navigating + * to a new page, or network issues). + * + * + * @param values A dictionary of child node keys and the values to set them to after the connection is lost. + */ +- (void) onDisconnectUpdateChildValues:(NSDictionary *)values; + + +/** + * Ensure the data has the specified child values updated when + * the client is disconnected (due to closing the browser, navigating + * to a new page, or network issues). + * + * + * @param values A dictionary of child node keys and the values to set them to after the connection is lost. + * @param block A block that will be called once the operation has been queued up on the Firebase Database servers + */ +- (void) onDisconnectUpdateChildValues:(NSDictionary *)values withCompletionBlock:(void (^)(NSError *__nullable error, FIRDatabaseReference * ref))block; + + +/** + * Cancel any operations that are set to run on disconnect. If you previously called onDisconnectSetValue:, + * onDisconnectRemoveValue:, or onDisconnectUpdateChildValues:, and no longer want the values updated when the + * connection is lost, call cancelDisconnectOperations: + */ +- (void) cancelDisconnectOperations; + + +/** + * Cancel any operations that are set to run on disconnect. If you previously called onDisconnectSetValue:, + * onDisconnectRemoveValue:, or onDisconnectUpdateChildValues:, and no longer want the values updated when the + * connection is lost, call cancelDisconnectOperations: + * + * @param block A block that will be triggered once the Firebase Database servers have acknowledged the cancel request. + */ +- (void) cancelDisconnectOperationsWithCompletionBlock:(nullable void (^)(NSError *__nullable error, FIRDatabaseReference * ref))block; + + +/** @name Manual Connection Management */ + +/** + * Manually disconnect the Firebase Database client from the server and disable automatic reconnection. + * + * The Firebase Database client automatically maintains a persistent connection to the Firebase Database server, + * which will remain active indefinitely and reconnect when disconnected. However, the goOffline( ) + * and goOnline( ) methods may be used to manually control the client connection in cases where + * a persistent connection is undesirable. + * + * While offline, the Firebase Database client will no longer receive data updates from the server. However, + * all database operations performed locally will continue to immediately fire events, allowing + * your application to continue behaving normally. Additionally, each operation performed locally + * will automatically be queued and retried upon reconnection to the Firebase Database server. + * + * To reconnect to the Firebase Database server and begin receiving remote events, see goOnline( ). + * Once the connection is reestablished, the Firebase Database client will transmit the appropriate data + * and fire the appropriate events so that your client "catches up" automatically. + * + * Note: Invoking this method will impact all Firebase Database connections. + */ ++ (void) goOffline; + +/** + * Manually reestablish a connection to the Firebase Database server and enable automatic reconnection. + * + * The Firebase Database client automatically maintains a persistent connection to the Firebase Database server, + * which will remain active indefinitely and reconnect when disconnected. However, the goOffline( ) + * and goOnline( ) methods may be used to manually control the client connection in cases where + * a persistent connection is undesirable. + * + * This method should be used after invoking goOffline( ) to disable the active connection. + * Once reconnected, the Firebase Database client will automatically transmit the proper data and fire + * the appropriate events so that your client "catches up" automatically. + * + * To disconnect from the Firebase Database server, see goOffline( ). + * + * Note: Invoking this method will impact all Firebase Database connections. + */ ++ (void) goOnline; + + +/** @name Transactions */ + +/** + * Performs an optimistic-concurrency transactional update to the data at this location. Your block will be called with a FIRMutableData + * instance that contains the current data at this location. Your block should update this data to the value you + * wish to write to this location, and then return an instance of FIRTransactionResult with the new data. + * + * If, when the operation reaches the server, it turns out that this client had stale data, your block will be run + * again with the latest data from the server. + * + * When your block is run, you may decide to abort the transaction by returning [FIRTransactionResult abort]. + * + * @param block This block receives the current data at this location and must return an instance of FIRTransactionResult + */ +- (void) runTransactionBlock:(FIRTransactionResult * (^) (FIRMutableData* currentData))block; + + +/** + * Performs an optimistic-concurrency transactional update to the data at this location. Your block will be called with a FIRMutableData + * instance that contains the current data at this location. Your block should update this data to the value you + * wish to write to this location, and then return an instance of FIRTransactionResult with the new data. + * + * If, when the operation reaches the server, it turns out that this client had stale data, your block will be run + * again with the latest data from the server. + * + * When your block is run, you may decide to abort the transaction by returning [FIRTransactionResult abort]. + * + * @param block This block receives the current data at this location and must return an instance of FIRTransactionResult + * @param completionBlock This block will be triggered once the transaction is complete, whether it was successful or not. It will indicate if there was an error, whether or not the data was committed, and what the current value of the data at this location is. + */ +- (void)runTransactionBlock:(FIRTransactionResult * (^) (FIRMutableData* currentData))block andCompletionBlock:(void (^) (NSError *__nullable error, BOOL committed, FIRDataSnapshot *__nullable snapshot))completionBlock; + + + +/** + * Performs an optimistic-concurrency transactional update to the data at this location. Your block will be called with a FIRMutableData + * instance that contains the current data at this location. Your block should update this data to the value you + * wish to write to this location, and then return an instance of FIRTransactionResult with the new data. + * + * If, when the operation reaches the server, it turns out that this client had stale data, your block will be run + * again with the latest data from the server. + * + * When your block is run, you may decide to abort the transaction by return [FIRTransactionResult abort]. + * + * Since your block may be run multiple times, this client could see several immediate states that don't exist on the server. You can suppress those immediate states until the server confirms the final state of the transaction. + * + * @param block This block receives the current data at this location and must return an instance of FIRTransactionResult + * @param completionBlock This block will be triggered once the transaction is complete, whether it was successful or not. It will indicate if there was an error, whether or not the data was committed, and what the current value of the data at this location is. + * @param localEvents Set this to NO to suppress events raised for intermediate states, and only get events based on the final state of the transaction. + */ +- (void)runTransactionBlock:(FIRTransactionResult * (^) (FIRMutableData* currentData))block andCompletionBlock:(nullable void (^) (NSError *__nullable error, BOOL committed, FIRDataSnapshot *__nullable snapshot))completionBlock withLocalEvents:(BOOL)localEvents; + + +/** @name Retrieving String Representation */ + +/** + * Gets the absolute URL of this Firebase Database location. + * + * @return The absolute URL of the referenced Firebase Database location. + */ +- (NSString *) description; + +/** @name Properties */ + +/** + * Gets a FIRDatabaseReference for the parent location. + * If this instance refers to the root of your Firebase Database, it has no parent, + * and therefore parent( ) will return null. + * + * @return A FIRDatabaseReference for the parent location. + */ +@property (strong, readonly, nonatomic, nullable) FIRDatabaseReference * parent; + + +/** + * Gets a FIRDatabaseReference for the root location + * + * @return A new FIRDatabaseReference to root location. + */ +@property (strong, readonly, nonatomic) FIRDatabaseReference * root; + + +/** + * Gets the last token in a Firebase Database location (e.g. 'fred' in https://SampleChat.firebaseIO-demo.com/users/fred) + * + * @return The key of the location this reference points to. + */ +@property (strong, readonly, nonatomic) NSString* key; + +/** + * Gets the URL for the Firebase Database location referenced by this FIRDatabaseReference. + * + * @return The url of the location this reference points to. + */ +@property (strong, readonly, nonatomic) NSString* URL; + +/** + * Gets the FIRDatabase instance associated with this reference. + * + * @return The FIRDatabase object for this reference. + */ +@property (strong, readonly, nonatomic) FIRDatabase *database; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRMutableData.h b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRMutableData.h new file mode 100755 index 0000000..252f9f4 --- /dev/null +++ b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRMutableData.h @@ -0,0 +1,139 @@ +/* + * Firebase iOS Client Library + * + * Copyright © 2013 Firebase - All Rights Reserved + * https://www.firebase.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binaryform must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY FIREBASE AS IS AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL FIREBASE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * A FIRMutableData instance is populated with data from a Firebase Database location. + * When you are using runTransactionBlock:, you will be given an instance containing the current + * data at that location. Your block will be responsible for updating that instance to the data + * you wish to save at that location, and then returning using [FIRTransactionResult successWithValue:]. + * + * To modify the data, set its value property to any of the native types support by Firebase Database: + * * NSNumber (includes BOOL) + * * NSDictionary + * * NSArray + * * NSString + * * nil / NSNull to remove the data + * + * Note that changes made to a child FIRMutableData instance will be visible to the parent. + */ +@interface FIRMutableData : NSObject + + +/** @name Inspecting and navigating the data */ + + +/** + * Returns boolean indicating whether this mutable data has children. + * + * @return YES if this data contains child nodes. + */ +- (BOOL) hasChildren; + + +/** + * Indicates whether this mutable data has a child at the given path. + * + * @param path A path string, consisting either of a single segment, like 'child', or multiple segments, 'a/deeper/child' + * @return YES if this data contains a child at the specified relative path + */ +- (BOOL) hasChildAtPath:(NSString *)path; + + +/** + * Used to obtain a FIRMutableData instance that encapsulates the data at the given relative path. + * Note that changes made to the child will be visible to the parent. + * + * @param path A path string, consisting either of a single segment, like 'child', or multiple segments, 'a/deeper/child' + * @return A FIRMutableData instance containing the data at the given path + */ +- (FIRMutableData *)childDataByAppendingPath:(NSString *)path; + + +/** @name Properties */ + + +/** + * To modify the data contained by this instance of FIRMutableData, set this to any of the native types supported by Firebase Database: + * + * * NSNumber (includes BOOL) + * * NSDictionary + * * NSArray + * * NSString + * * nil / NSNull to remove the data + * + * Note that setting this value will override the priority at this location. + * + * @return The current data at this location as a native object + */ +@property (strong, nonatomic, nullable) id value; + + +/** + * Set this property to update the priority of the data at this location. Can be set to the following types: + * + * * NSNumber + * * NSString + * * nil / NSNull to remove the priority + * + * @return The priority of the data at this location + */ +@property (strong, nonatomic, nullable) id priority; + + +/** + * @return The number of child nodes at this location + */ +@property (readonly, nonatomic) NSUInteger childrenCount; + + +/** + * Used to iterate over the children at this location. You can use the native for .. in syntax: + * + * for (FIRMutableData* child in data.children) { + * ... + * } + * + * Note that this enumerator operates on an immutable copy of the child list. So, you can modify the instance + * during iteration, but the new additions will not be visible until you get a new enumerator. + */ +@property (readonly, nonatomic, strong) NSEnumerator* children; + + +/** + * @return The key name of this node, or nil if it is the top-most location + */ +@property (readonly, nonatomic, strong, nullable) NSString* key; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRServerValue.h b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRServerValue.h new file mode 100755 index 0000000..c93a524 --- /dev/null +++ b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRServerValue.h @@ -0,0 +1,44 @@ +/* + * Firebase iOS Client Library + * + * Copyright © 2013 Firebase - All Rights Reserved + * https://www.firebase.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binaryform must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY FIREBASE AS IS AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL FIREBASE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +NS_ASSUME_NONNULL_BEGIN + +/** + * Placeholder values you may write into Firebase Database as a value or priority + * that will automatically be populated by the Firebase Database server. + */ +@interface FIRServerValue : NSObject + +/** + * Placeholder value for the number of milliseconds since the Unix epoch + */ ++ (NSDictionary *) timestamp; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRTransactionResult.h b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRTransactionResult.h new file mode 100755 index 0000000..07439e1 --- /dev/null +++ b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FIRTransactionResult.h @@ -0,0 +1,57 @@ +/* + * Firebase iOS Client Library + * + * Copyright © 2013 Firebase - All Rights Reserved + * https://www.firebase.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binaryform must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY FIREBASE AS IS AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL FIREBASE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import "FIRMutableData.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Used for runTransactionBlock:. An FIRTransactionResult instance is a container for the results of the transaction. + */ +@interface FIRTransactionResult : NSObject + +/** + * Used for runTransactionBlock:. Indicates that the new value should be saved at this location + * + * @param value A FIRMutableData instance containing the new value to be set + * @return An FIRTransactionResult instance that can be used as a return value from the block given to runTransactionBlock: + */ ++ (FIRTransactionResult *)successWithValue:(FIRMutableData *)value; + + +/** + * Used for runTransactionBlock:. Indicates that the current transaction should no longer proceed. + * + * @return An FIRTransactionResult instance that can be used as a return value from the block given to runTransactionBlock: + */ ++ (FIRTransactionResult *) abort; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FirebaseDatabase.h b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FirebaseDatabase.h new file mode 100755 index 0000000..d903c1b --- /dev/null +++ b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Headers/FirebaseDatabase.h @@ -0,0 +1,41 @@ +/* + * Firebase iOS Client Library + * + * Copyright © 2016 Firebase - All Rights Reserved + * https://www.firebase.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binaryform must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY FIREBASE AS IS AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL FIREBASE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FirebaseDatabase_h +#define FirebaseDatabase_h + +#import "FIRDatabase.h" +#import "FIRDatabaseQuery.h" +#import "FIRDatabaseReference.h" +#import "FIRDataEventType.h" +#import "FIRDataSnapshot.h" +#import "FIRMutableData.h" +#import "FIRServerValue.h" +#import "FIRTransactionResult.h" + +#endif /* FirebaseDatabase_h */ diff --git a/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Info.plist b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Info.plist new file mode 100755 index 0000000..efbddc6 Binary files /dev/null and b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Info.plist differ diff --git a/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Modules/module.modulemap b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Modules/module.modulemap new file mode 100755 index 0000000..28b323e --- /dev/null +++ b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/Modules/module.modulemap @@ -0,0 +1,13 @@ +framework module FirebaseDatabase { + umbrella header "FirebaseDatabase.h" + + export * + module * { export * } + + link framework "CFNetwork" + link framework "Security" + link framework "SystemConfiguration" + + link "c++" + link "icucore" +} diff --git a/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/NOTICE b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/NOTICE new file mode 100755 index 0000000..410cbd6 --- /dev/null +++ b/MDBSocials/Pods/FirebaseDatabase/Frameworks/FirebaseDatabase.framework/NOTICE @@ -0,0 +1,47 @@ +Google LevelDB +Copyright (c) 2011 The LevelDB Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +* Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +-- + +Square Socket Rocket +Copyright 2012 Square Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +-- + +APLevelDB +Created by Adam Preble on 1/23/12. +Copyright (c) 2012 Adam Preble. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/FirebaseDynamicLinks b/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/FirebaseDynamicLinks new file mode 100755 index 0000000..5fa0bef Binary files /dev/null and b/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/FirebaseDynamicLinks differ diff --git a/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Headers/FIRDynamicLink.h b/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Headers/FIRDynamicLink.h new file mode 100755 index 0000000..9d336a9 --- /dev/null +++ b/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Headers/FIRDynamicLink.h @@ -0,0 +1,47 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * @file FIRDynamicLink.h + * @abstract Dynamic Link object used in Firebase Dynamic Links. + */ + +/** + * @enum FIRDynamicLinkMatchConfidence + * @abstract The confidence level of the matched Dynamic Link. + */ +typedef NS_ENUM(NSUInteger, FIRDynamicLinkMatchConfidence) { + /** + * The match between the Dynamic Link and this device may not be perfect, hence you should not + * reveal any personal information related to the Dynamic Link. + */ + FIRDynamicLinkMatchConfidenceWeak, + /** + * The match between the Dynamic Link and this device is exact, hence you may reveal personal + * information related to the Dynamic Link. + */ + FIRDynamicLinkMatchConfidenceStrong +}; + +/** + * @class FIRDynamicLink + * @abstract A received Dynamic Link. + */ +@interface FIRDynamicLink : NSObject + +/** + * @property url + * @abstract The URL that was passed to the app. + */ +@property(nonatomic, copy, readonly, nullable) NSURL *url; + +/** + * @property matchConfidence + * @abstract The match confidence of the received Dynamic Link. + */ +@property(nonatomic, assign, readonly) FIRDynamicLinkMatchConfidence matchConfidence; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Headers/FIRDynamicLinks.h b/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Headers/FIRDynamicLinks.h new file mode 100755 index 0000000..5969dc7 --- /dev/null +++ b/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Headers/FIRDynamicLinks.h @@ -0,0 +1,90 @@ +#import + +#import "FIRDynamicLink.h" +#import "FIRDynamicLinksCommon.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * @file FIRDynamicLinks.h + * @abstract Firebase Dynamic Links + */ + +/** + * @class FIRDynamicLinks + * @abstract A class that checks for pending Dynamic Links and parses URLs. + */ +@interface FIRDynamicLinks : NSObject + +/** + * @method dynamicLinks + * @abstract Shared instance of FIRDynamicLinks. Returns nil on iOS versions prior to 8. + * @return Shared instance of FIRDynamicLinks. + */ ++ (nullable instancetype)dynamicLinks NS_SWIFT_NAME(dynamicLinks()); + +/** + * @method shouldHandleDynamicLinkFromCustomSchemeURL: + * @abstract Determine whether FIRDynamicLinks should handle the given URL. This does not + * guarantee that |dynamicLinkFromCustomSchemeURL:| will return a non-nil value, but it means + * the client should not attempt to handle the URL. + * @param url Custom scheme URL. + * @return Whether the URL can be handled by FIRDynamicLinks. + */ +- (BOOL)shouldHandleDynamicLinkFromCustomSchemeURL:(NSURL *)url; + +/** + * @method dynamicLinkFromCustomSchemeURL: + * @abstract Get a Dynamic Link from a custom scheme URL. This method parses URLs with a custom + * scheme, for instance, "comgoogleapp://google/link?deep_link_id=abc123". It is suggested to + * call it inside your |UIApplicationDelegate|'s + * |application:openURL:sourceApplication:annotation| and |application:openURL:options:| + * methods. + * @param url Custom scheme URL. + * @return Dynamic Link object if the URL is valid and has link parameter, otherwise nil. + */ +- (nullable FIRDynamicLink *)dynamicLinkFromCustomSchemeURL:(NSURL *)url; + +/** + * @method dynamicLinkFromUniversalLinkURL: + * @abstract Get a Dynamic Link from a universal link URL. This method parses universal link + * URLs, for instance, + * "https://example.app.goo.gl?link=https://www.google.com&ibi=com.google.app&ius=comgoogleapp". + * It is suggested to call it inside your |UIApplicationDelegate|'s + * |application:continueUserActivity:restorationHandler:| method. + * @param url Custom scheme URL. + * @return Dynamic Link object if the URL is valid and has link parameter, otherwise nil. + */ +- (nullable FIRDynamicLink *)dynamicLinkFromUniversalLinkURL:(NSURL *)url; + +/** + * @method handleUniversalLink:completion: + * @abstract Convenience method to handle a Universal Link whether it is long or short. A long link + * will call the handler immediately, but a short link may not. + * @param universalLinkURL A Universal Link URL. + * @param completion A block that handles the outcome of attempting to create a FIRDynamicLink. + * @return YES if FIRDynamicLinks is handling the link, otherwise, NO. + */ +- (BOOL)handleUniversalLink:(NSURL *)url + completion:(FIRDynamicLinkUniversalLinkHandler)completion; + +/** + * @method resolveShortLink:completion:linkResolver: + * @abstract Retrieves the details of the Dynamic Link that the shortened URL represents. + * @param url A Short Dynamic Link. + * @param completion Block to be run upon completion. + */ +- (void)resolveShortLink:(NSURL *)url + completion:(FIRDynamicLinkResolverHandler)completion; + +/** + * @method matchesShortLinkFormat: + * @abstract Determines if a given URL matches the given short Dynamic Link format. + * @param url A URL. + * @return YES if the URL is a short Dynamic Link, otherwise, NO. + */ +- (BOOL)matchesShortLinkFormat:(NSURL *)url; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Headers/FIRDynamicLinksCommon.h b/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Headers/FIRDynamicLinksCommon.h new file mode 100755 index 0000000..cfe1a00 --- /dev/null +++ b/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Headers/FIRDynamicLinksCommon.h @@ -0,0 +1,23 @@ +#import + +@class FIRDynamicLink; + +NS_ASSUME_NONNULL_BEGIN + +/** + * @file FIRDynamicLinksCommon.h + * @abstract Commonly shared definitions within Firebase Dynamic Links. + */ + +/** + * @abstract The definition of the block used by |resolveShortLink:completion:| + */ +typedef void (^FIRDynamicLinkResolverHandler)(NSURL * _Nullable url, NSError * _Nullable error); + +/** + * @abstract The definition of the block used by |handleUniversalLink:completion:| + */ +typedef void (^FIRDynamicLinkUniversalLinkHandler)(FIRDynamicLink * _Nullable dynamicLink, + NSError * _Nullable error); + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Headers/FirebaseDynamicLinks.h b/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Headers/FirebaseDynamicLinks.h new file mode 100755 index 0000000..c7aadb9 --- /dev/null +++ b/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Headers/FirebaseDynamicLinks.h @@ -0,0 +1,5 @@ +// Generated umbrella header for FirebaseDynamicLinks. + +#import "FIRDynamicLink.h" +#import "FIRDynamicLinks.h" +#import "FIRDynamicLinksCommon.h" diff --git a/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Modules/module.modulemap b/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Modules/module.modulemap new file mode 100755 index 0000000..695c168 --- /dev/null +++ b/MDBSocials/Pods/FirebaseDynamicLinks/Frameworks/frameworks/FirebaseDynamicLinks.framework/Modules/module.modulemap @@ -0,0 +1,16 @@ +framework module FirebaseDynamicLinks { + + export * + + umbrella header "FirebaseDynamicLinks.h" + + header "FIRDynamicLink.h" + header "FIRDynamicLinks.h" + header "FIRDynamicLinksCommon.h" + + link framework "AssetsLibrary" + link framework "CoreMotion" + link framework "MessageUI" + link framework "QuartzCore" + link framework "WebKit" +} diff --git a/MDBSocials/Pods/FirebaseInstanceID/Frameworks/frameworks/FirebaseInstanceID.framework/FirebaseInstanceID b/MDBSocials/Pods/FirebaseInstanceID/Frameworks/frameworks/FirebaseInstanceID.framework/FirebaseInstanceID new file mode 100755 index 0000000..5d67d05 Binary files /dev/null and b/MDBSocials/Pods/FirebaseInstanceID/Frameworks/frameworks/FirebaseInstanceID.framework/FirebaseInstanceID differ diff --git a/MDBSocials/Pods/FirebaseInstanceID/Frameworks/frameworks/FirebaseInstanceID.framework/Headers/FIRInstanceID.h b/MDBSocials/Pods/FirebaseInstanceID/Frameworks/frameworks/FirebaseInstanceID.framework/Headers/FIRInstanceID.h new file mode 100755 index 0000000..717e290 --- /dev/null +++ b/MDBSocials/Pods/FirebaseInstanceID/Frameworks/frameworks/FirebaseInstanceID.framework/Headers/FIRInstanceID.h @@ -0,0 +1,245 @@ +#import + +/** + * @memberof FIRInstanceID + * + * The scope to be used when fetching/deleting a token for Firebase Messaging. + */ +FOUNDATION_EXPORT NSString * __nonnull const kFIRInstanceIDScopeFirebaseMessaging; + +/** + * Called when the system determines that tokens need to be refreshed. + * This method is also called if Instance ID has been reset in which + * case, tokens and FCM topic subscriptions also need to be refreshed. + * + * Instance ID service will throttle the refresh event across all devices + * to control the rate of token updates on application servers. + */ +FOUNDATION_EXPORT NSString * __nonnull const kFIRInstanceIDTokenRefreshNotification; + +/** + * @related FIRInstanceID + * + * The completion handler invoked when the InstanceID token returns. If + * the call fails we return the appropriate `error code` as described below. + * + * @param token The valid token as returned by InstanceID backend. + * + * @param error The error describing why generating a new token + * failed. See the error codes below for a more detailed + * description. + */ +typedef void(^FIRInstanceIDTokenHandler)( NSString * __nullable token, NSError * __nullable error); + + +/** + * @related FIRInstanceID + * + * The completion handler invoked when the InstanceID `deleteToken` returns. If + * the call fails we return the appropriate `error code` as described below + * + * @param error The error describing why deleting the token failed. + * See the error codes below for a more detailed description. + */ +typedef void(^FIRInstanceIDDeleteTokenHandler)(NSError * __nullable error); + +/** + * @related FIRInstanceID + * + * The completion handler invoked when the app identity is created. If the + * identity wasn't created for some reason we return the appropriate error code. + * + * @param identity A valid identity for the app instance, nil if there was an error + * while creating an identity. + * @param error The error if fetching the identity fails else nil. + */ +typedef void(^FIRInstanceIDHandler)(NSString * __nullable identity, NSError * __nullable error); + +/** + * @related FIRInstanceID + * + * The completion handler invoked when the app identity and all the tokens associated + * with it are deleted. Returns a valid error object in case of failure else nil. + * + * @param error The error if deleting the identity and all the tokens associated with + * it fails else nil. + */ +typedef void(^FIRInstanceIDDeleteHandler)(NSError * __nullable error); + +/** + * @enum FIRInstanceIDError + */ +typedef NS_ENUM(NSUInteger, FIRInstanceIDError) { + // Http related errors. + + /// Unknown error. + FIRInstanceIDErrorUnknown = 0, + + /// Auth Error -- GCM couldn't validate request from this client. + FIRInstanceIDErrorAuthentication = 1, + + /// NoAccess -- InstanceID service cannot be accessed. + FIRInstanceIDErrorNoAccess = 2, + + /// Timeout -- Request to InstanceID backend timed out. + FIRInstanceIDErrorTimeout = 3, + + /// Network -- No network available to reach the servers. + FIRInstanceIDErrorNetwork = 4, + + /// OperationInProgress -- Another similar operation in progress, + /// bailing this one. + FIRInstanceIDErrorOperationInProgress = 5, + + /// InvalidRequest -- Some parameters of the request were invalid. + FIRInstanceIDErrorInvalidRequest = 7, +}; + +/** + * The APNS token type for the app. If the token type is set to `UNKNOWN` + * InstanceID will implicitly try to figure out what the actual token type + * is from the provisioning profile. + */ +typedef NS_ENUM(NSInteger, FIRInstanceIDAPNSTokenType) { + /// Unknown token type. + FIRInstanceIDAPNSTokenTypeUnknown, + /// Sandbox token type. + FIRInstanceIDAPNSTokenTypeSandbox, + /// Production token type. + FIRInstanceIDAPNSTokenTypeProd, +}; + +/** + * Instance ID provides a unique identifier for each app instance and a mechanism + * to authenticate and authorize actions (for example, sending a GCM message). + * + * Instance ID is long lived but, may be reset if the device is not used for + * a long time or the Instance ID service detects a problem. + * If Instance ID is reset, the app will be notified with a `com.firebase.iid.token-refresh` + * notification. + * + * If the Instance ID has become invalid, the app can request a new one and + * send it to the app server. + * To prove ownership of Instance ID and to allow servers to access data or + * services associated with the app, call + * `[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler]`. + */ +@interface FIRInstanceID : NSObject + +/** + * FIRInstanceID. + * + * @return A shared instance of FIRInstanceID. + */ ++ (nonnull instancetype)instanceID NS_SWIFT_NAME(instanceID()); + +/** + * Unavailable. Use +instanceID instead. + */ +- (nonnull instancetype)init __attribute__((unavailable("Use +instanceID instead."))); + +/** + * Set APNS token for the application. This APNS token will be used to register + * with Firebase Messaging using `token` or + * `tokenWithAuthorizedEntity:scope:options:handler`. If the token type is set to + * `FIRInstanceIDAPNSTokenTypeUnknown` InstanceID will read the provisioning profile + * to find out the token type. + * + * @param token The APNS token for the application. + * @param type The APNS token type for the above token. + */ +- (void)setAPNSToken:(nonnull NSData *)token + type:(FIRInstanceIDAPNSTokenType)type; + +#pragma mark - Tokens + +/** + * Returns a Firebase Messaging scoped token for the firebase app. + * + * @return Null Returns null if the device has not yet been registerd with + * Firebase Message else returns a valid token. + */ +- (nullable NSString *)token; + +/** + * Returns a token that authorizes an Entity (example: cloud service) to perform + * an action on behalf of the application identified by Instance ID. + * + * This is similar to an OAuth2 token except, it applies to the + * application instance instead of a user. + * + * This is an asynchronous call. If the token fetching fails for some reason + * we invoke the completion callback with nil `token` and the appropriate + * error. + * + * Note, you can only have one `token` or `deleteToken` call for a given + * authorizedEntity and scope at any point of time. Making another such call with the + * same authorizedEntity and scope before the last one finishes will result in an + * error with code `OperationInProgress`. + * + * @see FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler: + * + * @param authorizedEntity Entity authorized by the token. + * @param scope Action authorized for authorizedEntity. + * @param options The extra options to be sent with your token request. The + * value for the `apns_token` should be the NSData object + * passed to UIApplication's + * `didRegisterForRemoteNotificationsWithDeviceToken` method. + * All other keys and values in the options dict need to be + * instances of NSString or else they will be discarded. Bundle + * keys starting with 'GCM.' and 'GOOGLE.' are reserved. + * @param handler The callback handler which is invoked when the token is + * successfully fetched. In case of success a valid `token` and + * `nil` error are returned. In case of any error the `token` + * is nil and a valid `error` is returned. The valid error + * codes have been documented above. + */ +- (void)tokenWithAuthorizedEntity:(nonnull NSString *)authorizedEntity + scope:(nonnull NSString *)scope + options:(nullable NSDictionary *)options + handler:(nonnull FIRInstanceIDTokenHandler)handler; + +/** + * Revokes access to a scope (action) for an entity previously + * authorized by `[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler]`. + * + * This is an asynchronous call. Call this on the main thread since InstanceID lib + * is not thread safe. In case token deletion fails for some reason we invoke the + * `handler` callback passed in with the appropriate error code. + * + * Note, you can only have one `token` or `deleteToken` call for a given + * authorizedEntity and scope at a point of time. Making another such call with the + * same authorizedEntity and scope before the last one finishes will result in an error + * with code `OperationInProgress`. + * + * @param authorizedEntity Entity that must no longer have access. + * @param scope Action that entity is no longer authorized to perform. + * @param handler The handler that is invoked once the unsubscribe call ends. + * In case of error an appropriate error object is returned + * else error is nil. + */ +- (void)deleteTokenWithAuthorizedEntity:(nonnull NSString *)authorizedEntity + scope:(nonnull NSString *)scope + handler:(nonnull FIRInstanceIDDeleteTokenHandler)handler; + +#pragma mark - Identity + +/** + * Asynchronously fetch a stable identifier that uniquely identifies the app + * instance. If the identifier has been revoked or has expired, this method will + * return a new identifier. + * + * + * @param handler The handler to invoke once the identifier has been fetched. + * In case of error an appropriate error object is returned else + * a valid identifier is returned and a valid identifier for the + * application instance. + */ +- (void)getIDWithHandler:(nonnull FIRInstanceIDHandler)handler; + +/** + * Resets Instance ID and revokes all tokens. + */ +- (void)deleteIDWithHandler:(nonnull FIRInstanceIDDeleteHandler)handler; + +@end diff --git a/MDBSocials/Pods/FirebaseInstanceID/Frameworks/frameworks/FirebaseInstanceID.framework/Headers/FirebaseInstanceID.h b/MDBSocials/Pods/FirebaseInstanceID/Frameworks/frameworks/FirebaseInstanceID.framework/Headers/FirebaseInstanceID.h new file mode 100755 index 0000000..053ec2b --- /dev/null +++ b/MDBSocials/Pods/FirebaseInstanceID/Frameworks/frameworks/FirebaseInstanceID.framework/Headers/FirebaseInstanceID.h @@ -0,0 +1 @@ +#import "FIRInstanceID.h" diff --git a/MDBSocials/Pods/FirebaseInstanceID/Frameworks/frameworks/FirebaseInstanceID.framework/Modules/module.modulemap b/MDBSocials/Pods/FirebaseInstanceID/Frameworks/frameworks/FirebaseInstanceID.framework/Modules/module.modulemap new file mode 100755 index 0000000..b4a5b5e --- /dev/null +++ b/MDBSocials/Pods/FirebaseInstanceID/Frameworks/frameworks/FirebaseInstanceID.framework/Modules/module.modulemap @@ -0,0 +1,8 @@ +framework module FirebaseInstanceID { + + export * + + umbrella header "FirebaseInstanceID.h" + + header "FIRInstanceID.h" +} diff --git a/MDBSocials/Pods/FirebaseInstanceID/Sources/FIRInstanceID.h b/MDBSocials/Pods/FirebaseInstanceID/Sources/FIRInstanceID.h new file mode 100755 index 0000000..e3782f8 --- /dev/null +++ b/MDBSocials/Pods/FirebaseInstanceID/Sources/FIRInstanceID.h @@ -0,0 +1,237 @@ +#import + +/** + * @memberof FIRInstanceID + * + * The scope to be used when fetching/deleting a token for Firebase Messaging. + */ +FOUNDATION_EXPORT NSString * __nonnull const kFIRInstanceIDScopeFirebaseMessaging; + +/** + * Called when the system determines that tokens need to be refreshed. + * This method is also called if Instance ID has been reset in which + * case, tokens and FCM topic subscriptions also need to be refreshed. + * + * Instance ID service will throttle the refresh event across all devices + * to control the rate of token updates on application servers. + */ +FOUNDATION_EXPORT NSString * __nonnull const kFIRInstanceIDTokenRefreshNotification; + +/** + * @related FIRInstanceID + * + * The completion handler invoked when the InstanceID token returns. If + * the call fails we return the appropriate `error code` as described below. + * + * @param token The valid token as returned by InstanceID backend. + * + * @param error The error describing why generating a new token + * failed. See the error codes below for a more detailed + * description. + */ +typedef void(^FIRInstanceIDTokenHandler)(NSString * __nullable token, NSError * __nullable error); + + +/** + * @related FIRInstanceID + * + * The completion handler invoked when the InstanceID `deleteToken` returns. If + * the call fails we return the appropriate `error code` as described below + * + * @param error The error describing why deleting the token failed. + * See the error codes below for a more detailed description. + */ +typedef void(^FIRInstanceIDDeleteTokenHandler)(NSError * __nullable error); + +/** + * @related FIRInstanceID + * + * The completion handler invoked when the app identity is created. If the + * identity wasn't created for some reason we return the appropriate error code. + * + * @param identity A valid identity for the app instance, nil if there was an error + * while creating an identity. + * @param error The error if fetching the identity fails else nil. + */ +typedef void(^FIRInstanceIDHandler)(NSString * __nullable identity, NSError * __nullable error); + +/** + * @related FIRInstanceID + * + * The completion handler invoked when the app identity and all the tokens associated + * with it are deleted. Returns a valid error object in case of failure else nil. + * + * @param error The error if deleting the identity and all the tokens associated with + * it fails else nil. + */ +typedef void(^FIRInstanceIDDeleteHandler)(NSError * __nullable error); + +/** + * @enum FIRInstanceIDError + */ +typedef NS_ENUM(NSUInteger, FIRInstanceIDError) { + /// Unknown error. + FIRInstanceIDErrorUnknown = 0, + + /// Auth Error -- FCM couldn't validate request from this client. + FIRInstanceIDErrorAuthentication = 1, + + /// NoAccess -- InstanceID service cannot be accessed. + FIRInstanceIDErrorNoAccess = 2, + + /// Timeout -- Request to InstanceID backend timed out. + FIRInstanceIDErrorTimeout = 3, + + /// Network -- No network available to reach the servers. + FIRInstanceIDErrorNetwork = 4, + + /// OperationInProgress -- Another similar operation in progress, + /// bailing this one. + FIRInstanceIDErrorOperationInProgress = 5, + + /// InvalidRequest -- Some parameters of the request were invalid. + FIRInstanceIDErrorInvalidRequest = 7, +}; + +/** + * The APNS token type for the app. If the token type is set to `UNKNOWN` + * InstanceID will implicitly try to figure out what the actual token type + * is from the provisioning profile. + */ +typedef NS_ENUM(NSInteger, FIRInstanceIDAPNSTokenType) { + /// Unknown token type. + FIRInstanceIDAPNSTokenTypeUnknown, + /// Sandbox token type. + FIRInstanceIDAPNSTokenTypeSandbox, + /// Production token type. + FIRInstanceIDAPNSTokenTypeProd, +}; + +/** + * Instance ID provides a unique identifier for each app instance and a mechanism + * to authenticate and authorize actions (for example, sending a GCM message). + * + * Instance ID is long lived but, may be reset if the device is not used for + * a long time or the Instance ID service detects a problem. + * If Instance ID is reset, the app will be notified with a `com.firebase.iid.token-refresh` + * notification. + * + * If the Instance ID has become invalid, the app can request a new one and + * send it to the app server. + * To prove ownership of Instance ID and to allow servers to access data or + * services associated with the app, call + * `[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler]`. + */ +@interface FIRInstanceID : NSObject + +/** + * FIRInstanceID. + * + * @return A shared instance of FIRInstanceID. + */ ++ (nonnull instancetype)instanceID; + +/** + * Set APNS token for the application. This APNS token will be used to register + * with Firebase Messaging using `token` or + * `tokenWithAuthorizedEntity:scope:options:handler`. If the token type is set to + * `FIRInstanceIDAPNSTokenTypeUnknown` InstanceID will read the provisioning profile + * to find out the token type. + * + * @param token The APNS token for the application. + * @param type The APNS token type for the above token. + */ +- (void)setAPNSToken:(nonnull NSData *)token type:(FIRInstanceIDAPNSTokenType)type; + +#pragma mark - Tokens + +/** + * Returns a Firebase Messaging scoped token for the firebase app. + * + * @return Null Returns null if the device has not yet been registerd with + * Firebase Message else returns a valid token. + */ +- (nullable NSString *)token; + +/** + * Returns a token that authorizes an Entity (example: cloud service) to perform + * an action on behalf of the application identified by Instance ID. + * + * This is similar to an OAuth2 token except, it applies to the + * application instance instead of a user. + * + * This is an asynchronous call. If the token fetching fails for some reason + * we invoke the completion callback with nil `token` and the appropriate + * error. + * + * Note, you can only have one `token` or `deleteToken` call for a given + * authorizedEntity and scope at any point of time. Making another such call with the + * same authorizedEntity and scope before the last one finishes will result in an + * error with code `OperationInProgress`. + * + * @see FIRInstanceID deleteTokenWithAuthorizedEntity:scope:handler: + * + * @param authorizedEntity Entity authorized by the token. + * @param scope Action authorized for authorizedEntity. + * @param options The extra options to be sent with your token request. The + * value for the `apns_token` should be the NSData object + * passed to UIApplication's + * `didRegisterForRemoteNotificationsWithDeviceToken` method. + * All other keys and values in the options dict need to be + * instances of NSString or else they will be discarded. Bundle + * keys starting with 'GCM.' and 'GOOGLE.' are reserved. + * @param handler The callback handler which is invoked when the token is + * successfully fetched. In case of success a valid `token` and + * `nil` error are returned. In case of any error the `token` + * is nil and a valid `error` is returned. The valid error + * codes have been documented above. + */ +- (void)tokenWithAuthorizedEntity:(nonnull NSString *)authorizedEntity + scope:(nonnull NSString *)scope + options:(nonnull NSDictionary *)options + handler:(nonnull FIRInstanceIDTokenHandler)handler; + +/** + * Revokes access to a scope (action) for an entity previously + * authorized by `[FIRInstanceID tokenWithAuthorizedEntity:scope:options:handler]`. + * + * This is an asynchronous call. Call this on the main thread since InstanceID lib + * is not thread safe. In case token deletion fails for some reason we invoke the + * `handler` callback passed in with the appropriate error code. + * + * Note, you can only have one `token` or `deleteToken` call for a given + * authorizedEntity and scope at a point of time. Making another such call with the + * same authorizedEntity and scope before the last one finishes will result in an error + * with code `OperationInProgress`. + * + * @param authorizedEntity Entity that must no longer have access. + * @param scope Action that entity is no longer authorized to perform. + * @param handler The handler that is invoked once the unsubscribe call ends. + * In case of error an appropriate error object is returned + * else error is nil. + */ +- (void)deleteTokenWithAuthorizedEntity:(nonnull NSString *)authorizedEntity + scope:(nonnull NSString *)scope + handler:(nonnull FIRInstanceIDDeleteTokenHandler)handler; + +#pragma mark - Identity + +/** + * Asynchronously fetch a stable identifier that uniquely identifies the app + * instance. If the identifier has been revoked or has expired, this method will + * return a new identifier. + * + * + * @param handler The handler to invoke once the identifier has been fetched. + * In case of error an appropriate error object is returned else + * a valid identifier is returned and a valid identifier for the + * application instance. + */ +- (void)getIDWithHandler:(nonnull FIRInstanceIDHandler)handler; + +/** + * Resets Instance ID and revokes all tokens. + */ +- (void)deleteIDWithHandler:(nonnull FIRInstanceIDDeleteHandler)handler; + +@end diff --git a/MDBSocials/Pods/FirebaseMessaging/Frameworks/frameworks/FirebaseMessaging.framework/FirebaseMessaging b/MDBSocials/Pods/FirebaseMessaging/Frameworks/frameworks/FirebaseMessaging.framework/FirebaseMessaging new file mode 100755 index 0000000..de75366 Binary files /dev/null and b/MDBSocials/Pods/FirebaseMessaging/Frameworks/frameworks/FirebaseMessaging.framework/FirebaseMessaging differ diff --git a/MDBSocials/Pods/FirebaseMessaging/Frameworks/frameworks/FirebaseMessaging.framework/Headers/FIRMessaging.h b/MDBSocials/Pods/FirebaseMessaging/Frameworks/frameworks/FirebaseMessaging.framework/Headers/FIRMessaging.h new file mode 100755 index 0000000..04ea927 --- /dev/null +++ b/MDBSocials/Pods/FirebaseMessaging/Frameworks/frameworks/FirebaseMessaging.framework/Headers/FIRMessaging.h @@ -0,0 +1,236 @@ +#import + +/** + * The completion handler invoked once the data connection with FIRMessaging is + * established. The data connection is used to send a continous stream of + * data and all the FIRMessaging data notifications arrive through this connection. + * Once the connection is established we invoke the callback with `nil` error. + * Correspondingly if we get an error while trying to establish a connection + * we invoke the handler with an appropriate error object and do an + * exponential backoff to try and connect again unless successful. + * + * @param error The error object if any describing why the data connection + * to FIRMessaging failed. + */ +typedef void(^FIRMessagingConnectCompletion)(NSError * __nullable error); + +/** + * Notification sent when the upstream message has been delivered + * successfully to the server. The notification object will be the messageID + * of the successfully delivered message. + */ +FOUNDATION_EXPORT NSString * __nonnull const FIRMessagingSendSuccessNotification; + +/** + * Notification sent when the upstream message was failed to be sent to the + * server. The notification object will be the messageID of the failed + * message. The userInfo dictionary will contain the relevant error + * information for the failure. + */ +FOUNDATION_EXPORT NSString * __nonnull const FIRMessagingSendErrorNotification; + +/** + * Notification sent when the Firebase messaging server deletes pending + * messages due to exceeded storage limits. This may occur, for example, when + * the device cannot be reached for an extended period of time. + * + * It is recommended to retrieve any missing messages directly from the + * server. + */ +FOUNDATION_EXPORT NSString * __nonnull const FIRMessagingMessagesDeletedNotification; + +/** + * @enum FIRMessagingError + */ +typedef NS_ENUM(NSUInteger, FIRMessagingError) { + // Unknown error. + FIRMessagingErrorUnknown = 0, + + // Auth Error -- FIRMessaging couldn't validate request from this client. + FIRMessagingErrorAuthentication = 1, + + // NoAccess -- InstanceID service cannot be accessed. + FIRMessagingErrorNoAccess = 2, + + // Timeout -- Request to InstanceID backend timed out. + FIRMessagingErrorTimeout = 3, + + // Network -- No network available to reach the servers. + FIRMessagingErrorNetwork = 4, + + // OperationInProgress -- Another similar operation in progress, + // bailing this one. + FIRMessagingErrorOperationInProgress = 5, + + // InvalidRequest -- Some parameters of the request were invalid. + FIRMessagingErrorInvalidRequest = 7, +}; + +/// Status for the downstream message received by the app. +typedef NS_ENUM(NSInteger, FIRMessagingMessageStatus) { + FIRMessagingMessageStatusUnknown, + /// New downstream message received by the app. + FIRMessagingMessageStatusNew, +}; + +/// Information about a downstream message received by the app. +@interface FIRMessagingMessageInfo : NSObject + +@property(nonatomic, readonly, assign) FIRMessagingMessageStatus status; + +@end + +/** + * A remote data message received by the app via FCM (not just the APNs interface). + * + * This is only for devices running iOS 10 or above. To support devices running iOS 9 or below, use + * the local and remote notifications handlers defined in UIApplicationDelegate protocol. + */ +@interface FIRMessagingRemoteMessage : NSObject + +/// The downstream message received by the application. +@property(nonatomic, readonly, strong, nonnull) NSDictionary *appData; + +@end + +/** + * A protocol to receive data message via FCM for devices running iOS 10 or above. + * + * To support devices running iOS 9 or below, use the local and remote notifications handlers + * defined in UIApplicationDelegate protocol. + */ +@protocol FIRMessagingDelegate + +/// The callback to handle data message received via FCM for devices running iOS 10 or above. +- (void)applicationReceivedRemoteMessage:(nonnull FIRMessagingRemoteMessage *)remoteMessage; + +@end + +/** + * Firebase Messaging enables apps to communicate with their app servers + * using simple messages. + * + * To send or receive messages, the app must get a + * registration token from GGLInstanceID, which authorizes an + * app server to send messages to an app instance. Pass your sender ID and + * `kGGLInstanceIDScopeFIRMessaging` as parameters to the method. + * + * A sender ID is a project number created when you configure your API project. + * It is labeled "Project Number" in the Google Developers Console. + * + * In order to receive FIRMessaging messages, declare application:didReceiveRemoteNotification: + * + * Client apps can send upstream messages back to the app server using the XMPP-based + * Cloud Connection Server, + * + */ +@interface FIRMessaging : NSObject + +/** + * Delegate to handle remote data messages received via FCM for devices running iOS 10 or above. + */ +@property(nonatomic, weak, nullable) id remoteMessageDelegate; + +/** + * FIRMessaging + * + * @return An instance of FIRMessaging. + */ ++ (nonnull instancetype)messaging NS_SWIFT_NAME(messaging()); + +/** + * Unavailable. Use +messaging instead. + */ +- (nonnull instancetype)init __attribute__((unavailable("Use +messaging instead."))); + +#pragma mark - Connect + +/** + * Create a FIRMessaging data connection which will be used to send the data notifications + * send by your server. It will also be used to send ACKS and other messages based + * on the FIRMessaging ACKS and other messages based on the FIRMessaging protocol. + * + * Use the `disconnect` method to disconnect the connection. + * + * @see FIRMessagingService disconnect + * + * @param handler The handler to be invoked once the connection is established. + * If the connection fails we invoke the handler with an + * appropriate error code letting you know why it failed. At + * the same time, FIRMessaging performs exponential backoff to retry + * establishing a connection and invoke the handler when successful. + */ +- (void)connectWithCompletion:(nonnull FIRMessagingConnectCompletion)handler; + +/** + * Disconnect the current FIRMessaging data connection. This stops any attempts to + * connect to FIRMessaging. Calling this on an already disconnected client is a no-op. + * + * Call this before `teardown` when your app is going to the background. + * Since the FIRMessaging connection won't be allowed to live when in background it is + * prudent to close the connection. + */ +- (void)disconnect; + +#pragma mark - Topics + +/** + * Asynchronously subscribes to a topic. + * + * @param topic The name of the topic, for example @"sports". + */ +- (void)subscribeToTopic:(nonnull NSString *)topic; + +/** + * Asynchronously unsubscribe to a topic. + * + * @param topic The name of the topic, for example @"sports". + */ +- (void)unsubscribeFromTopic:(nonnull NSString *)topic; + +#pragma mark - Upstream + +/** + * Sends an upstream ("device to cloud") message. + * + * The message will be queued if we don't have an active connection. + * You can only use the upstream feature if your GCM implementation + * uses the XMPP-based Cloud Connection Server. + * + * @param message Key/Value pairs to be sent. Values must be String, any + * other type will be ignored. + * @param to A string identifying the receiver of the message. For GCM + * project IDs the value is `SENDER_ID@gcm.googleapis.com`. + * @param messageID The ID of the message. This is generated by the application. It + * must be unique for each message generated by this application. + * It allows error callbacks and debugging, to uniquely identify + * each message. + * @param ttl The time to live for the message. In case we aren't able to + * send the message before the TTL expires we will send you a + * callback. If 0, we'll attempt to send immediately and return + * an error if we're not connected. Otherwise, the message will + * be queued. As for server-side messages, we don't return an error + * if the message has been dropped because of TTL; this can happen + * on the server side, and it would require extra communication. + */ +- (void)sendMessage:(nonnull NSDictionary *)message + to:(nonnull NSString *)receiver + withMessageID:(nonnull NSString *)messageID + timeToLive:(int64_t)ttl; + +#pragma mark - Analytics + +/** + * Call this when the app received a downstream message. Used to track message + * delivery and analytics for messages. You don't need to call this if you + * don't set the `FIRMessagingAutoSetupEnabled` flag in your Info.plist. In the + * latter case the library will call this implicitly to track relevant + * messages. + * + * @param message The downstream message received by the application. + * + * @return Information about the downstream message. + */ +- (nonnull FIRMessagingMessageInfo *)appDidReceiveMessage:(nonnull NSDictionary *)message; + +@end diff --git a/MDBSocials/Pods/FirebaseMessaging/Frameworks/frameworks/FirebaseMessaging.framework/Headers/FirebaseMessaging.h b/MDBSocials/Pods/FirebaseMessaging/Frameworks/frameworks/FirebaseMessaging.framework/Headers/FirebaseMessaging.h new file mode 100755 index 0000000..ef49e7f --- /dev/null +++ b/MDBSocials/Pods/FirebaseMessaging/Frameworks/frameworks/FirebaseMessaging.framework/Headers/FirebaseMessaging.h @@ -0,0 +1 @@ +#import "FIRMessaging.h" diff --git a/MDBSocials/Pods/FirebaseMessaging/Frameworks/frameworks/FirebaseMessaging.framework/Modules/module.modulemap b/MDBSocials/Pods/FirebaseMessaging/Frameworks/frameworks/FirebaseMessaging.framework/Modules/module.modulemap new file mode 100755 index 0000000..a390f11 --- /dev/null +++ b/MDBSocials/Pods/FirebaseMessaging/Frameworks/frameworks/FirebaseMessaging.framework/Modules/module.modulemap @@ -0,0 +1,13 @@ +framework module FirebaseMessaging { + + export * + + umbrella header "FirebaseMessaging.h" + + header "FIRMessaging.h" + + link framework "AddressBook" + link framework "SystemConfiguration" + + link "sqlite3" +} diff --git a/MDBSocials/Pods/FirebaseMessaging/Sources/FIRMessaging.h b/MDBSocials/Pods/FirebaseMessaging/Sources/FIRMessaging.h new file mode 100755 index 0000000..326d075 --- /dev/null +++ b/MDBSocials/Pods/FirebaseMessaging/Sources/FIRMessaging.h @@ -0,0 +1,179 @@ +/** + * The completion handler invoked once the data connection with FIRMessaging is + * established. The data connection is used to send a continous stream of + * data and all the FIRMessaging data notifications arrive through this connection. + * Once the connection is established we invoke the callback with `nil` error. + * Correspondingly if we get an error while trying to establish a connection + * we invoke the handler with an appropriate error object and do an + * exponential backoff to try and connect again unless successful. + * + * @param error The error object if any describing why the data connection + * to FIRMessaging failed. + */ +typedef void(^FIRMessagingConnectCompletion)(NSError * __nullable error); + +/** + * Notification sent when the upstream message has been delivered + * successfully to the server. The notification object will be the messageID + * of the successfully delivered message. + */ +FOUNDATION_EXPORT NSString * __nonnull const FIRMessagingSendSuccessNotification; + +/** + * Notification sent when the upstream message was failed to be sent to the + * server. The notification object will be the messageID of the failed + * message. The userInfo dictionary will contain the relevant error + * information for the failure. + */ +FOUNDATION_EXPORT NSString * __nonnull const FIRMessagingSendErrorNotification; + +/** + * Notification sent when the Firebase messaging server deletes pending + * messages due to exceeded storage limits. This may occur, for example, when + * the device cannot be reached for an extended period of time. It is recommended + * to retrieve any missing messages directly from the server. + */ +FOUNDATION_EXPORT NSString * __nonnull const FIRMessagingMessagesDeletedNotification; + +/** + * @enum FIRMessagingError + */ +typedef NS_ENUM(NSUInteger, FIRMessagingError) { + /// Unknown error. + FIRMessagingErrorUnknown = 0, + + /// Auth Error -- FIRMessaging couldn't validate request from this client. + FIRMessagingErrorAuthentication = 1, + + /// NoAccess -- InstanceID service cannot be accessed. + FIRMessagingErrorNoAccess = 2, + + /// Timeout -- Request to InstanceID backend timed out. + FIRMessagingErrorTimeout = 3, + + /// Network -- No network available to reach the servers. + FIRMessagingErrorNetwork = 4, + + /// OperationInProgress -- Another similar operation in progress, + /// bailing this one. + FIRMessagingErrorOperationInProgress = 5, + + /// InvalidRequest -- Some parameters of the request were invalid. + FIRMessagingErrorInvalidRequest = 7, +}; + +/** + * Firebase Messaging enables apps to communicate with their app servers + * using simple messages. + * + * To send or receive messages, the app must get a + * registration token from FirebaseInstanceID, which authorizes an + * app server to send messages to an app instance. Pass your sender ID and + * `kFIRInstanceIDScopeFIRMessaging` as parameters to the method. + * + * A sender ID is a project number created when you configure your API project. + * It is labeled "Project Number" in the Google Developers Console. + * + * In order to receive FIRMessaging messages, declare application:didReceiveRemoteNotification: + * + * Client apps can send upstream messages back to the app server using the XMPP-based + * Cloud Connection Server, + * + */ +@interface FIRMessaging : NSObject + +/** + * FIRMessaging + * + * @return An instance of FIRMessaging. + */ ++ (nonnull instancetype)messaging; + +#pragma mark - Connect + +/** + * Create a FIRMessaging data connection which will be used to send the data notifications + * send by your server. It will also be used to send ACKS and other messages based + * on the FIRMessaging ACKS and other messages based on the FIRMessaging protocol. + * + * Use the `disconnect` method to disconnect the connection. + * + * @see FIRMessagingService disconnect + * + * @param handler The handler to be invoked once the connection is established. + * If the connection fails we invoke the handler with an + * appropriate error code letting you know why it failed. At + * the same time, FIRMessaging performs exponential backoff to retry + * establishing a connection and invoke the handler when successful. + */ +- (void)connectWithCompletion:(nonnull FIRMessagingConnectCompletion)handler; + +/** + * Disconnect the current FIRMessaging data connection. This stops any attempts to + * connect to FIRMessaging. Calling this on an already disconnected client is a no-op. + * + * Call this before `teardown` when your app is going to the background. + * Since the FIRMessaging connection won't be allowed to live when in background it is + * prudent to close the connection. + */ +- (void)disconnect; + +#pragma mark - Topics + +/** + * Asynchronously subscribes to a topic. + * + * @param topic The name of the topic, for example @"sports". + */ +- (void)subscribeToTopic:(nonnull NSString *)topic; + +/** + * Asynchronously unsubscribe to a topic. + * + * @param topic The name of the topic, for example @"sports". + */ +- (void)unsubscribeFromTopic:(nonnull NSString *)topic; + +#pragma mark - Upstream + +/** + * Sends an upstream ("device to cloud") message. + * + * The message will be queued if we don't have an active connection. + * You can only use the upstream feature if your Firebase Messaging implementation + * uses the XMPP-based Cloud Connection Server. + * + * @param message Key/Value pairs to be sent. Values must be String, any + * other type will be ignored. + * @param to A string identifying the receiver of the message. For GCM + * project IDs the value is `SENDER_ID@gcm.googleapis.com`. + * @param messageID The ID of the message. This is generated by the application. It + * must be unique for each message generated by this application. + * It allows error callbacks and debugging, to uniquely identify + * each message. + * @param ttl The time to live for the message. In case we aren't able to + * send the message before the TTL expires we will send you a + * callback. If 0, we'll attempt to send immediately and return + * an error if we're not connected. Otherwise, the message will + * be queued. As for server-side messages, we don't return an error + * if the message has been dropped because of TTL; this can happen + * on the server side, and it would require extra communication. + */ +- (void)sendMessage:(nonnull NSDictionary *)message + to:(nonnull NSString *)receiver + withMessageID:(nonnull NSString *)messageID + timeToLive:(int64_t)ttl; + +#pragma mark - Analytics + +/** + * Call this when the app received a downstream message. Used to track message + * delivery and analytics for messages. You don't need to call this if you + * don't set the `FIRMessagingAutoSetupEnabled` flag in your Info.plist. In the + * latter case the library will call this implicitly to track relevant messages. + * + * @param message The downstream message received by the application. + */ +- (void)appDidReceiveMessage:(nonnull NSDictionary *)message; + +@end diff --git a/MDBSocials/Pods/FirebaseRemoteConfig/CHANGELOG b/MDBSocials/Pods/FirebaseRemoteConfig/CHANGELOG new file mode 100755 index 0000000..65fa025 --- /dev/null +++ b/MDBSocials/Pods/FirebaseRemoteConfig/CHANGELOG @@ -0,0 +1,22 @@ +Version 1.2.1 +================================== +Features: +- Support user property targeting for analytics abilities. + +Resolved Issues: +- Fix critical crashes due to concurrent fetches, make it more thread safe. + + +Version 1.2.0 +================================== +Features: +- Add two new API methods to allow developers to get all the keys based on a key prefix. + +Resolved Issues: +- Fix a crash issue during fetching config. +- Clarify the confusion on the documents of activateFetched method. +- Correct the cast error in the comment of remoteConfig method. + +Version 1.1.1 +================================== +Initial release in Google I/O 2016. diff --git a/MDBSocials/Pods/FirebaseRemoteConfig/Frameworks/frameworks/FirebaseRemoteConfig.framework/FirebaseRemoteConfig b/MDBSocials/Pods/FirebaseRemoteConfig/Frameworks/frameworks/FirebaseRemoteConfig.framework/FirebaseRemoteConfig new file mode 100755 index 0000000..76d623c Binary files /dev/null and b/MDBSocials/Pods/FirebaseRemoteConfig/Frameworks/frameworks/FirebaseRemoteConfig.framework/FirebaseRemoteConfig differ diff --git a/MDBSocials/Pods/FirebaseRemoteConfig/Frameworks/frameworks/FirebaseRemoteConfig.framework/Headers/FIRRemoteConfig.h b/MDBSocials/Pods/FirebaseRemoteConfig/Frameworks/frameworks/FirebaseRemoteConfig.framework/Headers/FIRRemoteConfig.h new file mode 100755 index 0000000..d908710 --- /dev/null +++ b/MDBSocials/Pods/FirebaseRemoteConfig/Frameworks/frameworks/FirebaseRemoteConfig.framework/Headers/FIRRemoteConfig.h @@ -0,0 +1,207 @@ +// +// FIRRemoteConfig.h +// Firebase Remote Config service SDK +// Copyright 2016 Google Inc. All rights reserved. +// +#import + +/// The Firebase Remote Config service default namespace, to be used if the API method does not +/// specify a different namespace. Use the default namespace if configuring from the Google Firebase +/// service. +extern NSString *const __nonnull FIRNamespaceGoogleMobilePlatform; + +/// Key used to manage throttling in NSError user info when the refreshing of Remote Config +/// parameter values (data) is throttled. The value of this key is the elapsed time since 1970, +/// measured in seconds. +extern NSString *const __nonnull FIRRemoteConfigThrottledEndTimeInSecondsKey; + +/// Indicates whether updated data was successfully fetched. +typedef NS_ENUM(NSInteger, FIRRemoteConfigFetchStatus) { + FIRRemoteConfigFetchStatusNoFetchYet, + FIRRemoteConfigFetchStatusSuccess, + FIRRemoteConfigFetchStatusFailure, + FIRRemoteConfigFetchStatusThrottled, +}; + +/// Remote Config error domain that handles errors when fetching data from the service. +extern NSString *const __nonnull FIRRemoteConfigErrorDomain; +/// Firebase Remote Config service fetch error. +typedef NS_ENUM(NSInteger, FIRRemoteConfigError) { + /// Unknown or no error. + FIRRemoteConfigErrorUnknown = 8001, + /// Frequency of fetch requests exceeds throttled limit. + FIRRemoteConfigErrorThrottled = 8002, + /// Internal error that covers all internal HTTP errors. + FIRRemoteConfigErrorInternalError = 8003, +}; + +/// Enumerated value that indicates the source of Remote Config data. Data can come from +/// the Remote Config service, the DefaultConfig that is available when the app is first installed, +/// or a static initialized value if data is not available from the service or DefaultConfig. +typedef NS_ENUM(NSInteger, FIRRemoteConfigSource) { + FIRRemoteConfigSourceRemote, ///< The data source is the Remote Config service. + FIRRemoteConfigSourceDefault, ///< The data source is the DefaultConfig defined for this app. + FIRRemoteConfigSourceStatic, ///< The data doesn't exist, return a static initialized value. +}; + +/// Completion handler invoked by fetch methods when they get a response from the server. +/// +/// @param status Config fetching status. +/// @param error Error message on failure. +typedef void (^FIRRemoteConfigFetchCompletion)(FIRRemoteConfigFetchStatus status, + NSError *__nullable error); + +#pragma mark - FIRRemoteConfigValue +@interface FIRRemoteConfigValue : NSObject +@property(nonatomic, readonly, nullable) NSString *stringValue; +@property(nonatomic, readonly, nullable) NSNumber *numberValue; +@property(nonatomic, readonly, nonnull) NSData *dataValue; +@property(nonatomic, readonly) BOOL boolValue; +@property(nonatomic, readonly) FIRRemoteConfigSource source; +@end + +#pragma mark - FIRRemoteConfigSettings +@interface FIRRemoteConfigSettings : NSObject +@property(nonatomic, readonly) BOOL isDeveloperModeEnabled; +/// Initializes FIRRemoteConfigSettings, which is used to set properties for custom settings. To +/// make custom settings take effect, pass the FIRRemoteConfigSettings instance to the +/// configSettings property of FIRRemoteConfig. +- (nullable FIRRemoteConfigSettings *)initWithDeveloperModeEnabled:(BOOL)developerModeEnabled + NS_DESIGNATED_INITIALIZER; +@end + +#pragma mark - FIRRemoteConfig +@interface FIRRemoteConfig : NSObject +/// Last successful fetch completion time. +@property(nonatomic, readonly, strong, nullable) NSDate *lastFetchTime; +/// Last fetch status. The status can be any enumerated value from FIRRemoteConfigFetchStatus. +@property(nonatomic, readonly, assign) FIRRemoteConfigFetchStatus lastFetchStatus; +/// Config settings are custom settings. +@property(nonatomic, readwrite, strong, nonnull) FIRRemoteConfigSettings *configSettings; + +/// Returns the FIRRemoteConfig instance shared throughout your app. This singleton object contains +/// the complete set of Remote Config parameter values available to the app, including the Active +/// Config and Default Config. This object also caches values fetched from the Remote Config Server +/// until they are copied to the Active Config by calling activateFetched. +/// When you fetch values from the Remote Config Server using the default Firebase namespace +/// service, you should use this class method to create a shared instance of the FIRRemoteConfig +/// object to ensure that your app will function properly with the Remote Config Server and the +/// Firebase service. ++ (nonnull FIRRemoteConfig *)remoteConfig NS_SWIFT_NAME(remoteConfig()); + +/// Unavailable. Use +remoteConfig instead. +- (nonnull instancetype)init __attribute__((unavailable("Use +remoteConfig instead."))); + +#pragma mark - Fetch +/// Fetches Remote Config data with a callback. +/// @param completionHandler Fetch operation callback. +- (void)fetchWithCompletionHandler:(nullable FIRRemoteConfigFetchCompletion)completionHandler; + +/// Fetches Remote Config data and sets a duration that specifies how long config data lasts. +/// @param expirationDuration Duration that defines how long fetched config data is available, in +/// seconds. When the config data expires, a new fetch is required. +/// @param completionHandler Fetch operation callback. +- (void)fetchWithExpirationDuration:(NSTimeInterval)expirationDuration + completionHandler:(nullable FIRRemoteConfigFetchCompletion)completionHandler; + +#pragma mark - Apply +/// Applies Fetched Config data to the Active Config, causing updates to the behavior and appearance +/// of the app to take effect (depending on how config data is used in the app). +/// Returns true if there was a Fetched Config, and it was activated. +/// Returns false if no Fetched Config was found, or the Fetched Config was already activated. +- (BOOL)activateFetched; + +#pragma mark - Get Config +/// Enables access to configuration values by using object subscripting syntax. +/// This is used to get the config value of the default namespace. +///
+/// // Example:
+/// FIRRemoteConfig *config = [FIRRemoteConfig remoteConfig];
+/// FIRRemoteConfigValue *value = config[@"yourKey"];
+/// BOOL b = value.boolValue;
+/// NSNumber *number = config[@"yourKey"].numberValue;
+/// 
+- (nonnull FIRRemoteConfigValue *)objectForKeyedSubscript:(nonnull NSString *)key; + +/// Gets the config value of the default namespace. +/// @param key Config key. +- (nonnull FIRRemoteConfigValue *)configValueForKey:(nullable NSString *)key; + +/// Gets the config value of a given namespace. +/// @param key Config key. +/// @param aNamespace Config results under a given namespace. +- (nonnull FIRRemoteConfigValue *)configValueForKey:(nullable NSString *)key + namespace:(nullable NSString *)aNamespace; + +/// Gets the config value of a given namespace and a given source. +/// @param key Config key. +/// @param aNamespace Config results under a given namespace. +/// @param source Config value source. +- (nonnull FIRRemoteConfigValue *)configValueForKey:(nullable NSString *)key + namespace:(nullable NSString *)aNamespace + source:(FIRRemoteConfigSource)source; + +/// Gets all the parameter keys from a given source and a given namespace. +/// +/// @param source The config data source. +/// @param aNamespace The config data namespace. +/// @return An array of keys under the given source and namespace. +- (nonnull NSArray *)allKeysFromSource:(FIRRemoteConfigSource)source + namespace:(nullable NSString *)aNamespace; + +/// Returns the set of parameter keys that start with the given prefix, from the default namespace +/// in the active config. +/// +/// @param prefix The key prefix to look for. If prefix is nil or empty, returns all the +/// keys. +/// @return The set of parameter keys that start with the specified prefix. +- (nonnull NSSet *)keysWithPrefix:(nullable NSString *)prefix; + +/// Returns the set of parameter keys that start with the given prefix, from the given namespace in +/// the active config. +/// +/// @param prefix The key prefix to look for. If prefix is nil or empty, returns all the +/// keys in the given namespace. +/// @param aNamespace The namespace in which to look up the keys. If the namespace is invalid, +/// returns an empty set. +/// @return The set of parameter keys that start with the specified prefix. +- (nonnull NSSet *)keysWithPrefix:(nullable NSString *)prefix + namespace:(nullable NSString *)aNamespace; + +#pragma mark - Defaults +/// Sets config defaults for parameter keys and values in the default namespace config. +/// +/// @param defaultConfig A dictionary mapping a NSString * key to a NSObject * value. +- (void)setDefaults:(nullable NSDictionary *)defaults; + +/// Sets config defaults for parameter keys and values in the default namespace config. +/// +/// @param defaultConfig A dictionary mapping a NSString * key to a NSObject * value. +/// @param aNamespace Config under a given namespace. +- (void)setDefaults:(nullable NSDictionary *)defaultConfig + namespace:(nullable NSString *)aNamespace; + +/// Sets default configs from plist for default namespace; +/// @param fileName The plist file name, with no file name extension. For example, if the plist file +/// is defaultSamples.plist, call: +/// [[FIRRemoteConfig remoteConfig] setDefaultsFromPlistFileName:@"defaultSamples"]; +- (void)setDefaultsFromPlistFileName:(nullable NSString *)fileName; + +/// Sets default configs from plist for a given namespace; +/// @param fileName The plist file name, with no file name extension. For example, if the plist file +/// is defaultSamples.plist, call: +/// [[FIRRemoteConfig remoteConfig] setDefaultsFromPlistFileName:@"defaultSamples"]; +/// @param aNamespace The namespace where the default config is set. +- (void)setDefaultsFromPlistFileName:(nullable NSString *)fileName + namespace:(nullable NSString *)aNamespace; + +/// Returns the default value of a given key and a given namespace from the default config. +/// +/// @param key The parameter key of default config. +/// @param aNamespace The namespace of default config. +/// @return Returns the default value of the specified key and namespace. Returns +/// nil if the key or namespace doesn't exist in the default config. +- (nullable FIRRemoteConfigValue *)defaultValueForKey:(nullable NSString *)key + namespace:(nullable NSString *)aNamespace; + +@end diff --git a/MDBSocials/Pods/FirebaseRemoteConfig/Frameworks/frameworks/FirebaseRemoteConfig.framework/Headers/FirebaseRemoteConfig.h b/MDBSocials/Pods/FirebaseRemoteConfig/Frameworks/frameworks/FirebaseRemoteConfig.framework/Headers/FirebaseRemoteConfig.h new file mode 100755 index 0000000..e8165a7 --- /dev/null +++ b/MDBSocials/Pods/FirebaseRemoteConfig/Frameworks/frameworks/FirebaseRemoteConfig.framework/Headers/FirebaseRemoteConfig.h @@ -0,0 +1,3 @@ +// Generated umbrella header for FirebaseRemoteConfig. + +#import "FIRRemoteConfig.h" diff --git a/MDBSocials/Pods/FirebaseRemoteConfig/Frameworks/frameworks/FirebaseRemoteConfig.framework/Modules/module.modulemap b/MDBSocials/Pods/FirebaseRemoteConfig/Frameworks/frameworks/FirebaseRemoteConfig.framework/Modules/module.modulemap new file mode 100755 index 0000000..5e622a4 --- /dev/null +++ b/MDBSocials/Pods/FirebaseRemoteConfig/Frameworks/frameworks/FirebaseRemoteConfig.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module FirebaseRemoteConfig { + + export * + + umbrella header "FirebaseRemoteConfig.h" + + header "FIRRemoteConfig.h" + + link "sqlite3" + link "z" +} diff --git a/MDBSocials/Pods/FirebaseRemoteConfig/README.md b/MDBSocials/Pods/FirebaseRemoteConfig/README.md new file mode 100755 index 0000000..9f001f4 --- /dev/null +++ b/MDBSocials/Pods/FirebaseRemoteConfig/README.md @@ -0,0 +1,11 @@ +# Firebase Remote Config SDK for iOS + +This pod contains the Firebase Remote Config SDK for iOS, supporting both +Objective-C and Swift. + +Firebase Remote Config is a cloud service that lets you change the appearance +and behavior of your app without requiring users to download an app update. + +Please visit [our developer site] +(https://firebase.google.com/docs/remote-config/) for integration instructions, +documentation, support information, and terms of service. diff --git a/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/FirebaseStorage b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/FirebaseStorage new file mode 100755 index 0000000..b90202b Binary files /dev/null and b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/FirebaseStorage differ diff --git a/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorage.h b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorage.h new file mode 100755 index 0000000..6d0a5aa --- /dev/null +++ b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorage.h @@ -0,0 +1,100 @@ +// clang-format off +/** @file FIRStorage.h + @brief Firebase SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ +// clang-format on + +#import + +#import "FIRStorageConstants.h" + +@class FIRApp; +@class FIRStorageReference; + +NS_ASSUME_NONNULL_BEGIN + +/** + * FirebaseStorage is a service that supports uploading and downloading binary objects, + * such as images, videos, and other files to Google Cloud Storage. + * + * If you call [FIRStorage storage], the instance will initialize with the default FIRApp, + * [FIRApp defaultApp], and the storage location will come from the provided + * GoogleService-Info.plist. + * + * If you call [FIRStorage storageForApp:] and provide a custom instance of FIRApp, + * the storage location will be specified via the FIROptions#storageBucket property. + */ +@interface FIRStorage : NSObject + +/** + * Creates an instance of FIRStorage, configured with the default FIRApp. + * @return the FIRStorage instance, initialized with the default FIRApp. + */ ++ (instancetype)storage NS_SWIFT_NAME(storage()); + +/** + * Creates an instance of FIRStorage, configured with the custom FIRApp @a app. + * @param app The custom FIRApp used for initialization. + * @return the FIRStorage instance, initialized with the custom FIRApp. + */ ++ (instancetype)storageForApp:(FIRApp *)app NS_SWIFT_NAME(storage(app:)); + +/** + * The Firebase App associated with this Firebase Storage instance. + */ +@property(strong, nonatomic, readonly) FIRApp *app; + +/** + * Maximum time in seconds to retry an upload if a failure occurs. + * Defaults to 10 minutes (600 seconds). + */ +@property NSTimeInterval maxUploadRetryTime; + +/** + * Maximum time in seconds to retry a download if a failure occurs. + * Defaults to 10 minutes (600 seconds). + */ +@property NSTimeInterval maxDownloadRetryTime; + +/** + * Maximum time in seconds to retry operations other than upload and download if a failure occurs. + * Defaults to 2 minutes (120 seconds). + */ +@property NSTimeInterval maxOperationRetryTime; + +/** + * Queue that all developer callbacks are fired on. Defaults to the main queue. + */ +@property(strong, nonatomic) dispatch_queue_t callbackQueue; + +/** + * Creates a FIRStorageReference initialized at the root Firebase Storage location. + * @return An instance of FIRStorageReference initialized at the root. + */ +- (FIRStorageReference *)reference; + +/** + * Creates a FIRStorageReference given a gs:// or https:// URL pointing to a Firebase Storage + * location. For example, you can pass in an https:// download URL retrieved from + * [FIRStorageReference getDownloadURL] or the gs:// URI from [FIRStorageReference description]. + * @param string A gs:// or https:// URL to initialize the reference with. + * @return An instance of FIRStorageReference at the given child path. + * @throws Throws an exception if passed in URL is not associated with the FIRApp used to initialize + * this FIRStorage. + */ +- (FIRStorageReference *)referenceForURL:(NSString *)string; + +/** + * Creates a FIRStorageReference initialized at a child Firebase Storage location. + * @param string A relative path from the root to initialize the reference with, + * for instance @"path/to/object". + * @return An instance of FIRStorageReference at the given child path. + */ +- (FIRStorageReference *)referenceWithPath:(NSString *)string; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageConstants.h b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageConstants.h new file mode 100755 index 0000000..273d788 --- /dev/null +++ b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageConstants.h @@ -0,0 +1,123 @@ +// clang-format off +/** @file FIRStorageConstants.h + @brief Firebase SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ +// clang-format on + +#import + +@class FIRStorageDownloadTask; +@class FIRStorageMetadata; +@class FIRStorageTaskSnapshot; +@class FIRStorageUploadTask; + +NS_ASSUME_NONNULL_BEGIN + +/** + * NSString typedef representing a task listener handle. + */ +typedef NSString *FIRStorageHandle; + +/** + * Block typedef typically used when downloading data. + * @param data The data returned by the download, or nil if no data available or download failed. + * @param error The error describing failure, if one occurred. + */ +typedef void (^FIRStorageVoidDataError)(NSData *_Nullable data, NSError *_Nullable error); + +/** + * Block typedef typically used when performing "binary" async operations such as delete, + * where the operation either succeeds without an error or fails with an error. + * @param error The error describing failure, if one occurred. + */ +typedef void (^FIRStorageVoidError)(NSError *_Nullable error); + +/** + * Block typedef typically used when retrieving metadata. + * @param metadata The metadata returned by the operation, if metadata exists. + */ +typedef void (^FIRStorageVoidMetadata)(FIRStorageMetadata *_Nullable metadata); + +/** + * Block typedef typically used when retrieving metadata with the possibility of an error. + * @param metadata The metadata returned by the operation, if metadata exists. + * @param error The error describing failure, if one occurred. + */ +typedef void (^FIRStorageVoidMetadataError)(FIRStorageMetadata *_Nullable metadata, + NSError *_Nullable error); + +/** + * Block typedef typically used when getting or updating metadata with the possibility of an error. + * @param metadata The metadata returned by the operation, if metadata exists. + * @param error The error describing failure, if one occurred. + */ +typedef void (^FIRStorageVoidSnapshot)(FIRStorageTaskSnapshot *snapshot); + +/** + * Block typedef typically used when retrieving a download URL. + * @param URL The download URL associated with the operation. + * @param error The error describing failure, if one occurred. + */ +typedef void (^FIRStorageVoidURLError)(NSURL *_Nullable URL, NSError *_Nullable error); + +/** + * Enum representing the upload and download task status. + */ +typedef NS_ENUM(NSInteger, FIRStorageTaskStatus) { + /** + * Unknown task status. + */ + FIRStorageTaskStatusUnknown, + + /** + * Task is being resumed. + */ + FIRStorageTaskStatusResume, + + /** + * Task reported a progress event. + */ + FIRStorageTaskStatusProgress, + + /** + * Task is paused. + */ + FIRStorageTaskStatusPause, + + /** + * Task has completed successfully. + */ + FIRStorageTaskStatusSuccess, + + /** + * Task has failed and is unrecoverable. + */ + FIRStorageTaskStatusFailure +}; + +/** + * Firebase Storage error domain. + */ +FOUNDATION_EXPORT NSString *const FIRStorageErrorDomain; + +/** + * Enum representing the errors raised by Firebase Storage. + */ +typedef NS_ENUM(NSInteger, FIRStorageErrorCode) { + FIRStorageErrorCodeUnknown = -13000, + FIRStorageErrorCodeObjectNotFound = -13010, + FIRStorageErrorCodeBucketNotFound = -13011, + FIRStorageErrorCodeProjectNotFound = -13012, + FIRStorageErrorCodeQuotaExceeded = -13013, + FIRStorageErrorCodeUnauthenticated = -13020, + FIRStorageErrorCodeUnauthorized = -13021, + FIRStorageErrorCodeRetryLimitExceeded = -13030, + FIRStorageErrorCodeNonMatchingChecksum = -13031, + FIRStorageErrorCodeDownloadSizeExceeded = -13032, + FIRStorageErrorCodeCancelled = -13040 +}; + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageDownloadTask.h b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageDownloadTask.h new file mode 100755 index 0000000..efeb34e --- /dev/null +++ b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageDownloadTask.h @@ -0,0 +1,30 @@ +// clang-format off +/** @file FIRStorageDownloadTask.h + @brief Firebase SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ +// clang-format on + +#import + +#import "FIRStorageObservableTask.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * FIRStorageDownloadTask implements resumable downloads from an object in Firebase Storage. + * Downloads can be returned on completion with a completion handler, and can be monitored + * by attaching observers, or controlled by calling FIRStorageTask#pause, FIRStorageTask#resume, + * or FIRStorageTask#cancel. + * Downloads can currently be returned as NSData in memory, or as an NSURL to a file on disk. + * Downloads are performed on a background queue, and callbacks are raised on the developer + * specified callbackQueue in FIRStorage, or the main queue if left unspecified. + * Currently all uploads must be initiated and managed on the main queue. + */ +@interface FIRStorageDownloadTask : FIRStorageObservableTask + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageMetadata.h b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageMetadata.h new file mode 100755 index 0000000..0e38ebf --- /dev/null +++ b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageMetadata.h @@ -0,0 +1,138 @@ +// clang-format off +/** @file FIRStorageMetadata.h + @brief Firebase SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ +// clang-format on + +#import + +@class FIRStorageReference; + +NS_ASSUME_NONNULL_BEGIN + +/** + * Class which represents the metadata on an object in Firebase Storage. This metadata is + * returned on successful operations, and can be used to retrieve download URLs, content types, + * and a FIRStorage reference to the object in question. Full documentation can be found at the GCS + * Objects#resource docs. + * @see https://cloud.google.com/storage/docs/json_api/v1/objects#resource + */ +@interface FIRStorageMetadata : NSObject + +/** + * The name of the bucket containing this object. + */ +@property(copy, nonatomic, readonly) NSString *bucket; + +/** + * Cache-Control directive for the object data. + */ +@property(copy, nonatomic, nullable) NSString *cacheControl; + +/** + * Content-Disposition of the object data. + */ +@property(copy, nonatomic, nullable) NSString *contentDisposition; + +/** + * Content-Encoding of the object data. + */ +@property(copy, nonatomic, nullable) NSString *contentEncoding; + +/** + * Content-Language of the object data. + */ +@property(copy, nonatomic, nullable) NSString *contentLanguage; + +/** + * Content-Type of the object data. + */ +@property(copy, nonatomic, nullable) NSString *contentType; + +/** + * The content generation of this object. Used for object versioning. + */ +@property(readonly) int64_t generation; + +/** + * User-provided metadata, in key/value pairs. + */ +@property(copy, nonatomic, nullable) NSDictionary *customMetadata; + +/** + * The version of the metadata for this object at this generation. Used + * for preconditions and for detecting changes in metadata. A metageneration number is only + * meaningful in the context of a particular generation of a particular object. + */ +@property(readonly) int64_t metageneration; + +/** + * The name of this object, in gs://bucket/path/to/object.txt, this is object.txt. + */ +@property(copy, nonatomic, readonly, nullable) NSString *name; + +/** + * The full path of this object, in gs://bucket/path/to/object.txt, this is path/to/object.txt. + */ +@property(copy, nonatomic, readonly, nullable) NSString *path; + +/** + * Content-Length of the data in bytes. + */ +@property(readonly) int64_t size; + +/** + * The creation time of the object in RFC 3339 format. + */ +@property(copy, nonatomic, readonly, nullable) NSDate *timeCreated; + +/** + * The modification time of the object metadata in RFC 3339 format. + */ +@property(copy, nonatomic, readonly, nullable) NSDate *updated; + +/** + * A reference to the object in Firebase Storage. + */ +@property(strong, nonatomic, readonly, nullable) FIRStorageReference *storageReference; + +/** + * An array containing all download URLs available for the object. + */ +@property(strong, nonatomic, readonly, nullable) NSArray *downloadURLs; + +/** + * Creates an instanece of FIRStorageMetadata from the contents of a dictionary. + * @return An instance of FIRStorageMetadata that represents the contents of a dictionary. + */ +- (nullable instancetype)initWithDictionary:(NSDictionary *)dictionary NS_DESIGNATED_INITIALIZER; + +/** + * Creates an NSDictionary from the contents of the metadata. + * @return An NSDictionary that represents the contents of the metadata. + */ +- (NSDictionary *)dictionaryRepresentation; + +/** + * Determines if the current metadata represents a "file". + */ +@property(readonly, getter=isFile) BOOL file; + +/** + * Determines if the current metadata represents a "folder". + */ +@property(readonly, getter=isFolder) BOOL folder; + +/** + * Retrieves a download URL for the given object, or nil if none exist. + * Note that if there are many valid download tokens, this will always return the first + * valid token created. + */ +- (nullable NSURL *)downloadURL; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageObservableTask.h b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageObservableTask.h new file mode 100755 index 0000000..8b66ca7 --- /dev/null +++ b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageObservableTask.h @@ -0,0 +1,54 @@ +// clang-format off +/** @file FIRStorageObservableTask.h + @brief Firebase SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ +// clang-format on + +#import "FIRStorageTask.h" + +NS_ASSUME_NONNULL_BEGIN + +@class FIRStorageReference; +@class FIRStorageTaskSnapshot; + +/** + * Extends FIRStorageTask to provide observable semantics such as adding and removing observers. + * Observers produce a FIRStorageHandle, which is used to keep track of and remove specific + * observers at a later date. + * This class is currently not thread safe and can only be called on the main thread. + */ +@interface FIRStorageObservableTask : FIRStorageTask + +/** + * Observes changes in the upload status: Resume, Pause, Progress, Success, and Failure. + * @param status The FIRStorageTaskStatus change to observe. + * @param handler A callback that fires every time the status event occurs, + * returns a FIRStorageTaskSnapshot containing the state of the task. + * @return A task handle that can be used to remove the observer at a later date. + */ +- (FIRStorageHandle)observeStatus:(FIRStorageTaskStatus)status + handler:(void (^)(FIRStorageTaskSnapshot *snapshot))handler; + +/** + * Removes the single observer with the provided handle. + * @param handle The handle of the task to remove. + */ +- (void)removeObserverWithHandle:(FIRStorageHandle)handle; + +/** + * Removes all observers for a single status. + * @param status A FIRStorageTaskStatus to remove listeners for. + */ +- (void)removeAllObserversForStatus:(FIRStorageTaskStatus)status; + +/** + * Removes all observers. + */ +- (void)removeAllObservers; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageReference.h b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageReference.h new file mode 100755 index 0000000..2ed4f75 --- /dev/null +++ b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageReference.h @@ -0,0 +1,228 @@ +// clang-format off +/** @file FIRStorageReference.h + @brief Firebase SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ +// clang-format on + +#import + +#import "FIRStorage.h" +#import "FIRStorageConstants.h" +#import "FIRStorageDownloadTask.h" +#import "FIRStorageMetadata.h" +#import "FIRStorageTask.h" +#import "FIRStorageUploadTask.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * FIRStorageReference represents a reference to a Google Cloud Storage object. Developers can + * upload and download objects, as well as get/set object metadata, and delete an object at the + * path. + * @see https://cloud.google.com/storage/ + */ +@interface FIRStorageReference : NSObject + +/** + * The FIRStorage service object which created this reference. + */ +@property(nonatomic, readonly) FIRStorage *storage; + +/** + * The name of the Google Cloud Storage bucket associated with this reference, + * in gs://bucket/path/to/object.txt, the bucket would be: 'bucket' + */ +@property(nonatomic, readonly) NSString *bucket; + +/** + * The full path to this object, not including the Google Cloud Storage bucket. + * In gs://bucket/path/to/object.txt, the full path would be: 'path/to/object.txt' + */ +@property(nonatomic, readonly) NSString *fullPath; + +/** + * The short name of the object associated with this reference, + * in gs://bucket/path/to/object.txt, the name of the object would be: 'object.txt' + */ +@property(nonatomic, readonly) NSString *name; + +#pragma mark - Path Operations + +/** + * Creates a new FIRStorageReference pointing to the root object. + * @return A new FIRStorageReference pointing to the root object. + */ +- (FIRStorageReference *)root; + +/** + * Creates a new FIRStorageReference pointing to the parent of the current reference + * or nil if this instance references the root location. + * For example: + * path = foo/bar/baz parent = foo/bar + * path = foo parent = (root) + * path = (root) parent = nil + * @return A new FIRStorageReference pointing to the parent of the current reference. + */ +- (nullable FIRStorageReference *)parent; + +/** + * Creates a new FIRStorageReference pointing to a child object of the current reference. + * path = foo child = bar newPath = foo/bar + * path = foo/bar child = baz newPath = foo/bar/baz + * All leading and trailing slashes will be removed, and consecutive slashes will be + * compressed to single slashes. For example: + * child = /foo/bar newPath = foo/bar + * child = foo/bar/ newPath = foo/bar + * child = foo///bar newPath = foo/bar + * @param path Path to append to the current path. + * @return A new FIRStorageReference pointing to a child location of the current reference. + */ +- (FIRStorageReference *)child:(NSString *)path; + +#pragma mark - Uploads + +/** + * Asynchronously uploads data to the currently specified FIRStorageReference, + * without additional metadata. + * This is not recommended for large files, and one should instead upload a file from disk. + * @param uploadData The NSData to upload. + * @return An instance of FIRStorageUploadTask, which can be used to monitor or manage the upload. + */ +- (FIRStorageUploadTask *)putData:(NSData *)uploadData; + +/** + * Asynchronously uploads data to the currently specified FIRStorageReference. + * This is not recommended for large files, and one should instead upload a file from disk. + * @param uploadData The NSData to upload. + * @param metadata FIRStorageMetadata containing additional information (MIME type, etc.) + * about the object being uploaded. + * @return An instance of FIRStorageUploadTask, which can be used to monitor or manage the upload. + */ +- (FIRStorageUploadTask *)putData:(NSData *)uploadData + metadata:(nullable FIRStorageMetadata *)metadata; + +/** + * Asynchronously uploads data to the currently specified FIRStorageReference. + * This is not recommended for large files, and one should instead upload a file from disk. + * @param uploadData The NSData to upload. + * @param metadata FIRStorageMetadata containing additional information (MIME type, etc.) + * about the object being uploaded. + * @param completion A completion block that either returns the object metadata on success, + * or an error on failure. + * @return An instance of FIRStorageUploadTask, which can be used to monitor or manage the upload. + */ +- (FIRStorageUploadTask *)putData:(NSData *)uploadData + metadata:(nullable FIRStorageMetadata *)metadata + completion:(nullable void (^)(FIRStorageMetadata *_Nullable metadata, + NSError *_Nullable error))completion; + +/** + * Asynchronously uploads a file to the currently specified FIRStorageReference, + * without additional metadata. + * @param fileURL A URL representing the system file path of the object to be uploaded. + * @return An instance of FIRStorageUploadTask, which can be used to monitor or manage the upload. + */ +- (FIRStorageUploadTask *)putFile:(NSURL *)fileURL; + +/** + * Asynchronously uploads a file to the currently specified FIRStorageReference. + * @param fileURL A URL representing the system file path of the object to be uploaded. + * @param metadata FIRStorageMetadata containing additional information (MIME type, etc.) + * about the object being uploaded. + * @return An instance of FIRStorageUploadTask, which can be used to monitor or manage the upload. + */ +- (FIRStorageUploadTask *)putFile:(NSURL *)fileURL metadata:(nullable FIRStorageMetadata *)metadata; + +/** + * Asynchronously uploads a file to the currently specified FIRStorageReference. + * @param fileURL A URL representing the system file path of the object to be uploaded. + * @param metadata FIRStorageMetadata containing additional information (MIME type, etc.) + * about the object being uploaded. + * @param completion A completion block that either returns the object metadata on success, + * or an error on failure. + * @return An instance of FIRStorageUploadTask, which can be used to monitor or manage the upload. + */ +- (FIRStorageUploadTask *)putFile:(NSURL *)fileURL + metadata:(nullable FIRStorageMetadata *)metadata + completion:(nullable void (^)(FIRStorageMetadata *_Nullable metadata, + NSError *_Nullable error))completion; + +#pragma mark - Downloads + +/** + * Asynchronously downloads the object at the FIRStorageReference to an NSData object in memory. + * An NSData of the provided max size will be allocated, so ensure that the device has enough free + * memory to complete the download. For downloading large files, writeToFile may be a better option. + * @param size The maximum size in bytes to download. If the download exceeds this size + * the task will be cancelled and an error will be returned. + * @param completion A completion block that either returns the object data on success, + * or an error on failure. + * @return An FIRStorageDownloadTask that can be used to monitor or manage the download. + */ +- (FIRStorageDownloadTask *)dataWithMaxSize:(int64_t)size + completion:(void (^)(NSData *_Nullable data, + NSError *_Nullable error))completion; + +/** + * Asynchronously retrieves a long lived download URL with a revokable token. + * This can be used to share the file with others, but can be revoked by a developer + * in the Firebase Console if desired. + * @param completion A completion block that either returns the URL on success, + * or an error on failure. + */ +- (void)downloadURLWithCompletion:(void (^)(NSURL *_Nullable URL, + NSError *_Nullable error))completion; + +/** + * Asynchronously downloads the object at the current path to a specified system filepath. + * @param fileURL A file system URL representing the path the object should be downloaded to. + * @return An FIRStorageDownloadTask that can be used to monitor or manage the download. + */ +- (FIRStorageDownloadTask *)writeToFile:(NSURL *)fileURL; + +/** + * Asynchronously downloads the object at the current path to a specified system filepath. + * @param fileURL A file system URL representing the path the object should be downloaded to. + * @param completion A completion block that fires when the file download completes. + * Returns an NSURL pointing to the file path of the downloaded file on success, + * or an error on failure. + * @return An FIRStorageDownloadTask that can be used to monitor or manage the download. + */ +- (FIRStorageDownloadTask *)writeToFile:(NSURL *)fileURL + completion:(nullable void (^)(NSURL *_Nullable URL, + NSError *_Nullable error))completion; + +#pragma mark - Metadata Operations + +/** + * Retrieves metadata associated with an object at the current path. + * @param completion A completion block which returns the object metadata on success, + * or an error on failure. + */ +- (void)metadataWithCompletion:(void (^)(FIRStorageMetadata *_Nullable metadata, + NSError *_Nullable error))completion; + +/** + * Updates the metadata associated with an object at the current path. + * @param metadata An FIRStorageMetadata object with the metadata to update. + * @param completion A completion block which returns the FIRStorageMetadata on success, + * or an error on failure. + */ +- (void)updateMetadata:(FIRStorageMetadata *)metadata + completion:(nullable void (^)(FIRStorageMetadata *_Nullable metadata, + NSError *_Nullable error))completion; + +#pragma mark - Delete + +/** + * Deletes the object at the current path. + * @param completion A completion block which returns nil on success, or an error on failure. + */ +- (void)deleteWithCompletion:(nullable void (^)(NSError *_Nullable error))completion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageTask.h b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageTask.h new file mode 100755 index 0000000..8744fcb --- /dev/null +++ b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageTask.h @@ -0,0 +1,66 @@ +// clang-format off +/** @file FIRStorageTask.h + @brief Firebase SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ +// clang-format on + +#import + +#import "FIRStorageConstants.h" +#import "FIRStorageMetadata.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * A superclass to all FIRStorage*Tasks, including FIRStorageUploadTask + * and FIRStorageDownloadTask, to provide state transitions, event raising, and common storage + * or metadata and errors. + * Callbacks are always fired on the developer specified callback queue. + * If no queue is specified by the developer, it defaults to the main queue. + * Currently not thread safe, so only call methods on the main thread. + */ +@interface FIRStorageTask : NSObject + +/** + * An immutable view of the task and associated metadata, progress, error, etc. + */ +@property(strong, readonly, nonatomic, nonnull) FIRStorageTaskSnapshot *snapshot; + +@end + +/** + * Defines task operations such as pause, resume, cancel, and enqueue for all tasks. + * All tasks are required to implement enqueue, which begins the task, and may optionally + * implement pause, resume, and cancel, which operate on the task to pause, resume, and cancel + * operations. + */ +@protocol FIRStorageTaskManagement + +@required +/** + * Prepares a task and begins execution. + */ +- (void)enqueue; + +@optional +/** + * Pauses a task currently in progress. + */ +- (void)pause; + +/** + * Cancels a task currently in progress. + */ +- (void)cancel; + +/** + * Resumes a task that is paused. + */ +- (void)resume; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageTaskSnapshot.h b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageTaskSnapshot.h new file mode 100755 index 0000000..5841754 --- /dev/null +++ b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageTaskSnapshot.h @@ -0,0 +1,59 @@ +// clang-format off +/** @file FIRStorageTaskSnapshot.h + @brief Firebase SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ +// clang-format on + +#import + +#import "FIRStorageConstants.h" + +NS_ASSUME_NONNULL_BEGIN + +@class FIRStorageMetadata; +@class FIRStorageReference; +@class FIRStorageTask; + +/** + * FIRStorageTaskSnapshot represents an immutable view of a task. + * A Snapshot contains a task, storage reference, metadata (if it exists), + * progress, and an error (if one occurred). + */ +@interface FIRStorageTaskSnapshot : NSObject + +/** + * Subclass of FIRStorageTask this snapshot represents. + */ +@property(readonly, copy, nonatomic) __kindof FIRStorageTask *task; + +/** + * Metadata returned by the task, or nil if no metadata returned. + */ +@property(readonly, copy, nonatomic, nullable) FIRStorageMetadata *metadata; + +/** + * FIRStorageReference this task is operates on. + */ +@property(readonly, copy, nonatomic) FIRStorageReference *reference; + +/** + * NSProgress object which tracks the progess of an upload or download. + */ +@property(readonly, strong, nonatomic, nullable) NSProgress *progress; + +/** + * Error during task execution, or nil if no error occurred. + */ +@property(readonly, copy, nonatomic, nullable) NSError *error; + +/** + * Status of the task. + */ +@property(readonly, nonatomic) FIRStorageTaskStatus status; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageUploadTask.h b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageUploadTask.h new file mode 100755 index 0000000..27ddc02 --- /dev/null +++ b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FIRStorageUploadTask.h @@ -0,0 +1,30 @@ +// clang-format off +/** @file FIRStorageUploadTask.h + @brief Firebase SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ +// clang-format on + +#import + +#import "FIRStorageObservableTask.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * FIRStorageUploadTask implements resumable uploads to a file in Firebase Storage. + * Uploads can be returned on completion with a completion callback, and can be monitored + * by attaching observers, or controlled by calling FIRStorageTask#pause, FIRStorageTask#resume, + * or FIRStorageTask#cancel. + * Uploads can take NSData in memory, or an NSURL to a file on disk. + * Uploads are performed on a background queue, and callbacks are raised on the developer + * specified callbackQueue in FIRStorage, or the main queue if left unspecified. + * Currently all uploads must be initiated and managed on the main queue. + */ +@interface FIRStorageUploadTask : FIRStorageObservableTask + +@end + +NS_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FirebaseStorage.h b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FirebaseStorage.h new file mode 100755 index 0000000..17238fe --- /dev/null +++ b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Headers/FirebaseStorage.h @@ -0,0 +1,21 @@ +// clang-format off +/** @file FirebaseStorage.m + @brief Firebase SDK + @copyright Copyright 2016 Google Inc. + @remarks Use of this SDK is subject to the Google APIs Terms of Service: + https://developers.google.com/terms/ + */ +// clang-format on + +#import "FIRStorage.h" +#import "FIRStorageConstants.h" +#import "FIRStorageDownloadTask.h" +#import "FIRStorageMetadata.h" +#import "FIRStorageObservableTask.h" +#import "FIRStorageReference.h" +#import "FIRStorageTask.h" +#import "FIRStorageTaskSnapshot.h" +#import "FIRStorageUploadTask.h" + +//! Project version string for FirebaseStorage. +FOUNDATION_EXPORT const unsigned char *const FirebaseStorageVersionString; diff --git a/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Modules/module.modulemap b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Modules/module.modulemap new file mode 100755 index 0000000..3a256b3 --- /dev/null +++ b/MDBSocials/Pods/FirebaseStorage/Frameworks/frameworks/FirebaseStorage.framework/Modules/module.modulemap @@ -0,0 +1,18 @@ +framework module FirebaseStorage { + + export * + + umbrella header "FirebaseStorage.h" + + header "FIRStorage.h" + header "FIRStorageConstants.h" + header "FIRStorageDownloadTask.h" + header "FIRStorageMetadata.h" + header "FIRStorageObservableTask.h" + header "FIRStorageReference.h" + header "FIRStorageTask.h" + header "FIRStorageTaskSnapshot.h" + header "FIRStorageUploadTask.h" + + link framework "MobileCoreServices" +} diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/GoogleMobileAds b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/GoogleMobileAds new file mode 120000 index 0000000..95e839f --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/GoogleMobileAds @@ -0,0 +1 @@ +Versions/Current/GoogleMobileAds \ No newline at end of file diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Headers b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Headers new file mode 120000 index 0000000..a177d2a --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Headers @@ -0,0 +1 @@ +Versions/Current/Headers \ No newline at end of file diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Modules/module.modulemap b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Modules/module.modulemap new file mode 100644 index 0000000..1d5e23c --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Modules/module.modulemap @@ -0,0 +1,98 @@ +framework module GoogleMobileAds { + umbrella header "GoogleMobileAds.h" + + export * + module * { export * } + + link framework "AdSupport" + link framework "AudioToolbox" + link framework "AVFoundation" + link framework "CoreGraphics" + link framework "CoreMedia" + link framework "CoreMotion" + link framework "CoreTelephony" + link framework "CoreVideo" + link framework "Foundation" + link framework "GLKit" + link framework "MediaPlayer" + link framework "MessageUI" + link framework "MobileCoreServices" + link framework "OpenGLES" + link framework "SafariServices" + link framework "StoreKit" + link framework "SystemConfiguration" + link framework "UIKit" + link framework "WebKit" + + header "GoogleMobileAdsDefines.h" + + header "GADAdDelegate.h" + header "GADAdNetworkExtras.h" + header "GADAdSize.h" + header "GADBannerView.h" + header "GADBannerViewDelegate.h" + header "GADCorrelator.h" + header "GADCorrelatorAdLoaderOptions.h" + header "GADDebugOptionsViewController.h" + header "GADExtras.h" + header "GADInAppPurchase.h" + header "GADInAppPurchaseDelegate.h" + header "GADInterstitial.h" + header "GADInterstitialDelegate.h" + header "GADMediaView.h" + header "GADMobileAds.h" + header "GADNativeExpressAdView.h" + header "GADNativeExpressAdViewDelegate.h" + header "GADRequest.h" + header "GADRequestError.h" + header "GADVideoController.h" + header "GADVideoControllerDelegate.h" + header "GADVideoOptions.h" + + header "DFPBannerView.h" + header "DFPCustomRenderedAd.h" + header "DFPCustomRenderedBannerViewDelegate.h" + header "DFPCustomRenderedInterstitialDelegate.h" + header "DFPInterstitial.h" + header "DFPRequest.h" + header "GADAdSizeDelegate.h" + header "GADAppEventDelegate.h" + + header "GADAdLoader.h" + header "GADAdLoaderAdTypes.h" + header "GADAdLoaderDelegate.h" + + header "GADNativeAd.h" + header "GADNativeAdDelegate.h" + header "GADNativeAdImage.h" + header "GADNativeAdImage+Mediation.h" + header "GADNativeAppInstallAd.h" + header "GADNativeContentAd.h" + header "GADNativeCustomTemplateAd.h" + + header "GADNativeAdImageAdLoaderOptions.h" + header "GADNativeAdViewAdOptions.h" + + header "GADCustomEventBanner.h" + header "GADCustomEventBannerDelegate.h" + header "GADCustomEventExtras.h" + header "GADCustomEventInterstitial.h" + header "GADCustomEventInterstitialDelegate.h" + header "GADCustomEventNativeAd.h" + header "GADCustomEventNativeAdDelegate.h" + header "GADCustomEventParameters.h" + header "GADCustomEventRequest.h" + header "GADMediatedNativeAd.h" + header "GADMediatedNativeAdDelegate.h" + header "GADMediatedNativeAdNotificationSource.h" + header "GADMediatedNativeAppInstallAd.h" + header "GADMediatedNativeContentAd.h" + + header "GADDynamicHeightSearchRequest.h" + header "GADSearchBannerView.h" + header "GADSearchRequest.h" + + header "GADAdReward.h" + header "GADRewardBasedVideoAd.h" + header "GADRewardBasedVideoAdDelegate.h" +} diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/GoogleMobileAds b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/GoogleMobileAds new file mode 100644 index 0000000..ec9e331 Binary files /dev/null and b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/GoogleMobileAds differ diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPBannerView.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPBannerView.h new file mode 100644 index 0000000..7ee85f1 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPBannerView.h @@ -0,0 +1,84 @@ +// +// DFPBannerView.h +// Google Mobile Ads SDK +// +// Copyright 2012 Google Inc. All rights reserved. +// + +#import +#import +#import +#import +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// The view that displays DoubleClick For Publishers banner ads. +@interface DFPBannerView : GADBannerView + +/// Required value created on the DFP website. Create a new ad unit for every unique placement of an +/// ad in your application. Set this to the ID assigned for this placement. Ad units are important +/// for targeting and statistics. +/// +/// Example DFP ad unit ID: @"/6499/example/banner" +@property(nonatomic, copy, GAD_NULLABLE) NSString *adUnitID; + +/// Optional delegate that is notified when creatives send app events. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet id appEventDelegate; + +/// Optional delegate that is notified when creatives cause the banner to change size. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet id adSizeDelegate; + +/// Optional array of NSValue encoded GADAdSize structs, specifying all valid sizes that are +/// appropriate for this slot. Never create your own GADAdSize directly. Use one of the predefined +/// standard ad sizes (such as kGADAdSizeBanner), or create one using the GADAdSizeFromCGSize +/// method. +/// +/// Example: +/// +///
+///   NSArray *validSizes = @[
+///     NSValueFromGADAdSize(kGADAdSizeBanner),
+///     NSValueFromGADAdSize(kGADAdSizeLargeBanner)
+///   ];
+///
+///   bannerView.validAdSizes = validSizes;
+///   
+@property(nonatomic, copy, GAD_NULLABLE) NSArray *validAdSizes; + +/// Correlator object for correlating this object to other ad objects. +@property(nonatomic, strong, GAD_NULLABLE) GADCorrelator *correlator; + +/// Indicates that the publisher will record impressions manually when the ad becomes visible to the +/// user. +@property(nonatomic, assign) BOOL enableManualImpressions; + +/// Optional delegate object for custom rendered ads. +@property(nonatomic, weak, GAD_NULLABLE) + IBOutlet id customRenderedBannerViewDelegate; + +/// If you've set enableManualImpressions to YES, call this method when the ad is visible. +- (void)recordImpression; + +/// Use this function to resize the banner view without launching a new ad request. +- (void)resize:(GADAdSize)size; + +#pragma mark Deprecated + +/// Deprecated. Use the validAdSizes property. +/// Sets the receiver's valid ad sizes to the values pointed to by the provided NULL terminated list +/// of GADAdSize pointers. +/// +/// Example: +/// +///
+///   GADAdSize size1 = kGADAdSizeBanner;
+///   GADAdSize size2 = kGADAdSizeLargeBanner;
+///   [bannerView setValidAdSizesWithSizes:&size1, &size2, NULL];
+///   
+- (void)setValidAdSizesWithSizes:(GADAdSize *)firstSize, ... NS_REQUIRES_NIL_TERMINATION + GAD_DEPRECATED_MSG_ATTRIBUTE("Use validAdSizes property."); + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPCustomRenderedAd.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPCustomRenderedAd.h new file mode 100644 index 0000000..5c2b0ab --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPCustomRenderedAd.h @@ -0,0 +1,34 @@ +// +// DFPCustomRenderedAd.h +// Google Mobile Ads SDK +// +// Copyright 2014 Google Inc. All rights reserved. +// + +#import + +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// Custom rendered ad. Your application renders the ad. +@interface DFPCustomRenderedAd : NSObject + +/// The ad's HTML. +@property(nonatomic, readonly, copy) NSString *adHTML; + +/// The base URL of the ad's HTML. +@property(nonatomic, readonly, copy) NSURL *adBaseURL; + +/// Call this method when the user clicks the ad. +- (void)recordClick; + +/// Call this method when the ad is visible to the user. +- (void)recordImpression; + +/// Call this method after the ad has been rendered in a UIView object. +- (void)finishedRenderingAdView:(UIView *)view; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPCustomRenderedBannerViewDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPCustomRenderedBannerViewDelegate.h new file mode 100644 index 0000000..e15b89e --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPCustomRenderedBannerViewDelegate.h @@ -0,0 +1,28 @@ +// +// DFPCustomRenderedBannerViewDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2014 Google Inc. All rights reserved. +// + +#import + +#import + +@class DFPBannerView; +@class DFPCustomRenderedAd; + +GAD_ASSUME_NONNULL_BEGIN + +/// The DFPCustomRenderedAd banner view delegate protocol for notifying the delegate of changes to +/// custom rendered banners. +@protocol DFPCustomRenderedBannerViewDelegate + +/// Called after ad data has been received. You must construct a banner from |customRenderedAd| and +/// call the |customRenderedAd| object's finishedRenderingAdView: when the ad has been rendered. +- (void)bannerView:(DFPBannerView *)bannerView + didReceiveCustomRenderedAd:(DFPCustomRenderedAd *)customRenderedAd; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPCustomRenderedInterstitialDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPCustomRenderedInterstitialDelegate.h new file mode 100644 index 0000000..0f1f4a8 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPCustomRenderedInterstitialDelegate.h @@ -0,0 +1,29 @@ +// +// DFPCustomRenderedInterstitialDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2014 Google Inc. All rights reserved. +// + +#import + +#import + +@class DFPCustomRenderedAd; +@class DFPInterstitial; + +GAD_ASSUME_NONNULL_BEGIN + +/// The DFPCustomRenderedAd interstitial delegate protocol for notifying the delegate of changes to +/// custom rendered interstitials. +@protocol DFPCustomRenderedInterstitialDelegate + +/// Called after ad data has been received. You must construct an interstitial from +/// |customRenderedAd| and call the |customRenderedAd| object's finishedRenderingAdView: method when +/// the ad has been rendered. +- (void)interstitial:(DFPInterstitial *)interstitial + didReceiveCustomRenderedAd:(DFPCustomRenderedAd *)customRenderedAd; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPInterstitial.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPInterstitial.h new file mode 100644 index 0000000..e3af0d2 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPInterstitial.h @@ -0,0 +1,39 @@ +// +// DFPInterstitial.h +// Google Mobile Ads SDK +// +// Copyright 2012 Google Inc. All rights reserved. +// + +#import +#import +#import +#import +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// DoubleClick For Publishers interstitial ad, a full-screen advertisement shown at natural +/// transition points in your application such as between game levels or news stories. +@interface DFPInterstitial : GADInterstitial + +/// Required value created on the DFP website. Create a new ad unit for every unique placement of an +/// ad in your application. Set this to the ID assigned for this placement. Ad units are important +/// for targeting and stats. +/// +/// Example DFP ad unit ID: @"/6499/example/interstitial" +@property(nonatomic, readonly, copy) NSString *adUnitID; + +/// Correlator object for correlating this object to other ad objects. +@property(nonatomic, strong, GAD_NULLABLE) GADCorrelator *correlator; + +/// Optional delegate that is notified when creatives send app events. +@property(nonatomic, weak, GAD_NULLABLE) id appEventDelegate; + +/// Optional delegate object for custom rendered ads. +@property(nonatomic, weak, GAD_NULLABLE) + id customRenderedInterstitialDelegate; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPRequest.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPRequest.h new file mode 100644 index 0000000..c934db4 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/DFPRequest.h @@ -0,0 +1,37 @@ +// +// DFPRequest.h +// Google Mobile Ads SDK +// +// Copyright 2014 Google Inc. All rights reserved. +// + +#import + +#import +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// Add this constant to the testDevices property's array to receive test ads on the simulator. +GAD_EXTERN const id kDFPSimulatorID; + +/// Specifies optional parameters for ad requests. +@interface DFPRequest : GADRequest + +/// Publisher provided user ID. +@property(nonatomic, copy, GAD_NULLABLE) NSString *publisherProvidedID; + +/// Array of strings used to exclude specified categories in ad results. +@property(nonatomic, copy, GAD_NULLABLE) NSArray *categoryExclusions; + +/// Key-value pairs used for custom targeting. +@property(nonatomic, copy, GAD_NULLABLE) NSDictionary *customTargeting; + +/// This API is deprecated and a no-op, use an instance of GADCorrelator set on DFPInterstitial or +/// DFPBannerView objects to correlate requests. ++ (void)updateCorrelator GAD_DEPRECATED_MSG_ATTRIBUTE( + "Set GADCorrelator objects on your ads instead. This method longer affects ad correlation."); + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdDelegate.h new file mode 100644 index 0000000..27cdda0 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdDelegate.h @@ -0,0 +1,28 @@ +// +// GADAdDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import + +GAD_ASSUME_NONNULL_BEGIN + +#pragma mark - Audio Control Notifications + +/// Delegate methods common to multiple ad types. +@protocol GADAdDelegate + +@optional + +#pragma mark Audio Control Methods + +/// Asks the delegate if the audio session category can be changed while displaying an ad. Return NO +/// to prevent the Google Mobile Ads SDK from changing the audio session category. The default +/// behavior if unimplemented is to return YES. +- (BOOL)ad:(id)ad shouldChangeAudioSessionToCategory:(NSString *)audioSessionCategory; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdLoader.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdLoader.h new file mode 100644 index 0000000..44ee5c5 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdLoader.h @@ -0,0 +1,49 @@ +// +// GADAdLoader.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import +#import + +#import +#import +#import +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// Loads ads. See GADAdLoaderAdTypes.h for available ad types. +@interface GADAdLoader : NSObject + +/// Object notified when an ad request succeeds or fails. Must conform to requested ad types' +/// delegate protocols. +@property(nonatomic, weak, GAD_NULLABLE) id delegate; + +/// The ad loader's ad unit ID. +@property(nonatomic, readonly) NSString *adUnitID; + +/// Returns an initialized ad loader configured to load the specified ad types. +/// +/// @param rootViewController The root view controller is used to present ad click actions. +/// @param adTypes An array of ad types. See GADAdLoaderAdTypes.h for available ad types. +/// @param options An array of GADAdLoaderOptions objects to configure how ads are loaded, or nil to +/// use default options. See each ad type's header for available GADAdLoaderOptions subclasses. +- (instancetype)initWithAdUnitID:(NSString *)adUnitID + rootViewController:(UIViewController *GAD_NULLABLE_TYPE)rootViewController + adTypes:(NSArray *)adTypes + options:(NSArray *GAD_NULLABLE_TYPE)options; + +/// Loads the ad and informs the delegate of the outcome. +- (void)loadRequest:(GADRequest *GAD_NULLABLE_TYPE)request; + +@end + +/// Ad loader options base class. See each ad type's header for available GADAdLoaderOptions +/// subclasses. +@interface GADAdLoaderOptions : NSObject +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdLoaderAdTypes.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdLoaderAdTypes.h new file mode 100644 index 0000000..76d1762 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdLoaderAdTypes.h @@ -0,0 +1,31 @@ +// +// GADAdLoaderAdTypes.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import + +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// Use with GADAdLoader to request native app install ads. To receive ads, the ad loader's delegate +/// must conform to the GADNativeAppInstallAdRequestDelegate protocol. See GADNativeAppInstallAd.h. +/// +/// See GADNativeAdImageAdLoaderOptions.h for ad loader image options. +GAD_EXTERN NSString *const kGADAdLoaderAdTypeNativeAppInstall; + +/// Use with GADAdLoader to request native content ads. To receive ads, the ad loader's delegate +/// must conform to the GADNativeContentAdRequestDelegate protocol. See GADNativeContentAd.h. +/// +/// See GADNativeAdImageAdLoaderOptions.h for ad loader image options. +GAD_EXTERN NSString *const kGADAdLoaderAdTypeNativeContent; + +/// Use with GADAdLoader to request native custom template ads. To receive ads, the ad loader's +/// delegate must conform to the GADNativeCustomTemplateAdLoaderDelegate protocol. See +/// GADNativeCustomTemplateAd.h. +GAD_EXTERN NSString *const kGADAdLoaderAdTypeNativeCustomTemplate; + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdLoaderDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdLoaderDelegate.h new file mode 100644 index 0000000..dec90b7 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdLoaderDelegate.h @@ -0,0 +1,26 @@ +// +// GADAdLoaderDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import + +#import +#import + +@class GADAdLoader; + +GAD_ASSUME_NONNULL_BEGIN + +/// Base ad loader delegate protocol. Ad types provide extended protocols that declare methods to +/// handle successful ad loads. +@protocol GADAdLoaderDelegate + +/// Called when adLoader fails to load an ad. +- (void)adLoader:(GADAdLoader *)adLoader didFailToReceiveAdWithError:(GADRequestError *)error; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdNetworkExtras.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdNetworkExtras.h new file mode 100644 index 0000000..d33de74 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdNetworkExtras.h @@ -0,0 +1,16 @@ +// +// GADAdNetworkExtras.h +// Google Mobile Ads SDK +// +// Copyright 2012 Google Inc. All rights reserved. +// + +#import + +/// An object implementing this protocol contains information set by the publisher on the client +/// device for a particular ad network. +/// +/// Ad networks should create an 'extras' object implementing this protocol for their publishers to +/// use. +@protocol GADAdNetworkExtras +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdReward.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdReward.h new file mode 100644 index 0000000..38aeefb --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdReward.h @@ -0,0 +1,30 @@ +// +// GADAdReward.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import + +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// Reward information for GADRewardBasedVideoAd ads. +@interface GADAdReward : NSObject + +/// Type of the reward. +@property(nonatomic, readonly, copy) NSString *type; + +/// Amount rewarded to the user. +@property(nonatomic, readonly, copy) NSDecimalNumber *amount; + +/// Returns an initialized GADAdReward with the provided reward type and reward amount. rewardType +/// and rewardAmount must not be nil. +- (instancetype)initWithRewardType:(NSString *)rewardType + rewardAmount:(NSDecimalNumber *)rewardAmount NS_DESIGNATED_INITIALIZER; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdSize.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdSize.h new file mode 100644 index 0000000..fb2f698 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdSize.h @@ -0,0 +1,117 @@ +// +// GADAdSize.h +// Google Mobile Ads SDK +// +// Copyright 2012 Google Inc. All rights reserved. +// + +#import +#import + +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// A valid GADAdSize is considered to be one of the predefined GADAdSize constants or a GADAdSize +/// constructed by GADAdSizeFromCGSize, GADAdSizeFullWidthPortraitWithHeight, +/// GADAdSizeFullWidthLandscapeWithHeight. +/// +/// Do not create a GADAdSize manually. Use one of the kGADAdSize constants. Treat GADAdSize as an +/// opaque type. Do not access any fields directly. To obtain a concrete CGSize, use the function +/// CGSizeFromGADAdSize(). +typedef struct GADAdSize GADAdSize; + +/// Ad size. +/// +/// @see typedef GADAdSize +struct GADAdSize { + CGSize size; ///< The ad size. Don't modify this value directly. + NSUInteger flags; ///< Reserved. +}; + +#pragma mark Standard Sizes + +/// iPhone and iPod Touch ad size. Typically 320x50. +GAD_EXTERN GADAdSize const kGADAdSizeBanner; + +/// Taller version of kGADAdSizeBanner. Typically 320x100. +GAD_EXTERN GADAdSize const kGADAdSizeLargeBanner; + +/// Medium Rectangle size for the iPad (especially in a UISplitView's left pane). Typically 300x250. +GAD_EXTERN GADAdSize const kGADAdSizeMediumRectangle; + +/// Full Banner size for the iPad (especially in a UIPopoverController or in +/// UIModalPresentationFormSheet). Typically 468x60. +GAD_EXTERN GADAdSize const kGADAdSizeFullBanner; + +/// Leaderboard size for the iPad. Typically 728x90. +GAD_EXTERN GADAdSize const kGADAdSizeLeaderboard; + +/// Skyscraper size for the iPad. Mediation only. AdMob/Google does not offer this size. Typically +/// 120x600. +GAD_EXTERN GADAdSize const kGADAdSizeSkyscraper; + +/// An ad size that spans the full width of the application in portrait orientation. The height is +/// typically 50 pixels on an iPhone/iPod UI, and 90 pixels tall on an iPad UI. +GAD_EXTERN GADAdSize const kGADAdSizeSmartBannerPortrait; + +/// An ad size that spans the full width of the application in landscape orientation. The height is +/// typically 32 pixels on an iPhone/iPod UI, and 90 pixels tall on an iPad UI. +GAD_EXTERN GADAdSize const kGADAdSizeSmartBannerLandscape; + +/// An ad size that spans the full width of its container, with a height dynamically determined by +/// the ad. +GAD_EXTERN GADAdSize const kGADAdSizeFluid; + +/// Invalid ad size marker. +GAD_EXTERN GADAdSize const kGADAdSizeInvalid; + +#pragma mark Custom Sizes + +/// Returns a custom GADAdSize for the provided CGSize. Use this only if you require a non-standard +/// size. Otherwise, use one of the standard size constants above. +GAD_EXTERN GADAdSize GADAdSizeFromCGSize(CGSize size); + +/// Returns a custom GADAdSize that spans the full width of the application in portrait orientation +/// with the height provided. +GAD_EXTERN GADAdSize GADAdSizeFullWidthPortraitWithHeight(CGFloat height); + +/// Returns a custom GADAdSize that spans the full width of the application in landscape orientation +/// with the height provided. +GAD_EXTERN GADAdSize GADAdSizeFullWidthLandscapeWithHeight(CGFloat height); + +#pragma mark Convenience Functions + +/// Returns YES if the two GADAdSizes are equal, otherwise returns NO. +GAD_EXTERN BOOL GADAdSizeEqualToSize(GADAdSize size1, GADAdSize size2); + +/// Returns a CGSize for the provided a GADAdSize constant. If the GADAdSize is unknown, returns +/// CGSizeZero. +GAD_EXTERN CGSize CGSizeFromGADAdSize(GADAdSize size); + +/// Returns YES if |size| is one of the predefined constants or is a custom GADAdSize generated by +/// GADAdSizeFromCGSize. +GAD_EXTERN BOOL IsGADAdSizeValid(GADAdSize size); + +/// Returns YES if |size| is a fluid ad size. +GAD_EXTERN BOOL GADAdSizeIsFluid(GADAdSize size); + +/// Returns a NSString describing the provided GADAdSize. +GAD_EXTERN NSString *NSStringFromGADAdSize(GADAdSize size); + +/// Returns an NSValue representing the GADAdSize. +GAD_EXTERN NSValue *NSValueFromGADAdSize(GADAdSize size); + +/// Returns a GADAdSize from an NSValue. Returns kGADAdSizeInvalid if the value is not a GADAdSize. +GAD_EXTERN GADAdSize GADAdSizeFromNSValue(NSValue *value); + +#pragma mark Deprecated Macros + +#define GAD_SIZE_320x50 CGSizeFromGADAdSize(kGADAdSizeBanner) +#define GAD_SIZE_320x100 CGSizeFromGADAdSize(kGADAdSizeLargeBanner) +#define GAD_SIZE_300x250 CGSizeFromGADAdSize(kGADAdSizeMediumRectangle) +#define GAD_SIZE_468x60 CGSizeFromGADAdSize(kGADAdSizeFullBanner) +#define GAD_SIZE_728x90 CGSizeFromGADAdSize(kGADAdSizeLeaderboard) +#define GAD_SIZE_120x600 CGSizeFromGADAdSize(kGADAdSizeSkyscraper) + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdSizeDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdSizeDelegate.h new file mode 100644 index 0000000..ce82adc --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAdSizeDelegate.h @@ -0,0 +1,26 @@ +// +// GADAdSizeDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2012 Google Inc. All rights reserved. +// + +#import + +#import +#import + +@class GADBannerView; + +GAD_ASSUME_NONNULL_BEGIN + +/// The class implementing this protocol will be notified when the DFPBannerView changes ad size. +/// Any views that may be affected by the banner size change will have time to adjust. +@protocol GADAdSizeDelegate + +/// Called before the ad view changes to the new size. +- (void)adView:(GADBannerView *)bannerView willChangeAdSizeTo:(GADAdSize)size; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAppEventDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAppEventDelegate.h new file mode 100644 index 0000000..34fbcce --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADAppEventDelegate.h @@ -0,0 +1,29 @@ +// +// GADAppEventDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2012 Google Inc. All rights reserved. +// + +#import + +@class GADBannerView; +@class GADInterstitial; + +/// Implement your app event within these methods. The delegate will be notified when the SDK +/// receives an app event message from the ad. +@protocol GADAppEventDelegate + +@optional + +/// Called when the banner receives an app event. +- (void)adView:(GADBannerView *)banner + didReceiveAppEvent:(NSString *)name + withInfo:(NSString *)info; + +/// Called when the interstitial receives an app event. +- (void)interstitial:(GADInterstitial *)interstitial + didReceiveAppEvent:(NSString *)name + withInfo:(NSString *)info; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADBannerView.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADBannerView.h new file mode 100644 index 0000000..a93a71b --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADBannerView.h @@ -0,0 +1,108 @@ +// +// GADBannerView.h +// Google Mobile Ads SDK +// +// Copyright 2011 Google Inc. All rights reserved. +// + +#import + +#import +#import +#import +#import +#import +#import +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// The view that displays banner ads. A minimum implementation to get an ad from within a +/// UIViewController class is: +/// +///
+///   // Create and setup the ad view, specifying the size and origin at {0, 0}.
+///   GADBannerView *adView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
+///   adView.rootViewController = self;
+///   adView.adUnitID = @"ID created when registering your app";
+///   // Place the ad view onto the screen.
+///   [self.view addSubview:adView];
+///   // Request an ad without any additional targeting information.
+///   [adView loadRequest:[GADRequest request]];
+///   
+@interface GADBannerView : UIView + +#pragma mark Initialization + +/// Initializes and returns a banner view with the specified ad size and origin relative to the +/// banner's superview. +- (instancetype)initWithAdSize:(GADAdSize)adSize origin:(CGPoint)origin; + +/// Initializes and returns a banner view with the specified ad size placed at its superview's +/// origin. +- (instancetype)initWithAdSize:(GADAdSize)adSize; + +#pragma mark Pre-Request + +/// Required value created on the AdMob website. Create a new ad unit for every unique placement of +/// an ad in your application. Set this to the ID assigned for this placement. Ad units are +/// important for targeting and statistics. +/// +/// Example AdMob ad unit ID: @"ca-app-pub-0123456789012345/0123456789" +@property(nonatomic, copy, GAD_NULLABLE) IBInspectable NSString *adUnitID; + +/// Required reference to the current root view controller. For example the root view controller in +/// tab-based application would be the UITabViewController. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIViewController *rootViewController; + +/// Required to set this banner view to a proper size. Never create your own GADAdSize directly. Use +/// one of the predefined standard ad sizes (such as kGADAdSizeBanner), or create one using the +/// GADAdSizeFromCGSize method. If not using mediation, then changing the adSize after an ad has +/// been shown will cause a new request (for an ad of the new size) to be sent. If using mediation, +/// then a new request may not be sent. +@property(nonatomic, assign) GADAdSize adSize; + +/// Optional delegate object that receives state change notifications from this GADBannerView. +/// Typically this is a UIViewController. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet id delegate; + +/// Optional delegate object that receives in-app purchase notifications from this ad. Required for +/// the custom in-app purchase flow, but ignored when using the default in-app purchase flow. +@property(nonatomic, weak, GAD_NULLABLE) + IBOutlet id inAppPurchaseDelegate; + +/// Optional delegate that is notified when creatives cause the banner to change size. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet id adSizeDelegate; + +#pragma mark Making an Ad Request + +/// Makes an ad request. The request object supplies targeting information. +- (void)loadRequest:(GADRequest *GAD_NULLABLE_TYPE)request; + +/// A Boolean value that determines whether autoloading of ads in the receiver is enabled. If +/// enabled, you do not need to call the loadRequest: method to load ads. +@property(nonatomic, assign, getter=isAutoloadEnabled) IBInspectable BOOL autoloadEnabled; + +#pragma mark Mediation + +/// The ad network class name that fetched the current ad. Returns nil while the latest ad request +/// is in progress or if the latest ad request failed. For both standard and mediated Google AdMob +/// ads, this property returns @"GADMAdapterGoogleAdMobAds". For ads fetched via mediation custom +/// events, this property returns @"GADMAdapterCustomEvents". +@property(nonatomic, readonly, copy, GAD_NULLABLE) NSString *adNetworkClassName; + +#pragma mark Deprecated + +/// Indicates if the currently displayed ad (or most recent failure) was a result of auto refreshing +/// as specified on server. This property is set to NO after each loadRequest: method. +@property(nonatomic, readonly, assign) BOOL hasAutoRefreshed GAD_DEPRECATED_ATTRIBUTE; + +/// The mediated ad network's underlying ad view. You may use this property to read the ad's actual +/// size and adjust this banner view's frame origin. However, modifying the banner view's frame size +/// triggers the Mobile Ads SDK to request a new ad. Only update the banner view's frame origin. +@property(nonatomic, readonly, weak, GAD_NULLABLE) + UIView *mediatedAdView GAD_DEPRECATED_MSG_ATTRIBUTE("Use adNetworkClassName."); + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADBannerViewDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADBannerViewDelegate.h new file mode 100644 index 0000000..e4bee35 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADBannerViewDelegate.h @@ -0,0 +1,49 @@ +// +// GADBannerViewDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2011 Google Inc. All rights reserved. +// + +#import + +#import + +@class GADBannerView; +@class GADRequestError; + +/// Delegate methods for receiving GADBannerView state change messages such as ad request status +/// and ad click lifecycle. +@protocol GADBannerViewDelegate + +@optional + +#pragma mark Ad Request Lifecycle Notifications + +/// Tells the delegate that an ad request successfully received an ad. The delegate may want to add +/// the banner view to the view hierarchy if it hasn't been added yet. +- (void)adViewDidReceiveAd:(GADBannerView *)bannerView; + +/// Tells the delegate that an ad request failed. The failure is normally due to network +/// connectivity or ad availablility (i.e., no fill). +- (void)adView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(GADRequestError *)error; + +#pragma mark Click-Time Lifecycle Notifications + +/// Tells the delegate that a full screen view will be presented in response to the user clicking on +/// an ad. The delegate may want to pause animations and time sensitive interactions. +- (void)adViewWillPresentScreen:(GADBannerView *)bannerView; + +/// Tells the delegate that the full screen view will be dismissed. +- (void)adViewWillDismissScreen:(GADBannerView *)bannerView; + +/// Tells the delegate that the full screen view has been dismissed. The delegate should restart +/// anything paused while handling adViewWillPresentScreen:. +- (void)adViewDidDismissScreen:(GADBannerView *)bannerView; + +/// Tells the delegate that the user click will open another app, backgrounding the current +/// application. The standard UIApplicationDelegate methods, like applicationDidEnterBackground:, +/// are called immediately before this method is called. +- (void)adViewWillLeaveApplication:(GADBannerView *)bannerView; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCorrelator.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCorrelator.h new file mode 100644 index 0000000..268c2ae --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCorrelator.h @@ -0,0 +1,17 @@ +// +// GADCorrelator.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import + +/// Represents a correlation between multiple ads. Set an instance of this object on multiple ads to +/// indicate they are being used in a common context. +@interface GADCorrelator : NSObject + +/// Resets the correlator to force a new set of correlated ads. +- (void)reset; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCorrelatorAdLoaderOptions.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCorrelatorAdLoaderOptions.h new file mode 100644 index 0000000..65df4e8 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCorrelatorAdLoaderOptions.h @@ -0,0 +1,17 @@ +// +// GADCorrelatorAdLoaderOptions.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import +#import + +/// Ad loader options for adding a correlator to a native ad request. +@interface GADCorrelatorAdLoaderOptions : GADAdLoaderOptions + +/// Correlator object for correlating ads loaded by an ad loader to other ad objects. +@property(nonatomic, strong) GADCorrelator *correlator; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventBanner.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventBanner.h new file mode 100644 index 0000000..057736e --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventBanner.h @@ -0,0 +1,35 @@ +// +// GADCustomEventBanner.h +// Google Mobile Ads SDK +// +// Copyright 2012 Google Inc. All rights reserved. +// + +#import + +#import +#import +#import + +/// The banner custom event protocol. Your banner custom event handler must implement this protocol. +@protocol GADCustomEventBanner + +/// Inform |delegate| with the custom event execution results to ensure mediation behaves correctly. +/// +/// In your class, define the -delegate and -setDelegate: methods or use "@synthesize delegate". The +/// Google Mobile Ads SDK sets this property on instances of your class. +@property(nonatomic, weak) id delegate; + +/// Called by mediation when your custom event is scheduled to be executed. Report execution results +/// to the delegate. +/// +/// @param adSize The size of the ad as configured in the mediation UI for the mediation placement. +/// @param serverParameter Parameter configured in the mediation UI. +/// @param serverLabel Label configured in the mediation UI. +/// @param request Contains ad request information. +- (void)requestBannerAd:(GADAdSize)adSize + parameter:(NSString *)serverParameter + label:(NSString *)serverLabel + request:(GADCustomEventRequest *)request; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventBannerDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventBannerDelegate.h new file mode 100644 index 0000000..61e43a4 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventBannerDelegate.h @@ -0,0 +1,63 @@ +// +// GADCustomEventBannerDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2012 Google Inc. All rights reserved. +// + +#import +#import + +#import + +@protocol GADCustomEventBanner; + +/// Call back to this delegate in your custom event. You must call customEventBanner:didReceiveAd: +/// when there is an ad to show, or customEventBanner:didFailAd: when there is no ad to show. +/// Otherwise, if enough time passed (several seconds) after the SDK called the requestBannerAd: +/// method of your custom event, the mediation SDK will consider the request timed out, and move on +/// to the next ad network. +@protocol GADCustomEventBannerDelegate + +/// Your Custom Event object must call this when it receives or creates an ad view. +- (void)customEventBanner:(id)customEvent didReceiveAd:(UIView *)view; + +/// Your Custom Event object must call this when it fails to receive or create the ad view. Pass +/// along any error object sent from the ad network's SDK, or an NSError describing the error. Pass +/// nil if not available. +- (void)customEventBanner:(id)customEvent didFailAd:(NSError *)error; + +/// Your Custom Event object should call this when the user touches or "clicks" the ad to initiate +/// an action. When the SDK receives this callback, it reports the click back to the mediation +/// server. +- (void)customEventBannerWasClicked:(id)customEvent; + +/// The rootViewController that you set in GADBannerView. Use this UIViewController to show a modal +/// view when a user taps on the ad. +@property(nonatomic, readonly) UIViewController *viewControllerForPresentingModalView; + +/// When you call the following methods, the call will be propagated back to the +/// GADBannerViewDelegate that you implemented and passed to GADBannerView. + +/// Your Custom Event should call this when the user taps an ad and a modal view appears. +- (void)customEventBannerWillPresentModal:(id)customEvent; + +/// Your Custom Event should call this when the user dismisses the modal view and the modal view is +/// about to go away. +- (void)customEventBannerWillDismissModal:(id)customEvent; + +/// Your Custom Event should call this when the user dismisses the modal view and the modal view has +/// gone away. +- (void)customEventBannerDidDismissModal:(id)customEvent; + +/// Your Custom Event should call this method when a user action will result in App switching. +- (void)customEventBannerWillLeaveApplication:(id)customEvent; + +#pragma mark Deprecated + +/// Deprecated. Use customEventBannerWasClicked:. +- (void)customEventBanner:(id)customEvent + clickDidOccurInAd:(UIView *)view + GAD_DEPRECATED_MSG_ATTRIBUTE("Use customEventBannerWasClicked:."); + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventExtras.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventExtras.h new file mode 100644 index 0000000..3ebe81e --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventExtras.h @@ -0,0 +1,30 @@ +// +// GADCustomEventExtras.h +// Google Mobile Ads SDK +// +// Copyright 2012 Google Inc. All rights reserved. +// + +#import + +#import + +/// Create an instance of this class to set additional parameters for each custom event object. The +/// additional parameters for a custom event are keyed by the custom event label. These extras are +/// passed to your implementation of GADCustomEventBanner or GADCustomEventInterstitial. +@interface GADCustomEventExtras : NSObject + +/// Set additional parameters for the custom event with label |label|. To remove additional +/// parameters associated with |label|, pass in nil for |extras|. +- (void)setExtras:(NSDictionary *)extras forLabel:(NSString *)label; + +/// Retrieve the extras for |label|. +- (NSDictionary *)extrasForLabel:(NSString *)label; + +/// Removes all the extras set on this instance. +- (void)removeAllExtras; + +/// Returns all the extras set on this instance. +- (NSDictionary *)allExtras; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventInterstitial.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventInterstitial.h new file mode 100644 index 0000000..4304fe4 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventInterstitial.h @@ -0,0 +1,38 @@ +// +// GADCustomEventInterstitial.h +// Google Mobile Ads SDK +// +// Copyright 2012 Google Inc. All rights reserved. +// + +#import + +#import +#import + +/// The interstitial custom event protocol. Your interstitial custom event handler must implement +/// this protocol. +@protocol GADCustomEventInterstitial + +/// Inform |delegate| with the custom event execution results to ensure mediation behaves correctly. +/// +/// In your class, define the -delegate and -setDelegate: methods or use "@synthesize delegate". The +/// Google Mobile Ads SDK sets this property on instances of your class. +@property(nonatomic, weak) id delegate; + +/// Called by mediation when your custom event is scheduled to be executed. Your implementation +/// should start retrieving the interstitial ad. Report execution results to the delegate. You must +/// wait until -presentFromRootViewController is called before displaying the interstitial ad. +/// +/// @param serverParameter Parameter configured in the mediation UI. +/// @param serverLabel Label configured in the mediation UI. +/// @param request Contains ad request information. +- (void)requestInterstitialAdWithParameter:(NSString *)serverParameter + label:(NSString *)serverLabel + request:(GADCustomEventRequest *)request; + +/// Present the interstitial ad as a modal view using the provided view controller. Called only +/// after your class calls -customEventInterstitialDidReceiveAd: on its custom event delegate. +- (void)presentFromRootViewController:(UIViewController *)rootViewController; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventInterstitialDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventInterstitialDelegate.h new file mode 100644 index 0000000..7f22451 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventInterstitialDelegate.h @@ -0,0 +1,58 @@ +// +// GADCustomEventInterstitialDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2012 Google Inc. All rights reserved. +// + +#import + +#import + +@protocol GADCustomEventInterstitial; + +/// Call back to this delegate in your custom event. You must call +/// customEventInterstitialDidReceiveAd: when there is an ad to show, or +/// customEventInterstitial:didFailAd: when there is no ad to show. Otherwise, if enough time passed +/// (several seconds) after the SDK called the requestInterstitialAdWithParameter: method of your +/// custom event, the mediation SDK will consider the request timed out, and move on to the next ad +/// network. +@protocol GADCustomEventInterstitialDelegate + +/// Your Custom Event object must call this when it receives or creates an interstitial ad. +- (void)customEventInterstitialDidReceiveAd:(id)customEvent; + +/// Your Custom Event object must call this when it fails to receive or create the ad. Pass along +/// any error object sent from the ad network's SDK, or an NSError describing the error. Pass nil if +/// not available. +- (void)customEventInterstitial:(id)customEvent + didFailAd:(NSError *)error; + +/// Your Custom Event object should call this when the user touches or "clicks" the ad to initiate +/// an action. When the SDK receives this callback, it reports the click back to the mediation +/// server. +- (void)customEventInterstitialWasClicked:(id)customEvent; + +// When you call any of the following methods, the call will be propagated back to the +// GADInterstitialDelegate that you implemented and passed to GADInterstitial. + +/// Your Custom Event should call this when the interstitial is being displayed. +- (void)customEventInterstitialWillPresent:(id)customEvent; + +/// Your Custom Event should call this when the interstitial is about to be dismissed. +- (void)customEventInterstitialWillDismiss:(id)customEvent; + +/// Your Custom Event should call this when the interstitial has been dismissed. +- (void)customEventInterstitialDidDismiss:(id)customEvent; + +/// Your Custom Event should call this method when a user action will result in app switching. +- (void)customEventInterstitialWillLeaveApplication:(id)customEvent; + +#pragma mark Deprecated + +/// Deprecated. Use customEventInterstitialDidReceiveAd:. +- (void)customEventInterstitial:(id)customEvent + didReceiveAd:(NSObject *)ad + GAD_DEPRECATED_MSG_ATTRIBUTE("Use customEventInterstitialDidReceiveAd:."); + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventNativeAd.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventNativeAd.h new file mode 100644 index 0000000..1d3026c --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventNativeAd.h @@ -0,0 +1,53 @@ +// +// GADCustomEventNativeAd.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import + +#import "GADCustomEventRequest.h" + +@protocol GADCustomEventNativeAdDelegate; + +/// Native ad custom event protocol. Your native ad custom event handler class must conform to this +/// protocol. +@protocol GADCustomEventNativeAd + +/// Called when the custom event is scheduled to be executed. +/// +/// @param serverParameter A value configured in the mediation UI for the custom event. +/// @param request Ad targeting information. +/// @param adTypes List of requested native ad types. See GADAdLoaderAdTypes.h for available ad +/// types. +/// @param options Additional options configured by the publisher for requesting a native ad. See +/// GADNativeAdImageAdLoaderOptions.h for available image options. +/// @param rootViewController Publisher-provided view controller. +- (void)requestNativeAdWithParameter:(NSString *)serverParameter + request:(GADCustomEventRequest *)request + adTypes:(NSArray *)adTypes + options:(NSArray *)options + rootViewController:(UIViewController *)rootViewController; + +/// Indicates if the custom event handles user clicks. Return YES if the custom event should handle +/// user clicks. In this case, the Google Mobile Ads SDK doesn't track user clicks and the custom +/// event must notify the Google Mobile Ads SDK of clicks using +/// +[GADMediatedNativeAdNotificationSource mediatedNativeAdDidRecordClick:]. Return NO if the +/// custom event doesn't handles user clicks. In this case, the Google Mobile Ads SDK tracks user +/// clicks itself and the custom event is notified of user clicks via -[GADMediatedNativeAdDelegate +/// mediatedNativeAd:didRecordClickOnAssetWithName:view:viewController:]. +- (BOOL)handlesUserClicks; + +/// Indicates if the custom event handles user impressions tracking. If this method returns YES, the +/// Google Mobile Ads SDK will not track user impressions and the custom event must notify the +/// Google Mobile Ads SDK of impressions using +[GADMediatedNativeAdNotificationSource +/// mediatedNativeAdDidRecordImpression:]. If this method returns NO, +/// the Google Mobile Ads SDK tracks user impressions and notifies the custom event of impressions +/// using -[GADMediatedNativeAdDelegate mediatedNativeAdDidRecordImpression:]. +- (BOOL)handlesUserImpressions; + +/// Delegate object used for receiving custom native ad load request progress. +@property(nonatomic, weak) id delegate; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventNativeAdDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventNativeAdDelegate.h new file mode 100644 index 0000000..4f1f79a --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventNativeAdDelegate.h @@ -0,0 +1,26 @@ +// +// GADCustomEventNativeAdDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import + +#import +#import + +/// The delegate of the GADCustomEventNativeAd object must adopt the GADCustomEventNativeAdDelegate +/// protocol. Methods in this protocol are used for native ad's custom event communication with the +/// Google Mobile Ads SDK. +@protocol GADCustomEventNativeAdDelegate + +/// Tells the delegate that the custom event ad request succeeded and loaded a native ad. +- (void)customEventNativeAd:(id)customEventNativeAd + didReceiveMediatedNativeAd:(id)mediatedNativeAd; + +/// Tells the delegate that the custom event ad request failed. +- (void)customEventNativeAd:(id)customEventNativeAd + didFailToLoadWithError:(NSError *)error; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventParameters.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventParameters.h new file mode 100644 index 0000000..6b3fe64 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventParameters.h @@ -0,0 +1,13 @@ +// +// GADCustomEventParameters.h +// Google Mobile Ads SDK +// +// Copyright 2016 Google Inc. All rights reserved. +// + +#import + +/// Key for getting the server parameter configured in AdMob when mediating to a custom event +/// adapter. +/// Eg: NSString *serverParameter = [connector credentials][GADCustomEventParametersServer]. +extern NSString *const GADCustomEventParametersServer; diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventRequest.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventRequest.h new file mode 100644 index 0000000..183115c --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADCustomEventRequest.h @@ -0,0 +1,54 @@ +// +// GADCustomEventRequest.h +// Google Mobile Ads SDK +// +// Copyright 2012 Google Inc. All rights reserved. +// + +#import + +#import + +@class GADCustomEventExtras; + +/// Specifies optional ad request targeting parameters that are provided by the publisher and are +/// forwarded to custom events for purposes of populating an ad request to a 3rd party ad network. +@interface GADCustomEventRequest : NSObject + +/// User's gender set in GADRequest. If not specified, returns kGADGenderUnknown. +@property(nonatomic, readonly, assign) GADGender userGender; + +/// User's birthday set in GADRequest. If not specified, returns nil. +@property(nonatomic, readonly, copy) NSDate *userBirthday; + +/// If the user's latitude, longitude, and accuracy are not specified, userHasLocation returns NO, +/// and userLatitude, userLongitude, and userLocationAccuracyInMeters return 0. +@property(nonatomic, readonly, assign) BOOL userHasLocation; + +/// User's latitude set in GADRequest. +@property(nonatomic, readonly, assign) CGFloat userLatitude; + +/// User's longitude set in GADRequest. +@property(nonatomic, readonly, assign) CGFloat userLongitude; + +/// The accuracy, in meters, of the user's location data. +@property(nonatomic, readonly, assign) CGFloat userLocationAccuracyInMeters; + +/// Description of the user's location, in free form text, set in GADRequest. If not available, +/// returns nil. This may be set even if userHasLocation is NO. +@property(nonatomic, readonly, copy) NSString *userLocationDescription; + +/// Keywords set in GADRequest. Returns nil if no keywords are set. +@property(nonatomic, readonly, copy) NSArray *userKeywords; + +/// The additional parameters set by the application. This property allows you to pass additional +/// information from your application to your Custom Event object. To do so, create an instance of +/// GADCustomEventExtras to pass to GADRequest -registerAdNetworkExtras:. The instance should have +/// an NSDictionary set for a particular custom event label. That NSDictionary becomes the +/// additionalParameters here. +@property(nonatomic, readonly, copy) NSDictionary *additionalParameters; + +/// Indicates if the testing property has been set in GADRequest. +@property(nonatomic, readonly, assign) BOOL isTesting; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADDebugOptionsViewController.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADDebugOptionsViewController.h new file mode 100644 index 0000000..acc98dc --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADDebugOptionsViewController.h @@ -0,0 +1,36 @@ +// +// GADDebugOptionsViewController.h +// Google Mobile Ads SDK +// +// Copyright 2016 Google Inc. All rights reserved. +// + +#import +#import + +#import + +@class GADDebugOptionsViewController; + +GAD_ASSUME_NONNULL_BEGIN + +/// Delegate for the GADDebugOptionsViewController. +@protocol GADDebugOptionsViewControllerDelegate +/// Called when the debug options flow is finished. +- (void)debugOptionsViewControllerDidDismiss:(GADDebugOptionsViewController *)controller; +@end + +/// Displays debug options to the user. +@interface GADDebugOptionsViewController : UIViewController + +/// Creates and returns a GADDebugOptionsViewController object initialized with the ad unit ID. +/// @param adUnitID An ad unit ID for the DFP account that is being configured with debug options. ++ (instancetype)debugOptionsViewControllerWithAdUnitID:(NSString *)adUnitID; + +/// Delegate for the debug options view controller. +@property(nonatomic, weak, GAD_NULLABLE) + IBOutlet id delegate; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADDynamicHeightSearchRequest.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADDynamicHeightSearchRequest.h new file mode 100644 index 0000000..3982731 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADDynamicHeightSearchRequest.h @@ -0,0 +1,160 @@ +// +// GADDynamicHeightSearchRequest.h +// GoogleMobileAds +// +// Copyright © 2016 Google Inc. All rights reserved. +// + +#import "GADRequest.h" + +/// Use to configure Custom Search Ad (CSA) ad requests. A dynamic height search banner can contain +/// multiple ads and the height is set dynamically based on the ad contents. Please cross-reference +/// the property sections and properties with the official reference document: +/// https://developers.google.com/custom-search-ads/docs/reference +@interface GADDynamicHeightSearchRequest : GADRequest + +#pragma mark - Page Level Parameters + +#pragma mark Required + +/// The CSA "query" parameter. +@property(nonatomic, copy) NSString *query; + +/// The CSA "adPage" parameter. +@property(nonatomic, assign) NSInteger adPage; + +#pragma mark Configuration Settings + +/// Indicates if the CSA "adTest" parameter is enabled. +@property(nonatomic, assign) BOOL adTestEnabled; + +/// The CSA "channel" parameter. +@property(nonatomic, copy) NSString *channel; + +/// The CSA "hl" parameter. +@property(nonatomic, copy) NSString *hostLanguage; + +#pragma mark Layout and Styling + +/// The CSA "colorLocation" parameter. +@property(nonatomic, copy) NSString *locationExtensionTextColor; + +/// The CSA "fontSizeLocation" parameter. +@property(nonatomic, assign) CGFloat locationExtensionFontSize; + +#pragma mark Ad Extensions + +/// Indicates if the CSA "clickToCall" parameter is enabled. +@property(nonatomic, assign) BOOL clickToCallExtensionEnabled; + +/// Indicates if the CSA "location" parameter is enabled. +@property(nonatomic, assign) BOOL locationExtensionEnabled; + +/// Indicates if the CSA "plusOnes" parameter is enabled. +@property(nonatomic, assign) BOOL plusOnesExtensionEnabled; + +/// Indicates if the CSA "sellerRatings" parameter is enabled. +@property(nonatomic, assign) BOOL sellerRatingsExtensionEnabled; + +/// Indicates if the CSA "siteLinks" parameter is enabled. +@property(nonatomic, assign) BOOL siteLinksExtensionEnabled; + +#pragma mark - Unit Level Parameters + +#pragma mark Required + +/// The CSA "width" parameter. +@property(nonatomic, copy) NSString *CSSWidth; + +/// Configuration Settings + +/// The CSA "number" parameter. +@property(nonatomic, assign) NSInteger numberOfAds; + +#pragma mark Font + +/// The CSA "fontFamily" parameter. +@property(nonatomic, copy) NSString *fontFamily; + +/// The CSA "fontFamilyAttribution" parameter. +@property(nonatomic, copy) NSString *attributionFontFamily; + +/// The CSA "fontSizeAnnotation" parameter. +@property(nonatomic, assign) CGFloat annotationFontSize; + +/// The CSA "fontSizeAttribution" parameter. +@property(nonatomic, assign) CGFloat attributionFontSize; + +/// The CSA "fontSizeDescription" parameter. +@property(nonatomic, assign) CGFloat descriptionFontSize; + +/// The CSA "fontSizeDomainLink" parameter. +@property(nonatomic, assign) CGFloat domainLinkFontSize; + +/// The CSA "fontSizeTitle" parameter. +@property(nonatomic, assign) CGFloat titleFontSize; + +#pragma mark Color + +/// The CSA "colorAdBorder" parameter. +@property(nonatomic, copy) NSString *adBorderColor; + +/// The CSA "colorAdSeparator" parameter. +@property(nonatomic, copy) NSString *adSeparatorColor; + +/// The CSA "colorAnnotation" parameter. +@property(nonatomic, copy) NSString *annotationTextColor; + +/// The CSA "colorAttribution" parameter. +@property(nonatomic, copy) NSString *attributionTextColor; + +/// The CSA "colorBackground" parameter. +@property(nonatomic, copy) NSString *backgroundColor; + +/// The CSA "colorBorder" parameter. +@property(nonatomic, copy) NSString *borderColor; + +/// The CSA "colorDomainLink" parameter. +@property(nonatomic, copy) NSString *domainLinkColor; + +/// The CSA "colorText" parameter. +@property(nonatomic, copy) NSString *textColor; + +/// The CSA "colorTitleLink" parameter. +@property(nonatomic, copy) NSString *titleLinkColor; + +#pragma mark General Formatting + +/// The CSA "adBorderSelections" parameter. +@property(nonatomic, copy) NSString *adBorderCSSSelections; + +/// The CSA "adjustableLineHeight" parameter. +@property(nonatomic, assign) CGFloat adjustableLineHeight; + +/// The CSA "attributionSpacingBelow" parameter. +@property(nonatomic, assign) CGFloat attributionBottomSpacing; + +/// The CSA "borderSelections" parameter. +@property(nonatomic, copy) NSString *borderCSSSelections; + +/// Indicates if the CSA "noTitleUnderline" parameter is enabled. +@property(nonatomic, assign) BOOL titleUnderlineHidden; + +/// Indicates if the CSA "titleBold" parameter is enabled. +@property(nonatomic, assign) BOOL boldTitleEnabled; + +/// The CSA "verticalSpacing" parameter. +@property(nonatomic, assign) CGFloat verticalSpacing; + +#pragma mark Ad Extensions + +/// Indicates if the CSA "detailedAttribution" parameter is enabled. +@property(nonatomic, assign) BOOL detailedAttributionExtensionEnabled; + +/// Indicates if the CSA "longerHeadlines" parameter is enabled. +@property(nonatomic, assign) BOOL longerHeadlinesExtensionEnabled; + +/// Sets an advanced option value for a specified key. The value must be an NSString or NSNumber. +- (void)setAdvancedOptionValue:(id)value forKey:(NSString *)key; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADExtras.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADExtras.h new file mode 100644 index 0000000..07e7488 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADExtras.h @@ -0,0 +1,18 @@ +// +// GADExtras.h +// Google Mobile Ads SDK +// +// Copyright 2012 Google Inc. All rights reserved. +// + +#import + +#import + +/// Ad network extras sent to Google networks. +@interface GADExtras : NSObject + +/// Additional parameters to be sent to Google networks. +@property(nonatomic, copy) NSDictionary *additionalParameters; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADInAppPurchase.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADInAppPurchase.h new file mode 100644 index 0000000..bd8d922 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADInAppPurchase.h @@ -0,0 +1,80 @@ +// +// GADInAppPurchase.h +// Google Mobile Ads SDK +// +// Copyright 2013 Google Inc. All rights reserved. +// + +#import +#import + +@protocol GADDefaultInAppPurchaseDelegate; + +#pragma mark - Default Purchase Flow + +/// The consumable in-app purchase item that has been purchased by the user. The purchase flow is +/// handled by the Google Mobile Ads SDK. +/// Instances of this class are created and passed to your in-app purchase delegate after the user +/// has successfully paid for a product. Your code must correctly deliver the product to the user +/// and then call the didCompletePurchase method to finish the transaction. +@interface GADDefaultInAppPurchase : NSObject + +/// Enables the default consumable product in-app purchase flow handled by the Google Mobile Ads +/// SDK. The GADDefaultInAppPurchaseDelegate object is retained while the default purchase flow is +/// enabled. This method adds a SKPaymentTransactionObserver to the default SKPaymentQueue. +/// +/// Call this method early in your application to handle unfinished transactions from previous +/// application sessions. For example, call this method in your application delegate's +/// application:didFinishLaunchingWithOptions: method. ++ (void)enableDefaultPurchaseFlowWithDelegate:(id)delegate; + +/// Disables the default in-app purchase flow handled by the Google Mobile Ads SDK and releases the +/// associated GADDefaultInAppPurchaseDelegate object. ++ (void)disableDefaultPurchaseFlow; + +/// The in-app purchase product ID. +@property(nonatomic, readonly, copy) NSString *productID; + +/// The product quantity. +@property(nonatomic, readonly, assign) NSInteger quantity; + +/// The purchased item's completed payment transaction. Your application can use this property's +/// data to save a permanent record of the completed payment. The default purchase flow will finish +/// the transaction on your behalf. Do not finish the transaction yourself. +@property(nonatomic, readonly, strong) SKPaymentTransaction *paymentTransaction; + +/// The in-app purchase delegate object must first deliver the user's item and then call this +/// method. Failure to call this method will result in duplicate purchase notifications. +- (void)finishTransaction; + +@end + +#pragma mark - Custom Purchase Flow + +/// Enum of the different statuses resulting from processing a purchase. +typedef NS_ENUM(NSInteger, GADInAppPurchaseStatus) { + kGADInAppPurchaseStatusError = 0, ///< Error occured while processing the purchase. + kGADInAppPurchaseStatusSuccessful = 1, ///< Purchase was completed successfully. + kGADInAppPurchaseStatusCancel = 2, ///< Purchase was cancelled by the user. + kGADInAppPurchaseStatusInvalidProduct = 3 ///< Error occured while looking up the product. +}; + +/// The in-app purchase item to be purchased with the purchase flow handled by you, the +/// application developer. +/// Instances of this class are created and passed to your GADInAppPurchaseDelegate object when +/// users click a buy button. It is important to report the result of the purchase back to the SDK +/// in order to track metrics about the transaction. +@interface GADInAppPurchase : NSObject + +/// The in-app purchase product ID. +@property(nonatomic, readonly, copy) NSString *productID; + +/// The product quantity. +@property(nonatomic, readonly, assign) NSInteger quantity; + +/// The GADInAppPurchaseDelegate object must call this method after handling the in-app purchase for +/// both successful and unsuccessful purchase attempts. This method reports ad conversion and +/// purchase status information to Google. +- (void)reportPurchaseStatus:(GADInAppPurchaseStatus)purchaseStatus; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADInAppPurchaseDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADInAppPurchaseDelegate.h new file mode 100644 index 0000000..6dee244 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADInAppPurchaseDelegate.h @@ -0,0 +1,42 @@ +// +// GADInAppPurchaseDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2013 Google Inc. All rights reserved. +// + +#import + +@class GADDefaultInAppPurchase; +@class GADInAppPurchase; + +#pragma mark - Default Purchase Flow + +/// In-app purchase delegate protocol for default purchase handling. The delegate must deliver +/// the purchased item then call the GADDefaultInAppPurchase object's finishTransaction method. +@protocol GADDefaultInAppPurchaseDelegate + +/// Called when the user successfully paid for a purchase. You must first deliver the purchased +/// item to the user, then call defaultInAppPurchase's finishTransaction method. +- (void)userDidPayForPurchase:(GADDefaultInAppPurchase *)defaultInAppPurchase; + +@optional + +/// Called when the user clicks on the buy button of an in-app purchase ad. Return YES if the +/// default purchase flow should be started to purchase the item, otherwise return NO. If not +/// implemented, defaults to YES. +- (BOOL)shouldStartPurchaseForProductID:(NSString *)productID quantity:(NSInteger)quantity; + +@end + +#pragma mark - Custom Purchase Flow + +/// In-app purchase delegate protocol for custom purchase handling. The delegate must handle the +/// product purchase flow then call the GADInAppPurchase object's reportPurchaseStatus: method. +@protocol GADInAppPurchaseDelegate + +/// Called when the user clicks on the buy button of an in-app purchase ad. After the receiver +/// handles the purchase, it must call the GADInAppPurchase object's reportPurchaseStatus: method. +- (void)didReceiveInAppPurchase:(GADInAppPurchase *)purchase; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADInterstitial.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADInterstitial.h new file mode 100644 index 0000000..cb17be9 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADInterstitial.h @@ -0,0 +1,88 @@ +// +// GADInterstitial.h +// Google Mobile Ads SDK +// +// Copyright 2011 Google Inc. All rights reserved. +// + +#import + +#import +#import +#import +#import +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// An interstitial ad. This is a full-screen advertisement shown at natural transition points in +/// your application such as between game levels or news stories. +@interface GADInterstitial : NSObject + +/// Initializes an interstitial with an ad unit created on the AdMob website. Create a new ad unit +/// for every unique placement of an ad in your application. Set this to the ID assigned for this +/// placement. Ad units are important for targeting and statistics. +/// +/// Example AdMob ad unit ID: @"ca-app-pub-0123456789012345/0123456789" +- (instancetype)initWithAdUnitID:(NSString *)adUnitID NS_DESIGNATED_INITIALIZER; + +#pragma mark Pre-Request + +/// Required value passed in with initWithAdUnitID:. +@property(nonatomic, readonly, copy, GAD_NULLABLE) NSString *adUnitID; + +/// Optional delegate object that receives state change notifications from this GADInterstitalAd. +@property(nonatomic, weak, GAD_NULLABLE) id delegate; + +/// Optional delegate object that receives in-app purchase notifications from this ad. Required for +/// the custom in-app purchase flow, but ignored when using the default in-app purchase flow. +@property(nonatomic, weak, GAD_NULLABLE) id inAppPurchaseDelegate; + +#pragma mark Making an Ad Request + +/// Makes an interstitial ad request. Additional targeting options can be supplied with a request +/// object. Only one interstitial request is allowed at a time. +/// +/// This is best to do several seconds before the interstitial is needed to preload its content. +/// Then when transitioning between view controllers show the interstital with +/// presentFromViewController. +- (void)loadRequest:(GADRequest *GAD_NULLABLE_TYPE)request; + +#pragma mark Post-Request + +/// Returns YES if the interstitial is ready to be displayed. The delegate's +/// interstitialAdDidReceiveAd: will be called after this property switches from NO to YES. +@property(nonatomic, readonly, assign) BOOL isReady; + +/// Returns YES if this object has already been presented. Interstitial objects can only be used +/// once even with different requests. +@property(nonatomic, readonly, assign) BOOL hasBeenUsed; + +/// Returns the ad network class name that fetched the current ad. Returns nil while the latest ad +/// request is in progress or if the latest ad request failed. For both standard and mediated Google +/// AdMob ads, this property returns @"GADMAdapterGoogleAdMobAds". For ads fetched via mediation +/// custom events, this property returns @"GADMAdapterCustomEvents". +@property(nonatomic, readonly, copy, GAD_NULLABLE) NSString *adNetworkClassName; + +/// Presents the interstitial ad which takes over the entire screen until the user dismisses it. +/// This has no effect unless isReady returns YES and/or the delegate's interstitialDidReceiveAd: +/// has been received. +/// +/// Set rootViewController to the current view controller at the time this method is called. If your +/// application does not use view controllers pass in nil and your views will be removed from the +/// window to show the interstitial and restored when done. After the interstitial has been removed, +/// the delegate's interstitialDidDismissScreen: will be called. +- (void)presentFromRootViewController:(UIViewController *)rootViewController; + +#pragma mark Deprecated + +/// Deprecated intializer. Use initWithAdUnitID: instead. +- (instancetype)init GAD_DEPRECATED_MSG_ATTRIBUTE("Use initWithAdUnitID:."); + +/// Deprecated setter, use initWithAdUnitID: instead. +- (void)setAdUnitID:(NSString *GAD_NULLABLE_TYPE)adUnitID + GAD_DEPRECATED_MSG_ATTRIBUTE("Use initWithAdUnitID: instead of setting the ad unit ID."); + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADInterstitialDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADInterstitialDelegate.h new file mode 100644 index 0000000..3a2f05f --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADInterstitialDelegate.h @@ -0,0 +1,54 @@ +// +// GADInterstitialDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2011 Google Inc. All rights reserved. +// + +#import + +#import + +@class GADInterstitial; +@class GADRequestError; + +/// Delegate for receiving state change messages from a GADInterstitial such as interstitial ad +/// requests succeeding/failing. +@protocol GADInterstitialDelegate + +@optional + +#pragma mark Ad Request Lifecycle Notifications + +/// Called when an interstitial ad request succeeded. Show it at the next transition point in your +/// application such as when transitioning between view controllers. +- (void)interstitialDidReceiveAd:(GADInterstitial *)ad; + +/// Called when an interstitial ad request completed without an interstitial to +/// show. This is common since interstitials are shown sparingly to users. +- (void)interstitial:(GADInterstitial *)ad didFailToReceiveAdWithError:(GADRequestError *)error; + +#pragma mark Display-Time Lifecycle Notifications + +/// Called just before presenting an interstitial. After this method finishes the interstitial will +/// animate onto the screen. Use this opportunity to stop animations and save the state of your +/// application in case the user leaves while the interstitial is on screen (e.g. to visit the App +/// Store from a link on the interstitial). +- (void)interstitialWillPresentScreen:(GADInterstitial *)ad; + +/// Called when |ad| fails to present. +- (void)interstitialDidFailToPresentScreen:(GADInterstitial *)ad; + +/// Called before the interstitial is to be animated off the screen. +- (void)interstitialWillDismissScreen:(GADInterstitial *)ad; + +/// Called just after dismissing an interstitial and it has animated off the screen. +- (void)interstitialDidDismissScreen:(GADInterstitial *)ad; + +/// Called just before the application will background or terminate because the user clicked on an +/// ad that will launch another application (such as the App Store). The normal +/// UIApplicationDelegate methods, like applicationDidEnterBackground:, will be called immediately +/// before this. +- (void)interstitialWillLeaveApplication:(GADInterstitial *)ad; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediaView.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediaView.h new file mode 100644 index 0000000..813a626 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediaView.h @@ -0,0 +1,21 @@ +// +// GADMediaView.h +// Google Mobile Ads SDK +// +// Copyright 2016 Google Inc. All rights reserved. +// + +#import + +/// Displays native ad media assets. +/// +/// To display media assets in GADNativeAppInstallAdView instances, add a GADMediaView subview and +/// assign the native ad view's mediaView property. +/// +/// If the native ad doesn't contain a video and image loading is enabled, the GADMediaView displays +/// the native ad's |images| asset's first image. +/// +/// If the native ad doesn't contain a video and image loading is disabled, the GADMediaView object +/// is empty. +@interface GADMediaView : UIView +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeAd.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeAd.h new file mode 100644 index 0000000..868b640 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeAd.h @@ -0,0 +1,21 @@ +// +// GADMediatedNativeAd.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import +#import + +/// Base protocol for mediated native ads. +@protocol GADMediatedNativeAd + +/// Returns a delegate object that receives state change notifications. +- (id)mediatedNativeAdDelegate; + +/// Returns a dictionary of asset names and object pairs for assets that are not handled by +/// properties of the GADMediatedNativeAd subclass. +- (NSDictionary *)extraAssets; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeAdDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeAdDelegate.h new file mode 100644 index 0000000..e9aebe0 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeAdDelegate.h @@ -0,0 +1,41 @@ +// +// GADMediatedNativeAdDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import +#import + +@protocol GADMediatedNativeAd; + +/// GADMediatedNativeAdDelegate objects handle mediated native ad events. +@protocol GADMediatedNativeAdDelegate + +@optional + +/// Tells the delegate that the mediated native ad has rendered in |view|, a subview of +/// |viewController|. +- (void)mediatedNativeAd:(id)mediatedNativeAd + didRenderInView:(UIView *)view + viewController:(UIViewController *)viewController; + +/// Tells the delegate that the mediated native ad has recorded an impression. This method is called +/// only once per mediated native ad. +- (void)mediatedNativeAdDidRecordImpression:(id)mediatedNativeAd; + +/// Tells the delegate that the mediated native ad has recorded a user click on the asset named +/// |assetName|. Full screen actions should be presented from |viewController|. This method is +/// called only if -[GADMAdNetworkAdapter handlesUserClicks] returns NO. +- (void)mediatedNativeAd:(id)mediatedNativeAd + didRecordClickOnAssetWithName:(NSString *)assetName + view:(UIView *)view + viewController:(UIViewController *)viewController; + +/// Tells the delegate that the mediated native ad has untracked |view|. This method is called +/// when the mediatedNativeAd is no longer rendered in the provided view and the delegate should +/// stop tracking the view's impressions and clicks. +- (void)mediatedNativeAd:(id)mediatedNativeAd didUntrackView:(UIView *)view; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeAdNotificationSource.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeAdNotificationSource.h new file mode 100644 index 0000000..f2afa15 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeAdNotificationSource.h @@ -0,0 +1,39 @@ +// +// GADMediatedNativeAdNotificationSource.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import +#import + +/// Notifies the Google Mobile Ads SDK about the events performed by adapters. Adapters may perform +/// some action (e.g. opening an in app browser or open the iTunes store) when handling callbacks +/// from GADMediatedNativeAdDelegate. Adapters in such case should notify the Google Mobile Ads SDK +/// by calling the relevant methods from this class. +@interface GADMediatedNativeAdNotificationSource : NSObject + +/// Called by the adapter when it has registered an impression on the tracked view. Adapter should +/// only call this method if -[GADMAdNetworkAdapter handlesUserImpressions] returns YES. ++ (void)mediatedNativeAdDidRecordImpression:(id)mediatedNativeAd; + +/// Called by the adapter when it has registered a user click on the tracked view. Adapter should +/// only call this method if -[GADMAdNetworkAdapter handlesUserClicks] returns YES. ++ (void)mediatedNativeAdDidRecordClick:(id)mediatedNativeAd; + +/// Must be called by the adapter just before mediatedNativeAd has opened an in app modal screen. ++ (void)mediatedNativeAdWillPresentScreen:(id)mediatedNativeAd; + +/// Must be called by the adapter just before the in app modal screen opened by mediatedNativeAd is +/// dismissed. ++ (void)mediatedNativeAdWillDismissScreen:(id)mediatedNativeAd; + +/// Must be called by the adapter after the in app modal screen opened by mediatedNativeAd is +/// dismissed. ++ (void)mediatedNativeAdDidDismissScreen:(id)mediatedNativeAd; + +/// Must be called by the adapter just before mediatedNativeAd has left the application. ++ (void)mediatedNativeAdWillLeaveApplication:(id)mediatedNativeAd; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeAppInstallAd.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeAppInstallAd.h new file mode 100644 index 0000000..8269c87 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeAppInstallAd.h @@ -0,0 +1,40 @@ +// +// GADMediatedNativeAppInstallAd.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import +#import +#import + +/// Provides methods used for constructing native app install ads. The adapter must return an object +/// conforming to this protocol for native app install ad requests. +@protocol GADMediatedNativeAppInstallAd + +/// App title. +- (NSString *)headline; + +/// Array of GADNativeAdImage objects related to the advertised application. +- (NSArray *)images; + +/// App description. +- (NSString *)body; + +/// Application icon. +- (GADNativeAdImage *)icon; + +/// Text that encourages user to take some action with the ad. For example "Install". +- (NSString *)callToAction; + +/// App store rating (0 to 5). +- (NSDecimalNumber *)starRating; + +/// The app store name. For example, "App Store". +- (NSString *)store; + +/// String representation of the app's price. +- (NSString *)price; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeContentAd.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeContentAd.h new file mode 100644 index 0000000..d560063 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMediatedNativeContentAd.h @@ -0,0 +1,33 @@ +// +// GADMediatedNativeContentAd.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import +#import +#import + +/// Provides methods used for constructing native content ads. +@protocol GADMediatedNativeContentAd + +/// Primary text headline. +- (NSString *)headline; + +/// Secondary text. +- (NSString *)body; + +/// List of large images. Each object is an instance of GADNativeAdImage. +- (NSArray *)images; + +/// Small logo image. +- (GADNativeAdImage *)logo; + +/// Text that encourages user to take some action with the ad. +- (NSString *)callToAction; + +/// Identifies the advertiser. For example, the advertiser’s name or visible URL. +- (NSString *)advertiser; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMobileAds.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMobileAds.h new file mode 100644 index 0000000..4d25e95 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADMobileAds.h @@ -0,0 +1,49 @@ +// +// GADMobileAds.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import + +/// Google Mobile Ads SDK settings. +@interface GADMobileAds : NSObject + +/// Returns the shared GADMobileAds instance. ++ (GADMobileAds *)sharedInstance; + +/// Configures the SDK using the settings associated with the given application ID. ++ (void)configureWithApplicationID:(NSString *)applicationID; + +/// Disables automated in app purchase (IAP) reporting. Must be called before any IAP transaction is +/// initiated. IAP reporting is used to track IAP ad conversions. Do not disable reporting if you +/// use IAP ads. ++ (void)disableAutomatedInAppPurchaseReporting; + +/// Disables automated SDK crash reporting. If not called, the SDK records the original exception +/// handler if available and registers a new exception handler. The new exception handler only +/// reports SDK related exceptions and calls the recorded original exception handler. ++ (void)disableSDKCrashReporting; + +/// The application's audio volume. Affects audio volumes of all ads relative to other audio output. +/// Valid ad volume values range from 0.0 (silent) to 1.0 (current device volume). Use this method +/// only if your application has its own volume controls (e.g., custom music or sound effect +/// volumes). Defaults to 1.0. +@property(nonatomic, assign) float applicationVolume; + +/// Indicates if the application's audio is muted. Affects initial mute state for all ads. Use this +/// method only if your application has its own volume controls (e.g., custom music or sound effect +/// muting). Defaults to NO. +@property(nonatomic, assign) BOOL applicationMuted; + +/// Returns YES if the current SDK version is at least |major|.|minor|.|patch|. This method can be +/// used by libraries that depend on a specific minimum version of the Google Mobile Ads SDK to warn +/// developers if they have an incompatible version. +/// +/// Available in Google Mobile Ads SDK 7.10 and onwards. Before calling this method check if the +/// GADMobileAds's shared instance responds to this method. Calling this method on a Google Mobile +/// Ads SDK lower than 7.10 can crash the app. +- (BOOL)isSDKVersionAtLeastMajor:(NSInteger)major minor:(NSInteger)minor patch:(NSInteger)patch; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAd.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAd.h new file mode 100644 index 0000000..b493721 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAd.h @@ -0,0 +1,30 @@ +// +// GADNativeAd.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import +#import + +@protocol GADNativeAdDelegate; + +/// Native ad base class. All native ad types are subclasses of this class. +@interface GADNativeAd : NSObject + +/// Optional delegate to receive state change notifications. +@property(nonatomic, weak) id delegate; + +/// Root view controller for handling ad actions. +@property(nonatomic, weak) UIViewController *rootViewController; + +/// Dictionary of assets which aren't processed by the receiver. +@property(nonatomic, readonly, copy) NSDictionary *extraAssets; + +/// The ad network class name that fetched the current ad. For both standard and mediated Google +/// AdMob ads, this method returns @"GADMAdapterGoogleAdMobAds". For ads fetched via mediation +/// custom events, this method returns @"GADMAdapterCustomEvents". +@property(nonatomic, readonly, copy) NSString *adNetworkClassName; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdDelegate.h new file mode 100644 index 0000000..fa39d85 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdDelegate.h @@ -0,0 +1,41 @@ +// +// GADNativeAdDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import + +@class GADNativeAd; + +/// Identifies native ad assets. +@protocol GADNativeAdDelegate + +@optional + +#pragma mark Click-Time Lifecycle Notifications + +/// Called just before presenting the user a full screen view, such as a browser, in response to +/// clicking on an ad. Use this opportunity to stop animations, time sensitive interactions, etc. +/// +/// Normally the user looks at the ad, dismisses it, and control returns to your application with +/// the nativeAdDidDismissScreen: message. However, if the user hits the Home button or clicks on an +/// App Store link, your application will end. The next method called will be the +/// applicationWillResignActive: of your UIApplicationDelegate object.Immediately after that, +/// nativeAdWillLeaveApplication: is called. +- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd; + +/// Called just before dismissing a full screen view. +- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd; + +/// Called just after dismissing a full screen view. Use this opportunity to restart anything you +/// may have stopped as part of nativeAdWillPresentScreen:. +- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd; + +/// Called just before the application will go to the background or terminate due to an ad action +/// that will launch another application (such as the App Store). The normal UIApplicationDelegate +/// methods, like applicationDidEnterBackground:, will be called immediately before this. +- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdImage+Mediation.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdImage+Mediation.h new file mode 100644 index 0000000..31043dd --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdImage+Mediation.h @@ -0,0 +1,19 @@ +// +// GADNativeAdImage+Mediation.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google. All rights reserved. +// + +#import "GADNativeAdImage.h" + +/// Provides additional GADNativeAdImage initializers. +@interface GADNativeAdImage (MediationAdditions) + +/// Initializes and returns a native ad image object with the provided image. +- (instancetype)initWithImage:(UIImage *)image; + +/// Initializes and returns a native ad image object with the provided image URL and image scale. +- (instancetype)initWithURL:(NSURL *)URL scale:(CGFloat)scale; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdImage.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdImage.h new file mode 100644 index 0000000..58da290 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdImage.h @@ -0,0 +1,23 @@ +// +// GADNativeAdImage.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import +#import + +/// Native ad image. +@interface GADNativeAdImage : NSObject + +/// The image. If image autoloading is disabled, this property will be nil. +@property(nonatomic, readonly, strong) UIImage *image; + +/// The image's URL. +@property(nonatomic, readonly, strong) NSURL *imageURL; + +/// The image's scale. +@property(nonatomic, readonly, assign) CGFloat scale; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdImageAdLoaderOptions.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdImageAdLoaderOptions.h new file mode 100644 index 0000000..8f1cbaa --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdImageAdLoaderOptions.h @@ -0,0 +1,36 @@ +// +// GADNativeAdImageAdLoaderOptions.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// Native ad image orientation preference. +typedef NS_ENUM(NSInteger, GADNativeAdImageAdLoaderOptionsOrientation) { + GADNativeAdImageAdLoaderOptionsOrientationAny, ///< No orientation preference. + GADNativeAdImageAdLoaderOptionsOrientationPortrait, ///< Prefer portrait images. + GADNativeAdImageAdLoaderOptionsOrientationLandscape ///< Prefer landscape images. +}; + +/// Ad loader options for native ad image settings. +@interface GADNativeAdImageAdLoaderOptions : GADAdLoaderOptions + +/// Indicates if image asset content should be loaded by the SDK. If set to YES, the SDK will not +/// load image asset content and native ad image URLs can be used to fetch content. Defaults to NO, +/// image assets are loaded by the SDK. +@property(nonatomic, assign) BOOL disableImageLoading; + +/// Indicates if multiple images should be loaded for each asset. Defaults to NO. +@property(nonatomic, assign) BOOL shouldRequestMultipleImages; + +/// Indicates preferred image orientation. Defaults to +/// GADNativeAdImageAdLoaderOptionsOrientationAny. +@property(nonatomic, assign) GADNativeAdImageAdLoaderOptionsOrientation preferredImageOrientation; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdViewAdOptions.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdViewAdOptions.h new file mode 100644 index 0000000..9baa144 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAdViewAdOptions.h @@ -0,0 +1,28 @@ +// +// GADNativeAdViewAdOptions.h +// Google Mobile Ads SDK +// +// Copyright 2016 Google Inc. All rights reserved. +// + +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// Position of the AdChoices icon in the containing ad. +typedef NS_ENUM(NSInteger, GADAdChoicesPosition) { + GADAdChoicesPositionTopRightCorner, ///< Top right corner. + GADAdChoicesPositionTopLeftCorner, ///< Top left corner. + GADAdChoicesPositionBottomRightCorner, ///< Bottom right corner. + GADAdChoicesPositionBottomLeftCorner ///< Bottom Left Corner. +}; + +/// Ad loader options for configuring the view of native ads. +@interface GADNativeAdViewAdOptions : GADAdLoaderOptions + +/// Indicates preferred location of AdChoices icon. Default is GADAdChoicesPositionTopRightCorner. +@property(nonatomic, assign) GADAdChoicesPosition preferredAdChoicesPosition; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAppInstallAd.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAppInstallAd.h new file mode 100644 index 0000000..42638fa --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeAppInstallAd.h @@ -0,0 +1,93 @@ +// +// GADNativeAppInstallAd.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import +#import + +#import +#import +#import +#import +#import +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// Native app install ad. To request this ad type, you need to pass +/// kGADAdLoaderAdTypeNativeAppInstall (see GADAdLoaderAdTypes.h) to the |adTypes| parameter in +/// GADAdLoader's initializer method. If you request this ad type, your delegate must conform to the +/// GADNativeAppInstallAdRequestDelegate protocol. +@interface GADNativeAppInstallAd : GADNativeAd + +#pragma mark - Must be displayed + +/// App title. +@property(nonatomic, readonly, copy) NSString *headline; +/// Text that encourages user to take some action with the ad. For example "Install". +@property(nonatomic, readonly, copy) NSString *callToAction; +/// Application icon. +@property(nonatomic, readonly, strong) GADNativeAdImage *icon; + +#pragma mark - Recommended to display + +/// App description. +@property(nonatomic, readonly, copy, GAD_NULLABLE) NSString *body; +/// The app store name. For example, "App Store". +@property(nonatomic, readonly, copy, GAD_NULLABLE) NSString *store; +/// String representation of the app's price. +@property(nonatomic, readonly, copy, GAD_NULLABLE) NSString *price; +/// Array of GADNativeAdImage objects related to the advertised application. +@property(nonatomic, readonly, strong, GAD_NULLABLE) NSArray *images; +/// App store rating (0 to 5). +@property(nonatomic, readonly, copy, GAD_NULLABLE) NSDecimalNumber *starRating; +/// Video controller for controlling video playback in GADNativeAppInstallAdView's mediaView. +/// Returns nil if the ad doesn't contain a video asset. +@property(nonatomic, strong, readonly, GAD_NULLABLE) GADVideoController *videoController; + +@end + +#pragma mark - Protocol and constants + +/// The delegate of a GADAdLoader object implements this protocol to receive GADNativeAppInstallAd +/// ads. +@protocol GADNativeAppInstallAdLoaderDelegate +/// Called when a native app install ad is received. +- (void)adLoader:(GADAdLoader *)adLoader + didReceiveNativeAppInstallAd:(GADNativeAppInstallAd *)nativeAppInstallAd; +@end + +#pragma mark - Native App Install Ad View + +/// Base class for app install ad views. Your app install ad view must be a subclass of this class +/// and must call superclass methods for all overriden methods. +@interface GADNativeAppInstallAdView : UIView + +/// This property must point to the native app install ad object rendered by this ad view. +@property(nonatomic, strong, GAD_NULLABLE) GADNativeAppInstallAd *nativeAppInstallAd; + +/// Weak reference to your ad view's headline asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *headlineView; +/// Weak reference to your ad view's call to action asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *callToActionView; +/// Weak reference to your ad view's icon asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *iconView; +/// Weak reference to your ad view's body asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *bodyView; +/// Weak reference to your ad view's store asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *storeView; +/// Weak reference to your ad view's price asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *priceView; +/// Weak reference to your ad view's image asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *imageView; +/// Weak reference to your ad view's star rating asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *starRatingView; +/// Weak reference to your ad view's media asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet GADMediaView *mediaView; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeContentAd.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeContentAd.h new file mode 100644 index 0000000..1fa606e --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeContentAd.h @@ -0,0 +1,78 @@ +// +// GADNativeContentAd.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import +#import + +#import +#import +#import +#import + +GAD_ASSUME_NONNULL_BEGIN + +#pragma mark - Native Content Ad Assets + +/// Native content ad. To request this ad type, you need to pass kGADAdLoaderAdTypeNativeContent +/// (see GADAdLoaderAdTypes.h) to the |adTypes| parameter in GADAdLoader's initializer method. If +/// you request this ad type, your delegate must conform to the GADNativeContentAdRequestDelegate +/// protocol. +@interface GADNativeContentAd : GADNativeAd + +#pragma mark - Must be displayed + +/// Primary text headline. +@property(nonatomic, readonly, copy) NSString *headline; +/// Secondary text. +@property(nonatomic, readonly, copy) NSString *body; + +#pragma mark - Recommended to display + +/// Large images. +@property(nonatomic, readonly, copy, GAD_NULLABLE) NSArray *images; +/// Small logo image. +@property(nonatomic, readonly, strong, GAD_NULLABLE) GADNativeAdImage *logo; +/// Text that encourages user to take some action with the ad. +@property(nonatomic, readonly, copy, GAD_NULLABLE) NSString *callToAction; +/// Identifies the advertiser. For example, the advertiser’s name or visible URL. +@property(nonatomic, readonly, copy, GAD_NULLABLE) NSString *advertiser; +@end + +#pragma mark - Protocol and constants + +/// The delegate of a GADAdLoader object implements this protocol to receive GADNativeContentAd ads. +@protocol GADNativeContentAdLoaderDelegate +/// Called when native content is received. +- (void)adLoader:(GADAdLoader *)adLoader + didReceiveNativeContentAd:(GADNativeContentAd *)nativeContentAd; +@end + +#pragma mark - Native Content Ad View + +/// Base class for content ad views. Your content ad view must be a subclass of this class and must +/// call superclass methods for all overriden methods. +@interface GADNativeContentAdView : UIView + +/// This property must point to the native content ad object rendered by this ad view. +@property(nonatomic, strong, GAD_NULLABLE) GADNativeContentAd *nativeContentAd; + +/// Weak reference to your ad view's headline asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *headlineView; +/// Weak reference to your ad view's body asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *bodyView; +/// Weak reference to your ad view's image asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *imageView; +/// Weak reference to your ad view's logo asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *logoView; +/// Weak reference to your ad view's call to action asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *callToActionView; +/// Weak reference to your ad view's advertiser asset view. +@property(nonatomic, weak, GAD_NULLABLE) IBOutlet UIView *advertiserView; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeCustomTemplateAd.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeCustomTemplateAd.h new file mode 100644 index 0000000..83c2e10 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeCustomTemplateAd.h @@ -0,0 +1,61 @@ +// +// GADNativeCustomTemplateAd.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import +#import + +#import +#import +#import +#import + +/// Native custom template ad. To request this ad type, you need to pass +/// kGADAdLoaderAdTypeNativeCustomTemplate (see GADAdLoaderAdTypes.h) to the |adTypes| parameter in +/// GADAdLoader's initializer method. If you request this ad type, your delegate must conform to the +/// GADNativeCustomTemplateAdLoaderDelegate protocol. +@interface GADNativeCustomTemplateAd : GADNativeAd + +/// The ad's custom template ID. +@property(nonatomic, readonly) NSString *templateID; + +/// Array of available asset keys. +@property(nonatomic, readonly) NSArray *availableAssetKeys; + +/// Returns the native ad image corresponding to the specified key or nil if the image is not +/// available. +- (GADNativeAdImage *)imageForKey:(NSString *)key; + +/// Returns the string corresponding to the specified key or nil if the string is not available. +- (NSString *)stringForKey:(NSString *)key; + +/// Call when the user clicks on the ad. Provide the asset key that best matches the asset the user +/// interacted with. Provide |customClickHandler| only if this template is configured with a custom +/// click action, otherwise pass in nil. If a block is provided, the ad's built-in click actions are +/// ignored and |customClickHandler| is executed after recording the click. +- (void)performClickOnAssetWithKey:(NSString *)assetKey + customClickHandler:(dispatch_block_t)customClickHandler; + +/// Call when the ad is displayed on screen to the user. Can be called multiple times. Only the +/// first impression is recorded. +- (void)recordImpression; + +@end + +#pragma mark - Loading Protocol + +/// The delegate of a GADAdLoader object implements this protocol to receive +/// GADNativeCustomTemplateAd ads. +@protocol GADNativeCustomTemplateAdLoaderDelegate + +/// Called when requesting an ad. Asks the delegate for an array of custom template ID strings. +- (NSArray *)nativeCustomTemplateIDsForAdLoader:(GADAdLoader *)adLoader; + +/// Tells the delegate that a native custom template ad was received. +- (void)adLoader:(GADAdLoader *)adLoader + didReceiveNativeCustomTemplateAd:(GADNativeCustomTemplateAd *)nativeCustomTemplateAd; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeExpressAdView.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeExpressAdView.h new file mode 100644 index 0000000..b1f60e0 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeExpressAdView.h @@ -0,0 +1,92 @@ +// +// GADNativeExpressAdView.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import + +#import +#import +#import +#import +#import + +/// The view that displays native ads. A minimum implementation to get an ad from within a +/// UIViewController class is: +/// +///
+///   // Create and setup the ad view, specifying the size and origin at {0, 0}.
+///   GADNativeExpressAdView *adView =
+///       [[GADNativeExpressAdView alloc] initWithAdSize:kGADAdSizeBanner];
+///   adView.rootViewController = self;
+///   adView.adUnitID = @"ID created when registering your app";
+///   // Place the ad view onto the screen.
+///   [self.view addSubview:adView];
+///   // Request an ad without any additional targeting information.
+///   [adView loadRequest:[GADRequest request]];
+///   
+@interface GADNativeExpressAdView : UIView + +#pragma mark - Initialization + +/// Returns an initialized GADNativeExpressAdView instance set to |adSize| and positioned at +/// |origin| relative to its superview bounds. Returns nil if |adSize| is an invalid ad size. +- (instancetype)initWithAdSize:(GADAdSize)adSize origin:(CGPoint)origin; + +/// Returns an initialized GADNativeExpressAdView instance set to |adSize| and positioned at the top +/// left of its superview. Returns nil if |adSize| is an invalid ad size. +- (instancetype)initWithAdSize:(GADAdSize)adSize; + +/// Video controller for controlling video rendered by this native express ad view. +@property(nonatomic, strong, readonly) GADVideoController *videoController; + +#pragma mark - Pre-Request + +/// Required value created on the AdMob website. Create a new ad unit for every unique placement of +/// an ad in your application. Set this to the ID assigned for this placement. Ad units are +/// important for targeting and statistics. +/// +/// Example AdMob ad unit ID: @"ca-app-pub-0123456789012345/0123456789" +@property(nonatomic, copy) IBInspectable NSString *adUnitID; + +/// Required reference to the current root view controller. For example, the root view controller in +/// a tab-based application would be the UITabViewController. +@property(nonatomic, weak) IBOutlet UIViewController *rootViewController; + +/// Required to set this native ad view to a proper size. Never create your own GADAdSize directly. +/// Use one of the predefined standard ad sizes (such as kGADAdSizeBanner), or create one using the +/// GADAdSizeFromCGSize method. If you are not using mediation, changing the adSize after an ad has +/// been shown will cause a new request (for an ad of the new size) to be sent. If you are using +/// mediation, then a new request may not be sent. +@property(nonatomic, assign) GADAdSize adSize; + +/// Optional delegate object that receives state change notifications from this +/// GADNativeExpressAdView. Typically this is a UIViewController. +@property(nonatomic, weak) IBOutlet id delegate; + +/// A Boolean value that determines whether autoloading of ads in the receiver is enabled. If +/// enabled, you do not need to call the loadRequest: method to load ads. +@property(nonatomic, assign, getter=isAutoloadEnabled) IBInspectable BOOL autoloadEnabled; + +/// Sets options that configure ad loading. +/// +/// @param adOptions An array of GADAdLoaderOptions objects. The array is deep copied and option +/// objects cannot be modified after calling this method. +- (void)setAdOptions:(NSArray *)adOptions; + +#pragma mark - Making an Ad Request + +/// Makes an ad request. The request object supplies targeting information. +- (void)loadRequest:(GADRequest *)request; + +#pragma mark - Mediation + +/// The name of the ad network adapter class that fetched the current ad. Returns nil while the +/// latest ad request is in progress or if the latest ad request failed. For both standard and +/// mediated Google AdMob ads, this method returns @"GADMAdapterGoogleAdMobAds". For ads fetched via +/// mediation custom events, this method returns @"GADMAdapterCustomEvents". +@property(nonatomic, readonly, weak) NSString *adNetworkClassName; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeExpressAdViewDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeExpressAdViewDelegate.h new file mode 100644 index 0000000..13f5efc --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADNativeExpressAdViewDelegate.h @@ -0,0 +1,48 @@ +// +// GADNativeExpressAdViewDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import + +@class GADNativeExpressAdView; +@class GADRequestError; + +/// Delegate methods for receiving GADNativeExpressAdView state change messages such as ad request +/// status and ad click lifecycle. +@protocol GADNativeExpressAdViewDelegate + +@optional + +#pragma mark Ad Request Lifecycle Notifications + +/// Tells the delegate that the native express ad view successfully received an ad. The delegate may +/// want to add the native express ad view to the view hierarchy if it hasn't been added yet. +- (void)nativeExpressAdViewDidReceiveAd:(GADNativeExpressAdView *)nativeExpressAdView; + +/// Tells the delegate that an ad request failed. The failure is normally due to network +/// connectivity or ad availablility (i.e., no fill). +- (void)nativeExpressAdView:(GADNativeExpressAdView *)nativeExpressAdView + didFailToReceiveAdWithError:(GADRequestError *)error; + +#pragma mark Click-Time Lifecycle Notifications + +/// Tells the delegate that a full screen view will be presented in response to the user clicking on +/// an ad. The delegate may want to pause animations and time sensitive interactions. +- (void)nativeExpressAdViewWillPresentScreen:(GADNativeExpressAdView *)nativeExpressAdView; + +/// Tells the delegate that the full screen view will be dismissed. +- (void)nativeExpressAdViewWillDismissScreen:(GADNativeExpressAdView *)nativeExpressAdView; + +/// Tells the delegate that the full screen view has been dismissed. The delegate should restart +/// anything paused while handling adViewWillPresentScreen:. +- (void)nativeExpressAdViewDidDismissScreen:(GADNativeExpressAdView *)nativeExpressAdView; + +/// Tells the delegate that the user click will open another app, backgrounding the current +/// application. The standard UIApplicationDelegate methods, like applicationDidEnterBackground:, +/// are called immediately before this method is called. +- (void)nativeExpressAdViewWillLeaveApplication:(GADNativeExpressAdView *)nativeExpressAdView; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADRequest.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADRequest.h new file mode 100644 index 0000000..422ba55 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADRequest.h @@ -0,0 +1,127 @@ +// +// GADRequest.h +// Google Mobile Ads SDK +// +// Copyright 2011 Google Inc. All rights reserved. +// + +#import +#import + +#import +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// Add this constant to the testDevices property's array to receive test ads on the simulator. +GAD_EXTERN const id kGADSimulatorID; + +/// Genders to help deliver more relevant ads. +typedef NS_ENUM(NSInteger, GADGender) { + kGADGenderUnknown, ///< Unknown gender. + kGADGenderMale, ///< Male gender. + kGADGenderFemale ///< Female gender. +}; + +/// Specifies optional parameters for ad requests. +@interface GADRequest : NSObject + +/// Returns a default request. ++ (instancetype)request; + +#pragma mark Additional Parameters For Ad Networks + +/// Ad networks may have additional parameters they accept. To pass these parameters to them, create +/// the ad network extras object for that network, fill in the parameters, and register it here. The +/// ad network should have a header defining the interface for the 'extras' object to create. All +/// networks will have access to the basic settings you've set in this GADRequest (gender, birthday, +/// testing mode, etc.). If you register an extras object that is the same class as one you have +/// registered before, the previous extras will be overwritten. +- (void)registerAdNetworkExtras:(id)extras; + +/// Returns the network extras defined for an ad network. +- (id GAD_NULLABLE_TYPE)adNetworkExtrasFor:(Class)aClass; + +/// Removes the extras for an ad network. |aClass| is the class which represents that network's +/// extras type. +- (void)removeAdNetworkExtrasFor:(Class)aClass; + +#pragma mark Collecting SDK Information + +/// Returns the version of the SDK. ++ (NSString *)sdkVersion; + +#pragma mark Testing + +/// Test ads will be returned for devices with device IDs specified in this array. +@property(nonatomic, copy, GAD_NULLABLE) NSArray *testDevices; + +#pragma mark User Information + +/// Provide the user's gender to increase ad relevancy. +@property(nonatomic, assign) GADGender gender; + +/// Provide the user's birthday to increase ad relevancy. +@property(nonatomic, copy, GAD_NULLABLE) NSDate *birthday; + +/// The user's current location may be used to deliver more relevant ads. However do not use Core +/// Location just for advertising, make sure it is used for more beneficial reasons as well. It is +/// both a good idea and part of Apple's guidelines. +- (void)setLocationWithLatitude:(CGFloat)latitude + longitude:(CGFloat)longitude + accuracy:(CGFloat)accuracyInMeters; + +/// [Optional] This method allows you to specify whether you would like your app to be treated as +/// child-directed for purposes of the Children’s Online Privacy Protection Act (COPPA), +/// http:///business.ftc.gov/privacy-and-security/childrens-privacy. +/// +/// If you call this method with YES, you are indicating that your app should be treated as +/// child-directed for purposes of the Children’s Online Privacy Protection Act (COPPA). If you call +/// this method with NO, you are indicating that your app should not be treated as child-directed +/// for purposes of the Children’s Online Privacy Protection Act (COPPA). If you do not call this +/// method, ad requests will include no indication of how you would like your app treated with +/// respect to COPPA. +/// +/// By setting this method, you certify that this notification is accurate and you are authorized to +/// act on behalf of the owner of the app. You understand that abuse of this setting may result in +/// termination of your Google account. +/// +/// It may take some time for this designation to be fully implemented in applicable Google +/// services. This designation will only apply to ad requests for which you have set this method. +- (void)tagForChildDirectedTreatment:(BOOL)childDirectedTreatment; + +#pragma mark Contextual Information + +/// Array of keyword strings. Keywords are words or phrases describing the current user activity +/// such as @"Sports Scores" or @"Football". Set this property to nil to clear the keywords. +@property(nonatomic, copy, GAD_NULLABLE) NSArray *keywords; + +/// URL string for a webpage whose content matches the app content. This webpage content is used for +/// targeting purposes. +@property(nonatomic, copy, GAD_NULLABLE) NSString *contentURL; + +#pragma mark Request Agent Information + +/// String that identifies the ad request's origin. Third party libraries that reference the Mobile +/// Ads SDK should set this property to denote the platform from which the ad request originated. +/// For example, a third party ad network called "CoolAds network" that is mediating requests to the +/// Mobile Ads SDK should set this property as "CoolAds". +@property(nonatomic, copy, GAD_NULLABLE) NSString *requestAgent; + +#pragma mark Deprecated Methods + +/// Provide the user's birthday to increase ad relevancy. +- (void)setBirthdayWithMonth:(NSInteger)month + day:(NSInteger)day + year:(NSInteger)year + GAD_DEPRECATED_MSG_ATTRIBUTE(" use the birthday property."); + +/// When Core Location isn't available but the user's location is known supplying it here may +/// deliver more relevant ads. It can be any free-form text such as @"Champs-Elysees Paris" or +/// @"94041 US". +- (void)setLocationWithDescription:(NSString *GAD_NULLABLE_TYPE)locationDescription + GAD_DEPRECATED_MSG_ATTRIBUTE(" use setLocationWithLatitude:longitude:accuracy:."); + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADRequestError.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADRequestError.h new file mode 100644 index 0000000..31175e4 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADRequestError.h @@ -0,0 +1,66 @@ +// +// GADRequestError.h +// Google Mobile Ads SDK +// +// Copyright 2011 Google Inc. All rights reserved. +// + +#import + +#import + +@class GADRequest; + +/// Google AdMob Ads error domain. +GAD_EXTERN NSString *const kGADErrorDomain; + +/// NSError codes for GAD error domain. +typedef NS_ENUM(NSInteger, GADErrorCode) { + /// The ad request is invalid. The localizedFailureReason error description will have more + /// details. Typically this is because the ad did not have the ad unit ID or root view + /// controller set. + kGADErrorInvalidRequest, + + /// The ad request was successful, but no ad was returned. + kGADErrorNoFill, + + /// There was an error loading data from the network. + kGADErrorNetworkError, + + /// The ad server experienced a failure processing the request. + kGADErrorServerError, + + /// The current device's OS is below the minimum required version. + kGADErrorOSVersionTooLow, + + /// The request was unable to be loaded before being timed out. + kGADErrorTimeout, + + /// Will not send request because the interstitial object has already been used. + kGADErrorInterstitialAlreadyUsed, + + /// The mediation response was invalid. + kGADErrorMediationDataError, + + /// Error finding or creating a mediation ad network adapter. + kGADErrorMediationAdapterError, + + /// The mediation request was successful, but no ad was returned from any ad networks. + kGADErrorMediationNoFill, + + /// Attempting to pass an invalid ad size to an adapter. + kGADErrorMediationInvalidAdSize, + + /// Internal error. + kGADErrorInternalError, + + /// Invalid argument error. + kGADErrorInvalidArgument, + + /// Received invalid response. + kGADErrorReceivedInvalidResponse +}; + +/// Represents the error generated due to invalid request parameters. +@interface GADRequestError : NSError +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADRewardBasedVideoAd.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADRewardBasedVideoAd.h new file mode 100644 index 0000000..806f80b --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADRewardBasedVideoAd.h @@ -0,0 +1,47 @@ +// +// GADRewardBasedVideoAd.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import +#import + +#import +#import + +@protocol GADRewardBasedVideoAdDelegate; + +GAD_ASSUME_NONNULL_BEGIN + +/// The GADRewardBasedVideoAd class is used for requesting and presenting a reward based video ad. +/// This class isn't thread safe. +@interface GADRewardBasedVideoAd : NSObject + +/// Delegate for receiving video notifications. +@property(nonatomic, weak, GAD_NULLABLE) id delegate; + +/// Indicates if the receiver is ready to be presented full screen. +@property(nonatomic, readonly, getter=isReady) BOOL ready; + +/// The ad network class name that fetched the current ad. Returns nil while the latest ad request +/// is in progress or if the latest ad request failed. For both standard and mediated Google AdMob +/// ads, this property returns @"GADMAdapterGoogleAdMobAds". For ads fetched via mediation custom +/// events, this property returns the mediated custom event adapter. +@property(nonatomic, readonly, copy, GAD_NULLABLE) NSString *adNetworkClassName; + +/// Returns the shared GADRewardBasedVideoAd instance. ++ (GADRewardBasedVideoAd *)sharedInstance; + +/// Initiates the request to fetch the reward based video ad. The |request| object supplies ad +/// targeting information and must not be nil. The adUnitID is the ad unit id used for fetching an +/// ad and must not be nil. +- (void)loadRequest:(GADRequest *)request withAdUnitID:(NSString *)adUnitID; + +/// Presents the reward based video ad with the provided view controller. +- (void)presentFromRootViewController:(UIViewController *)viewController; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADRewardBasedVideoAdDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADRewardBasedVideoAdDelegate.h new file mode 100644 index 0000000..d30f3b4 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADRewardBasedVideoAdDelegate.h @@ -0,0 +1,49 @@ +// +// GADRewardBasedVideoAdDelegate.h +// Google Mobile Ads SDK +// +// Copyright 2015 Google Inc. All rights reserved. +// + +#import + +#import +#import +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// Delegate for receiving state change messages from a GADRewardBasedVideoAd such as ad requests +/// succeeding/failing. +@protocol GADRewardBasedVideoAdDelegate + +@required + +/// Tells the delegate that the reward based video ad has rewarded the user. +- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd + didRewardUserWithReward:(GADAdReward *)reward; + +@optional + +/// Tells the delegate that the reward based video ad failed to load. +- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd + didFailToLoadWithError:(GAD_NULLABLE NSError *)error; + +/// Tells the delegate that a reward based video ad was received. +- (void)rewardBasedVideoAdDidReceiveAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd; + +/// Tells the delegate that the reward based video ad opened. +- (void)rewardBasedVideoAdDidOpen:(GADRewardBasedVideoAd *)rewardBasedVideoAd; + +/// Tells the delegate that the reward based video ad started playing. +- (void)rewardBasedVideoAdDidStartPlaying:(GADRewardBasedVideoAd *)rewardBasedVideoAd; + +/// Tells the delegate that the reward based video ad closed. +- (void)rewardBasedVideoAdDidClose:(GADRewardBasedVideoAd *)rewardBasedVideoAd; + +/// Tells the delegate that the reward based video ad will leave the application. +- (void)rewardBasedVideoAdWillLeaveApplication:(GADRewardBasedVideoAd *)rewardBasedVideoAd; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADSearchBannerView.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADSearchBannerView.h new file mode 100644 index 0000000..f578d29 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADSearchBannerView.h @@ -0,0 +1,22 @@ +// +// GADSearchBannerView.h +// Google Mobile Ads SDK +// +// Copyright 2011 Google Inc. All rights reserved. +// + +#import +#import + +/// A view that displays search ads. +/// To show search ads: +/// 1) Create a GADSearchBannerView and add it to your view controller's view hierarchy. +/// 2) Create a GADSearchRequest ad request object to hold the search query and other search data. +/// 3) Call GADSearchBannerView's -loadRequest: method with the GADSearchRequest object. +@interface GADSearchBannerView : GADBannerView + +/// If the banner view is initialized with kGADAdSizeFluid and the corresponding request is created +/// with dynamic height parameters, this delegate will be called when the ad size changes. +@property(nonatomic, weak) IBOutlet id adSizeDelegate; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADSearchRequest.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADSearchRequest.h new file mode 100644 index 0000000..4907670 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADSearchRequest.h @@ -0,0 +1,72 @@ +// +// GADSearchRequest.h +// Google Mobile Ads SDK +// +// Copyright 2011 Google Inc. All rights reserved. +// + +#import +#import + +#import + +/// Search ad border types. +typedef NS_ENUM(NSUInteger, GADSearchBorderType) { + kGADSearchBorderTypeNone, ///< No border. + kGADSearchBorderTypeDashed, ///< Dashed line border. + kGADSearchBorderTypeDotted, ///< Dotted line border. + kGADSearchBorderTypeSolid ///< Solid line border. +}; + +/// Search ad call button color types. +typedef NS_ENUM(NSUInteger, GADSearchCallButtonColor) { + kGADSearchCallButtonLight, ///< Light button color. + kGADSearchCallButtonMedium, ///< Medium button color. + kGADSearchCallButtonDark ///< Dark button color. +}; + +/// Specifies parameters for search ads. +@interface GADSearchRequest : GADRequest + +/// The search ad query. +@property(nonatomic, copy) NSString *query; +/// The search ad background color. +@property(nonatomic, copy, readonly) UIColor *backgroundColor; +/// The search ad gradient "from" color. +@property(nonatomic, copy, readonly) UIColor *gradientFrom; +/// The search ad gradient "to" color. +@property(nonatomic, copy, readonly) UIColor *gradientTo; +/// The search ad header color. +@property(nonatomic, copy) UIColor *headerColor; +/// The search ad description text color. +@property(nonatomic, copy) UIColor *descriptionTextColor; +/// The search ad anchor text color. +@property(nonatomic, copy) UIColor *anchorTextColor; +/// The search ad text font family. +@property(nonatomic, copy) NSString *fontFamily; +/// The search ad header text size. +@property(nonatomic, assign) NSUInteger headerTextSize; +/// The search ad border color. +@property(nonatomic, copy) UIColor *borderColor; +/// The search ad border type. +@property(nonatomic, assign) GADSearchBorderType borderType; +/// The search ad border thickness. +@property(nonatomic, assign) NSUInteger borderThickness; +/// The search ad custom channels. +@property(nonatomic, copy) NSString *customChannels; +/// The search ad call button color. +@property(nonatomic, assign) GADSearchCallButtonColor callButtonColor; + +/// A solid background color for rendering the ad. The background of the ad +/// can either be a solid color, or a gradient, which can be specified through +/// setBackgroundGradientFrom:toColor: method. If both solid and gradient +/// background is requested, only the latter is considered. +- (void)setBackgroundSolid:(UIColor *)color; + +/// A linear gradient background color for rendering the ad. The background of +/// the ad can either be a linear gradient, or a solid color, which can be +/// specified through setBackgroundSolid method. If both solid and gradient +/// background is requested, only the latter is considered. +- (void)setBackgroundGradientFrom:(UIColor *)from toColor:(UIColor *)toColor; + +@end diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADVideoController.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADVideoController.h new file mode 100644 index 0000000..a3d3e66 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADVideoController.h @@ -0,0 +1,35 @@ +// +// GADVideoController.h +// Google Mobile Ads SDK +// +// Copyright (c) 2016 Google Inc. All rights reserved. +// + +#import +#import + +#import + +GAD_ASSUME_NONNULL_BEGIN + +@protocol GADVideoControllerDelegate; + +/// The video controller class provides a way to get the video metadata and also manages video +/// content of the ad rendered by the Google Mobile Ads SDK. You don't need to create an instance of +/// this class. When the ad rendered by the Google Mobile Ads SDK loads video content, you may be +/// able to get an instance of this class from the rendered ad object. Currently only native express +/// ad view class exposes video controller. +@interface GADVideoController : NSObject + +/// Delegate for receiving video notifications. +@property(nonatomic, weak, GAD_NULLABLE) id delegate; + +/// Returns a Boolean indicating if the receiver has video content. +- (BOOL)hasVideoContent; + +/// Returns the video's aspect ratio (width/height) or 0 if no video is present. +- (double)aspectRatio; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADVideoControllerDelegate.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADVideoControllerDelegate.h new file mode 100644 index 0000000..cd5c048 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADVideoControllerDelegate.h @@ -0,0 +1,25 @@ +// +// GADVideoControllerDelegate.h +// Google Mobile Ads SDK +// +// Copyright (c) 2016 Google Inc. All rights reserved. +// + +#import +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// The GADVideoControllerDelegate protocol defines methods that are called by the video controller +/// object in response to the video events that occured throught the lifetime of the video rendered +/// by an ad. +@protocol GADVideoControllerDelegate + +@optional + +/// Tells the delegate that the video controller's video playback has ended. +- (void)videoControllerDidEndVideoPlayback:(GADVideoController *)videoController; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADVideoOptions.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADVideoOptions.h new file mode 100644 index 0000000..2f75a37 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GADVideoOptions.h @@ -0,0 +1,21 @@ +// +// GADVideoOptions.h +// Google Mobile Ads SDK +// +// Copyright 2016 Google Inc. All rights reserved. +// + +#import +#import + +GAD_ASSUME_NONNULL_BEGIN + +/// Video ad options. +@interface GADVideoOptions : GADAdLoaderOptions + +/// Indicates if videos should start muted. +@property(nonatomic, assign) BOOL startMuted; + +@end + +GAD_ASSUME_NONNULL_END diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GoogleMobileAds.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GoogleMobileAds.h new file mode 100644 index 0000000..3ccf686 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GoogleMobileAds.h @@ -0,0 +1,88 @@ +// +// GoogleMobileAds.h +// Google Mobile Ads SDK +// +// Copyright 2014 Google Inc. All rights reserved. + +#import +#import + +#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_6_0 +#error The Google Mobile Ads SDK requires a deployment target of iOS 6.0 or later. +#endif + +/// Project version string for GoogleMobileAds. +FOUNDATION_EXPORT const unsigned char GoogleMobileAdsVersionString[]; + +// Header files. +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import + +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import + +#import +#import +#import diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GoogleMobileAdsDefines.h b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GoogleMobileAdsDefines.h new file mode 100644 index 0000000..7d8bf87 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/A/Headers/GoogleMobileAdsDefines.h @@ -0,0 +1,50 @@ +// +// GoogleMobileAdsDefines.h +// Google Mobile Ads SDK +// +// Copyright (c) 2015 Google Inc. All rights reserved. +// + +#import + +#if defined(__cplusplus) +#define GAD_EXTERN extern "C" __attribute__((visibility("default"))) +#else +#define GAD_EXTERN extern __attribute__((visibility("default"))) +#endif // defined(__cplusplus) + +#if defined(__has_feature) && defined(__has_attribute) +#if __has_feature(attribute_GAD_DEPRECATED_with_message) +#define GAD_DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s))) +#elif __has_attribute(deprecated) +#define GAD_DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated)) +#else +#define GAD_DEPRECATED_MSG_ATTRIBUTE(s) +#endif // __has_feature(attribute_GAD_DEPRECATED_with_message) +#if __has_attribute(deprecated) +#define GAD_DEPRECATED_ATTRIBUTE __attribute__((deprecated)) +#else +#define GAD_DEPRECATED_ATTRIBUTE +#endif // __has_attribute(deprecated) +#else +#define GAD_DEPRECATED_ATTRIBUTE +#define GAD_DEPRECATED_MSG_ATTRIBUTE(s) +#endif // defined(__has_feature) && defined(__has_attribute) + +#ifndef IBInspectable +#define IBInspectable +#endif + +#if __has_feature(nullability) // Available starting in Xcode 6.3. +#define GAD_NULLABLE_TYPE __nullable +#define GAD_NONNULL_TYPE __nonnull +#define GAD_NULLABLE nullable +#define GAD_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN +#define GAD_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END +#else +#define GAD_NULLABLE_TYPE +#define GAD_NONNULL_TYPE +#define GAD_NULLABLE +#define GAD_ASSUME_NONNULL_BEGIN +#define GAD_ASSUME_NONNULL_END +#endif // __has_feature(nullability) diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/Current b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/Current new file mode 120000 index 0000000..8c7e5a6 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAds.framework/Versions/Current @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/MDBSocials/Pods/Google-Mobile-Ads-SDK/README.txt b/MDBSocials/Pods/Google-Mobile-Ads-SDK/README.txt new file mode 100644 index 0000000..358a374 --- /dev/null +++ b/MDBSocials/Pods/Google-Mobile-Ads-SDK/README.txt @@ -0,0 +1,12 @@ +============================= +Google Mobile Ads SDK for iOS +============================= + +This is the Google Mobile Ads SDK for iOS. + +Requirements: +- Xcode 7.0 or later. +- iOS deployment target of iOS 6.0 or later. + +The latest documentation and code samples are available at: +https://firebase.google.com/docs/admob/ios/quick-start diff --git a/MDBSocials/Pods/GoogleIPhoneUtilities/Frameworks/GoogleIPhoneUtilities.framework/GoogleIPhoneUtilities b/MDBSocials/Pods/GoogleIPhoneUtilities/Frameworks/GoogleIPhoneUtilities.framework/GoogleIPhoneUtilities new file mode 100644 index 0000000..7ab2cf2 Binary files /dev/null and b/MDBSocials/Pods/GoogleIPhoneUtilities/Frameworks/GoogleIPhoneUtilities.framework/GoogleIPhoneUtilities differ diff --git a/MDBSocials/Pods/GoogleInterchangeUtilities/Frameworks/frameworks/GoogleInterchangeUtilities.framework/GoogleInterchangeUtilities b/MDBSocials/Pods/GoogleInterchangeUtilities/Frameworks/frameworks/GoogleInterchangeUtilities.framework/GoogleInterchangeUtilities new file mode 100755 index 0000000..de40424 Binary files /dev/null and b/MDBSocials/Pods/GoogleInterchangeUtilities/Frameworks/frameworks/GoogleInterchangeUtilities.framework/GoogleInterchangeUtilities differ diff --git a/MDBSocials/Pods/GoogleNetworkingUtilities/Frameworks/frameworks/GoogleNetworkingUtilities.framework/GoogleNetworkingUtilities b/MDBSocials/Pods/GoogleNetworkingUtilities/Frameworks/frameworks/GoogleNetworkingUtilities.framework/GoogleNetworkingUtilities new file mode 100755 index 0000000..11e4ac7 Binary files /dev/null and b/MDBSocials/Pods/GoogleNetworkingUtilities/Frameworks/frameworks/GoogleNetworkingUtilities.framework/GoogleNetworkingUtilities differ diff --git a/MDBSocials/Pods/GoogleSymbolUtilities/Frameworks/frameworks/GoogleSymbolUtilities.framework/GoogleSymbolUtilities b/MDBSocials/Pods/GoogleSymbolUtilities/Frameworks/frameworks/GoogleSymbolUtilities.framework/GoogleSymbolUtilities new file mode 100755 index 0000000..408a002 Binary files /dev/null and b/MDBSocials/Pods/GoogleSymbolUtilities/Frameworks/frameworks/GoogleSymbolUtilities.framework/GoogleSymbolUtilities differ diff --git a/MDBSocials/Pods/GoogleUtilities/Frameworks/frameworks/GoogleUtilities.framework/GoogleUtilities b/MDBSocials/Pods/GoogleUtilities/Frameworks/frameworks/GoogleUtilities.framework/GoogleUtilities new file mode 100755 index 0000000..0fd17b6 Binary files /dev/null and b/MDBSocials/Pods/GoogleUtilities/Frameworks/frameworks/GoogleUtilities.framework/GoogleUtilities differ diff --git a/MDBSocials/Pods/Headers/Private/Firebase/Firebase.h b/MDBSocials/Pods/Headers/Private/Firebase/Firebase.h new file mode 120000 index 0000000..6d62033 --- /dev/null +++ b/MDBSocials/Pods/Headers/Private/Firebase/Firebase.h @@ -0,0 +1 @@ +../../../Firebase/Core/Sources/Firebase.h \ No newline at end of file diff --git a/MDBSocials/Pods/Headers/Private/FirebaseInstanceID/FIRInstanceID.h b/MDBSocials/Pods/Headers/Private/FirebaseInstanceID/FIRInstanceID.h new file mode 120000 index 0000000..0aaa73c --- /dev/null +++ b/MDBSocials/Pods/Headers/Private/FirebaseInstanceID/FIRInstanceID.h @@ -0,0 +1 @@ +../../../FirebaseInstanceID/Sources/FIRInstanceID.h \ No newline at end of file diff --git a/MDBSocials/Pods/Headers/Private/FirebaseMessaging/FIRMessaging.h b/MDBSocials/Pods/Headers/Private/FirebaseMessaging/FIRMessaging.h new file mode 120000 index 0000000..54f43c5 --- /dev/null +++ b/MDBSocials/Pods/Headers/Private/FirebaseMessaging/FIRMessaging.h @@ -0,0 +1 @@ +../../../FirebaseMessaging/Sources/FIRMessaging.h \ No newline at end of file diff --git a/MDBSocials/Pods/Headers/Public/Firebase/Firebase.h b/MDBSocials/Pods/Headers/Public/Firebase/Firebase.h new file mode 120000 index 0000000..6d62033 --- /dev/null +++ b/MDBSocials/Pods/Headers/Public/Firebase/Firebase.h @@ -0,0 +1 @@ +../../../Firebase/Core/Sources/Firebase.h \ No newline at end of file diff --git a/MDBSocials/Pods/Headers/Public/FirebaseInstanceID/FIRInstanceID.h b/MDBSocials/Pods/Headers/Public/FirebaseInstanceID/FIRInstanceID.h new file mode 120000 index 0000000..0aaa73c --- /dev/null +++ b/MDBSocials/Pods/Headers/Public/FirebaseInstanceID/FIRInstanceID.h @@ -0,0 +1 @@ +../../../FirebaseInstanceID/Sources/FIRInstanceID.h \ No newline at end of file diff --git a/MDBSocials/Pods/Headers/Public/FirebaseMessaging/FIRMessaging.h b/MDBSocials/Pods/Headers/Public/FirebaseMessaging/FIRMessaging.h new file mode 120000 index 0000000..54f43c5 --- /dev/null +++ b/MDBSocials/Pods/Headers/Public/FirebaseMessaging/FIRMessaging.h @@ -0,0 +1 @@ +../../../FirebaseMessaging/Sources/FIRMessaging.h \ No newline at end of file diff --git a/MDBSocials/Pods/Manifest.lock b/MDBSocials/Pods/Manifest.lock new file mode 100644 index 0000000..bf609b9 --- /dev/null +++ b/MDBSocials/Pods/Manifest.lock @@ -0,0 +1,118 @@ +PODS: + - Firebase/AdMob (3.7.1): + - Firebase/Core + - Google-Mobile-Ads-SDK (= 7.12.1) + - Firebase/AppIndexing (3.7.1): + - Firebase/Core + - FirebaseAppIndexing (= 1.2.0) + - Firebase/Auth (3.7.1): + - Firebase/Core + - FirebaseAuth (= 3.0.5) + - Firebase/Core (3.7.1): + - FirebaseAnalytics (= 3.4.4) + - FirebaseCore (= 3.4.3) + - Firebase/Crash (3.7.1): + - Firebase/Core + - FirebaseCrash (= 1.0.7) + - Firebase/Database (3.7.1): + - Firebase/Core + - FirebaseDatabase (= 3.0.3) + - Firebase/DynamicLinks (3.7.1): + - Firebase/Core + - FirebaseDynamicLinks (= 1.3.0) + - Firebase/Messaging (3.7.1): + - Firebase/Core + - FirebaseMessaging (= 1.2.0) + - Firebase/RemoteConfig (3.7.1): + - Firebase/Core + - FirebaseRemoteConfig (= 1.3.0) + - Firebase/Storage (3.7.1): + - Firebase/Core + - FirebaseStorage (= 1.0.3) + - FirebaseAnalytics (3.4.4): + - FirebaseCore (~> 3.4) + - FirebaseInstanceID (~> 1.0) + - GoogleInterchangeUtilities (~> 1.2) + - GoogleSymbolUtilities (~> 1.1) + - FirebaseAppIndexing (1.2.0) + - FirebaseAuth (3.0.5): + - FirebaseAnalytics (~> 3.3) + - GoogleNetworkingUtilities (~> 1.2) + - GoogleUtilities (~> 1.2) + - FirebaseCore (3.4.3): + - GoogleInterchangeUtilities (~> 1.2) + - GoogleUtilities (~> 1.2) + - FirebaseCrash (1.0.7): + - FirebaseAnalytics (~> 3.2) + - FirebaseInstanceID (~> 1.0) + - GoogleInterchangeUtilities (~> 1.2) + - GoogleSymbolUtilities (~> 1.1) + - GoogleUtilities (~> 1.2) + - FirebaseDatabase (3.0.3): + - FirebaseAnalytics (~> 3.3) + - FirebaseDynamicLinks (1.3.0): + - FirebaseAnalytics (~> 3.4) + - FirebaseInstanceID (1.0.8) + - FirebaseMessaging (1.2.0): + - FirebaseAnalytics (~> 3.3) + - FirebaseInstanceID (~> 1.0) + - GoogleInterchangeUtilities (~> 1.2) + - GoogleIPhoneUtilities (~> 1.2) + - GoogleSymbolUtilities (~> 1.1) + - FirebaseRemoteConfig (1.3.0): + - FirebaseAnalytics (~> 3.3) + - FirebaseInstanceID (~> 1.0) + - GoogleInterchangeUtilities (~> 1.2) + - GoogleIPhoneUtilities (~> 1.2) + - GoogleSymbolUtilities (~> 1.1) + - GoogleUtilities (~> 1.2) + - FirebaseStorage (1.0.3): + - FirebaseAnalytics (~> 3.3) + - GoogleNetworkingUtilities (~> 1.2) + - Google-Mobile-Ads-SDK (7.12.1) + - GoogleInterchangeUtilities (1.2.2): + - GoogleSymbolUtilities (~> 1.1) + - GoogleIPhoneUtilities (1.2.1): + - GoogleSymbolUtilities (~> 1.0) + - GoogleUtilities (~> 1.0) + - GoogleNetworkingUtilities (1.2.2): + - GoogleSymbolUtilities (~> 1.1) + - GoogleSymbolUtilities (1.1.2) + - GoogleUtilities (1.3.2): + - GoogleSymbolUtilities (~> 1.1) + +DEPENDENCIES: + - Firebase/AdMob + - Firebase/AppIndexing + - Firebase/Auth + - Firebase/Core + - Firebase/Crash + - Firebase/Database + - Firebase/DynamicLinks + - Firebase/Messaging + - Firebase/RemoteConfig + - Firebase/Storage + +SPEC CHECKSUMS: + Firebase: be473484f0d515e72ffd04acf22f981773c23e58 + FirebaseAnalytics: 0533a00b681e08fd0b2cd0444b7ddf0ef9fd7a1a + FirebaseAppIndexing: d0fa52ce0ad13f4b5b2f09e4b47fb0dc2213f4e9 + FirebaseAuth: 75a062bbf2d3c97d1e6e55bbc110e13a6853e25d + FirebaseCore: 5a885548bbc5f0c410b04f8e9ac9d73ff1221907 + FirebaseCrash: 2efeb3715b76ac843b841529ce413efb67e5fd4d + FirebaseDatabase: 750a4a0fe18ef114318876fd654b2d9c671e0992 + FirebaseDynamicLinks: 860aa20fca5409c8278909de566c09720c51e572 + FirebaseInstanceID: ba1e640935235e5fac39dfa816fe7660e72e1a8a + FirebaseMessaging: 789d23fd796594dfb55dcf36cd325541df887c22 + FirebaseRemoteConfig: 981f45d4278281cfefa8f48a6f5c566f2c95ac5a + FirebaseStorage: 3992817bf405f5c1a4f8349678d22724cd0ef509 + Google-Mobile-Ads-SDK: 542eb24c1ce6c8fd5084ee9572fd9dcd2d06065a + GoogleInterchangeUtilities: d5bc4d88d5b661ab72f9d70c58d02ca8c27ad1f7 + GoogleIPhoneUtilities: 63f25e93a3ddcb66884d182aab3a660d98f1479b + GoogleNetworkingUtilities: 3edd3a8161347494f2da60ea0deddc8a472d94cb + GoogleSymbolUtilities: 631ee17048aa5e9ab133470d768ea997a5ef9b96 + GoogleUtilities: 8bbc733218aad26306f9d4a253823986110e3358 + +PODFILE CHECKSUM: 9ebe0a33d0e492114208487e441249eb8cdfd127 + +COCOAPODS: 1.1.0.rc.3 diff --git a/MDBSocials/Pods/Pods.xcodeproj/project.pbxproj b/MDBSocials/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ecaa879 --- /dev/null +++ b/MDBSocials/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,686 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0FC24844DE2B04039D40DC093FFF2FF8 /* Pods-MDBSocials-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A2AF1178EB954357E23FD0986B5DF25B /* Pods-MDBSocials-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 19624C07F06D37715BBFD45E33757A39 /* Pods-MDBSocials-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 101A80B2BDF78E27D97C45B4B10B862B /* Pods-MDBSocials-dummy.m */; }; + 5610C7F8247B5C233AAC1D7D2EA29DCB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0B8215E415556D95D6573ADDC913B599 /* Pods-MDBSocials.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MDBSocials.release.xcconfig"; sourceTree = ""; }; + 101A80B2BDF78E27D97C45B4B10B862B /* Pods-MDBSocials-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MDBSocials-dummy.m"; sourceTree = ""; }; + 168C2301B6D19D1E9F5157096B4AEB69 /* FirebaseAnalytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseAnalytics.framework; path = Frameworks/frameworks/FirebaseAnalytics.framework; sourceTree = ""; }; + 1FAA600A5C9C5529BA7595ABD93F83FB /* FirebaseDatabase.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseDatabase.framework; path = Frameworks/FirebaseDatabase.framework; sourceTree = ""; }; + 202532DA246377B6AC7E95BDB43D98AE /* Firebase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Firebase.h; path = Core/Sources/Firebase.h; sourceTree = ""; }; + 24120D5BF35BB9B6EB999D8624611696 /* Pods-MDBSocials-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-MDBSocials-resources.sh"; sourceTree = ""; }; + 2E109444146D3B06FFA12AD4AF94E66A /* GoogleIPhoneUtilities.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleIPhoneUtilities.framework; path = Frameworks/GoogleIPhoneUtilities.framework; sourceTree = ""; }; + 2E2B714D24FB615BD07051E3028557E0 /* FirebaseAppIndexing.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseAppIndexing.framework; path = Frameworks/frameworks/FirebaseAppIndexing.framework; sourceTree = ""; }; + 31CD2F65BBA0CA78598D194627F1F33C /* Pods-MDBSocials.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-MDBSocials.modulemap"; sourceTree = ""; }; + 3D0E828B0C17FC93D5B654A826BC63B0 /* Pods-MDBSocials-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MDBSocials-acknowledgements.markdown"; sourceTree = ""; }; + 45B51169493FECE27D3F1E219AA4B01D /* GoogleMobileAds.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleMobileAds.framework; path = Frameworks/GoogleMobileAds.framework; sourceTree = ""; }; + 4E8290B363D6FBAE7F2F45D6568A1110 /* FirebaseCrash.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseCrash.framework; path = Frameworks/frameworks/FirebaseCrash.framework; sourceTree = ""; }; + 5948893063DE532F37F6327C4BD1A7BB /* Pods-MDBSocials-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-MDBSocials-frameworks.sh"; sourceTree = ""; }; + 758A75356E5DBCA2FE8E306141575509 /* FirebaseDynamicLinks.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseDynamicLinks.framework; path = Frameworks/frameworks/FirebaseDynamicLinks.framework; sourceTree = ""; }; + 7957350AA83D2913466F9211475C959F /* FirebaseCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseCore.framework; path = Frameworks/frameworks/FirebaseCore.framework; sourceTree = ""; }; + 7DC6A7D8DCF9B4FCE9F4B07E8E2F3087 /* FirebaseMessaging.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseMessaging.framework; path = Frameworks/frameworks/FirebaseMessaging.framework; sourceTree = ""; }; + 876A5715174383A3B889A7E1B455AC00 /* GoogleSymbolUtilities.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleSymbolUtilities.framework; path = Frameworks/frameworks/GoogleSymbolUtilities.framework; sourceTree = ""; }; + 8DF806FE1EEA74A05932AADC47A183E7 /* FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID.h; path = Sources/FIRInstanceID.h; sourceTree = ""; }; + 9111BAE4C82D086ED1547278FCD7C2A7 /* FirebaseRemoteConfig.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseRemoteConfig.framework; path = Frameworks/frameworks/FirebaseRemoteConfig.framework; sourceTree = ""; }; + 9138B082E084824777716E30278AD3A7 /* FirebaseInstanceID.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseInstanceID.framework; path = Frameworks/frameworks/FirebaseInstanceID.framework; sourceTree = ""; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + A2AF1178EB954357E23FD0986B5DF25B /* Pods-MDBSocials-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-MDBSocials-umbrella.h"; sourceTree = ""; }; + A812A973EE4233809DE0A92541191AF1 /* FIRMessaging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRMessaging.h; path = Sources/FIRMessaging.h; sourceTree = ""; }; + BAF876301B5B1D265CE63CE84428C729 /* GoogleUtilities.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleUtilities.framework; path = Frameworks/frameworks/GoogleUtilities.framework; sourceTree = ""; }; + C0A16C781C6FCFAC9A598487E4145328 /* GoogleNetworkingUtilities.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleNetworkingUtilities.framework; path = Frameworks/frameworks/GoogleNetworkingUtilities.framework; sourceTree = ""; }; + C0BD6D7C9FBB5F7ED871C5AA2F91C52B /* FirebaseStorage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseStorage.framework; path = Frameworks/frameworks/FirebaseStorage.framework; sourceTree = ""; }; + CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + D1D849F9B27F1F180DB48E2ED34BD843 /* Pods_MDBSocials.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MDBSocials.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E10D7D2969961D5977D55E99094389D2 /* Pods-MDBSocials-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MDBSocials-acknowledgements.plist"; sourceTree = ""; }; + E79217818298CD6146F6212AC8C1AB39 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EB2D7F489F4B072C1F7D1ED77775506C /* FirebaseAuth.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseAuth.framework; path = Frameworks/frameworks/FirebaseAuth.framework; sourceTree = ""; }; + F04AFD4A0C1F9BEDC04A25FEA2BE5A7F /* GoogleInterchangeUtilities.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleInterchangeUtilities.framework; path = Frameworks/frameworks/GoogleInterchangeUtilities.framework; sourceTree = ""; }; + FD70039E28880D1D283ED8062921655B /* Pods-MDBSocials.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MDBSocials.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 058E8CA9115A53DE8E0AD68BE0C00358 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5610C7F8247B5C233AAC1D7D2EA29DCB /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0854365250E20C26631C200207CC45D3 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C0A16C781C6FCFAC9A598487E4145328 /* GoogleNetworkingUtilities.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 116E27440CC8EDDEE6C16C68F9B982C9 /* FirebaseStorage */ = { + isa = PBXGroup; + children = ( + 652E7E4E6D55FCA989382F19C06B3E18 /* Frameworks */, + ); + path = FirebaseStorage; + sourceTree = ""; + }; + 14497C222E85506E010744589A79BFBE /* FirebaseMessaging */ = { + isa = PBXGroup; + children = ( + A812A973EE4233809DE0A92541191AF1 /* FIRMessaging.h */, + C4FF55C4E7EC7F6650A9A218E0BC1C38 /* Frameworks */, + ); + path = FirebaseMessaging; + sourceTree = ""; + }; + 146F352322958E585DE1F8A5C470753B /* Frameworks */ = { + isa = PBXGroup; + children = ( + BAF876301B5B1D265CE63CE84428C729 /* GoogleUtilities.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 14717AE616FBD5E68E4FC0AFF2AA8BAB /* FirebaseAppIndexing */ = { + isa = PBXGroup; + children = ( + 86F0EADD3A983C2E2BED334CA285A9AE /* Frameworks */, + ); + path = FirebaseAppIndexing; + sourceTree = ""; + }; + 189217D56F7F5C7383A40AC3669FEAC7 /* Pods-MDBSocials */ = { + isa = PBXGroup; + children = ( + E79217818298CD6146F6212AC8C1AB39 /* Info.plist */, + 31CD2F65BBA0CA78598D194627F1F33C /* Pods-MDBSocials.modulemap */, + 3D0E828B0C17FC93D5B654A826BC63B0 /* Pods-MDBSocials-acknowledgements.markdown */, + E10D7D2969961D5977D55E99094389D2 /* Pods-MDBSocials-acknowledgements.plist */, + 101A80B2BDF78E27D97C45B4B10B862B /* Pods-MDBSocials-dummy.m */, + 5948893063DE532F37F6327C4BD1A7BB /* Pods-MDBSocials-frameworks.sh */, + 24120D5BF35BB9B6EB999D8624611696 /* Pods-MDBSocials-resources.sh */, + A2AF1178EB954357E23FD0986B5DF25B /* Pods-MDBSocials-umbrella.h */, + FD70039E28880D1D283ED8062921655B /* Pods-MDBSocials.debug.xcconfig */, + 0B8215E415556D95D6573ADDC913B599 /* Pods-MDBSocials.release.xcconfig */, + ); + name = "Pods-MDBSocials"; + path = "Target Support Files/Pods-MDBSocials"; + sourceTree = ""; + }; + 1D1720188086EF002B896D437F531C47 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 758A75356E5DBCA2FE8E306141575509 /* FirebaseDynamicLinks.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 1F479DDEEF781C6791DD7AAD3FBAC06E /* Core */ = { + isa = PBXGroup; + children = ( + 202532DA246377B6AC7E95BDB43D98AE /* Firebase.h */, + ); + name = Core; + sourceTree = ""; + }; + 21045CBC47EB94FEAB74E96B471B0ED7 /* GoogleUtilities */ = { + isa = PBXGroup; + children = ( + 146F352322958E585DE1F8A5C470753B /* Frameworks */, + ); + path = GoogleUtilities; + sourceTree = ""; + }; + 2326274E87A38C5E7626165CE7CC5897 /* FirebaseInstanceID */ = { + isa = PBXGroup; + children = ( + 8DF806FE1EEA74A05932AADC47A183E7 /* FIRInstanceID.h */, + ED6EBB68205BF34A20D8CD74660200B7 /* Frameworks */, + ); + path = FirebaseInstanceID; + sourceTree = ""; + }; + 28CD40B03BEE21618CAA554FF29C5147 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2E109444146D3B06FFA12AD4AF94E66A /* GoogleIPhoneUtilities.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 2B3B05098ED5B3C0B3C9A746FF799C08 /* Pods */ = { + isa = PBXGroup; + children = ( + 7B51339A91C9AA8FAA62AD3A48239951 /* Firebase */, + D36FF12952FE2A68CAA5D64E70A95564 /* FirebaseAnalytics */, + 14717AE616FBD5E68E4FC0AFF2AA8BAB /* FirebaseAppIndexing */, + 49F17A1A004160FE2468F5C16B72AA60 /* FirebaseAuth */, + D899A49AF0FCB18F93E59CB41F65334A /* FirebaseCore */, + CF00AE438D8747FB2DE9E0D7D5ED078B /* FirebaseCrash */, + DAEA188BA06253A6FEFB3EB23AD5527E /* FirebaseDatabase */, + 6172B172F3F96EEC77D1C07C95B18012 /* FirebaseDynamicLinks */, + 2326274E87A38C5E7626165CE7CC5897 /* FirebaseInstanceID */, + 14497C222E85506E010744589A79BFBE /* FirebaseMessaging */, + E3047094B4A01679DE3B0DB469B96A8C /* FirebaseRemoteConfig */, + 116E27440CC8EDDEE6C16C68F9B982C9 /* FirebaseStorage */, + EC9FAA35072D36AC1EB32315A68D1F56 /* Google-Mobile-Ads-SDK */, + AFF9787761E92C7A3B58AD8F056D67C7 /* GoogleInterchangeUtilities */, + F56C7C656A820329E0524595E90DA3A1 /* GoogleIPhoneUtilities */, + 95D1AB56C7AA4FF061C491C6CAEB735A /* GoogleNetworkingUtilities */, + 9509B94188DAE182F27CDE9FD7262A83 /* GoogleSymbolUtilities */, + 21045CBC47EB94FEAB74E96B471B0ED7 /* GoogleUtilities */, + ); + name = Pods; + sourceTree = ""; + }; + 3152426B8621275BDDD316EB7064F055 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7957350AA83D2913466F9211475C959F /* FirebaseCore.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 3DCAB2B7CDE207B3958B6CB957FCC758 /* iOS */ = { + isa = PBXGroup; + children = ( + CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 461AF7DF757B72873DF9C5E6830F13AB /* Frameworks */ = { + isa = PBXGroup; + children = ( + EB2D7F489F4B072C1F7D1ED77775506C /* FirebaseAuth.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 49F17A1A004160FE2468F5C16B72AA60 /* FirebaseAuth */ = { + isa = PBXGroup; + children = ( + 461AF7DF757B72873DF9C5E6830F13AB /* Frameworks */, + ); + path = FirebaseAuth; + sourceTree = ""; + }; + 4B4D383D353514A66E49E844AFED60C5 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 45B51169493FECE27D3F1E219AA4B01D /* GoogleMobileAds.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 5344100C5CECCAE27A7E188C38A3A957 /* Products */ = { + isa = PBXGroup; + children = ( + D1D849F9B27F1F180DB48E2ED34BD843 /* Pods_MDBSocials.framework */, + ); + name = Products; + sourceTree = ""; + }; + 5BFBA8F3A1846C9CBD56C004F9F56E95 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1FAA600A5C9C5529BA7595ABD93F83FB /* FirebaseDatabase.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 6172B172F3F96EEC77D1C07C95B18012 /* FirebaseDynamicLinks */ = { + isa = PBXGroup; + children = ( + 1D1720188086EF002B896D437F531C47 /* Frameworks */, + ); + path = FirebaseDynamicLinks; + sourceTree = ""; + }; + 652E7E4E6D55FCA989382F19C06B3E18 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C0BD6D7C9FBB5F7ED871C5AA2F91C52B /* FirebaseStorage.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 778A0809BEF898B37C6AC3145A1F9C42 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9111BAE4C82D086ED1547278FCD7C2A7 /* FirebaseRemoteConfig.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 786C1F716558AD92B59734957C8A8F23 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 4E8290B363D6FBAE7F2F45D6568A1110 /* FirebaseCrash.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 7B51339A91C9AA8FAA62AD3A48239951 /* Firebase */ = { + isa = PBXGroup; + children = ( + 1F479DDEEF781C6791DD7AAD3FBAC06E /* Core */, + ); + path = Firebase; + sourceTree = ""; + }; + 7DB346D0F39D3F0E887471402A8071AB = { + isa = PBXGroup; + children = ( + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, + 2B3B05098ED5B3C0B3C9A746FF799C08 /* Pods */, + 5344100C5CECCAE27A7E188C38A3A957 /* Products */, + BF1AF58CEEEF09FA2D2E55CD777A3776 /* Targets Support Files */, + ); + sourceTree = ""; + }; + 7E0B5C54F03D8E8315465B894B2EC31A /* Frameworks */ = { + isa = PBXGroup; + children = ( + F04AFD4A0C1F9BEDC04A25FEA2BE5A7F /* GoogleInterchangeUtilities.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 86F0EADD3A983C2E2BED334CA285A9AE /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2E2B714D24FB615BD07051E3028557E0 /* FirebaseAppIndexing.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 9509B94188DAE182F27CDE9FD7262A83 /* GoogleSymbolUtilities */ = { + isa = PBXGroup; + children = ( + D36F862F5ECD7F7980680799926BAD2E /* Frameworks */, + ); + path = GoogleSymbolUtilities; + sourceTree = ""; + }; + 95D1AB56C7AA4FF061C491C6CAEB735A /* GoogleNetworkingUtilities */ = { + isa = PBXGroup; + children = ( + 0854365250E20C26631C200207CC45D3 /* Frameworks */, + ); + path = GoogleNetworkingUtilities; + sourceTree = ""; + }; + AFF9787761E92C7A3B58AD8F056D67C7 /* GoogleInterchangeUtilities */ = { + isa = PBXGroup; + children = ( + 7E0B5C54F03D8E8315465B894B2EC31A /* Frameworks */, + ); + path = GoogleInterchangeUtilities; + sourceTree = ""; + }; + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3DCAB2B7CDE207B3958B6CB957FCC758 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + BF1AF58CEEEF09FA2D2E55CD777A3776 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + 189217D56F7F5C7383A40AC3669FEAC7 /* Pods-MDBSocials */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + C4FF55C4E7EC7F6650A9A218E0BC1C38 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7DC6A7D8DCF9B4FCE9F4B07E8E2F3087 /* FirebaseMessaging.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + CF00AE438D8747FB2DE9E0D7D5ED078B /* FirebaseCrash */ = { + isa = PBXGroup; + children = ( + 786C1F716558AD92B59734957C8A8F23 /* Frameworks */, + ); + path = FirebaseCrash; + sourceTree = ""; + }; + D36F862F5ECD7F7980680799926BAD2E /* Frameworks */ = { + isa = PBXGroup; + children = ( + 876A5715174383A3B889A7E1B455AC00 /* GoogleSymbolUtilities.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + D36FF12952FE2A68CAA5D64E70A95564 /* FirebaseAnalytics */ = { + isa = PBXGroup; + children = ( + FFDCAE733F78EFFC2C843582C7BA4B2C /* Frameworks */, + ); + path = FirebaseAnalytics; + sourceTree = ""; + }; + D899A49AF0FCB18F93E59CB41F65334A /* FirebaseCore */ = { + isa = PBXGroup; + children = ( + 3152426B8621275BDDD316EB7064F055 /* Frameworks */, + ); + path = FirebaseCore; + sourceTree = ""; + }; + DAEA188BA06253A6FEFB3EB23AD5527E /* FirebaseDatabase */ = { + isa = PBXGroup; + children = ( + 5BFBA8F3A1846C9CBD56C004F9F56E95 /* Frameworks */, + ); + path = FirebaseDatabase; + sourceTree = ""; + }; + E3047094B4A01679DE3B0DB469B96A8C /* FirebaseRemoteConfig */ = { + isa = PBXGroup; + children = ( + 778A0809BEF898B37C6AC3145A1F9C42 /* Frameworks */, + ); + path = FirebaseRemoteConfig; + sourceTree = ""; + }; + EC9FAA35072D36AC1EB32315A68D1F56 /* Google-Mobile-Ads-SDK */ = { + isa = PBXGroup; + children = ( + 4B4D383D353514A66E49E844AFED60C5 /* Frameworks */, + ); + path = "Google-Mobile-Ads-SDK"; + sourceTree = ""; + }; + ED6EBB68205BF34A20D8CD74660200B7 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9138B082E084824777716E30278AD3A7 /* FirebaseInstanceID.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + F56C7C656A820329E0524595E90DA3A1 /* GoogleIPhoneUtilities */ = { + isa = PBXGroup; + children = ( + 28CD40B03BEE21618CAA554FF29C5147 /* Frameworks */, + ); + path = GoogleIPhoneUtilities; + sourceTree = ""; + }; + FFDCAE733F78EFFC2C843582C7BA4B2C /* Frameworks */ = { + isa = PBXGroup; + children = ( + 168C2301B6D19D1E9F5157096B4AEB69 /* FirebaseAnalytics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D3617B2F7EF128C88A491EAC356F736E /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0FC24844DE2B04039D40DC093FFF2FF8 /* Pods-MDBSocials-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 2B33812D40E5E43F6563C3FEE3DF2C4D /* Pods-MDBSocials */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2AEF82315D5862F6207113C576F38472 /* Build configuration list for PBXNativeTarget "Pods-MDBSocials" */; + buildPhases = ( + E0878B391334F122612A88DAA4C0EF2B /* Sources */, + 058E8CA9115A53DE8E0AD68BE0C00358 /* Frameworks */, + D3617B2F7EF128C88A491EAC356F736E /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-MDBSocials"; + productName = "Pods-MDBSocials"; + productReference = D1D849F9B27F1F180DB48E2ED34BD843 /* Pods_MDBSocials.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0730; + LastUpgradeCheck = 0700; + }; + buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 7DB346D0F39D3F0E887471402A8071AB; + productRefGroup = 5344100C5CECCAE27A7E188C38A3A957 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2B33812D40E5E43F6563C3FEE3DF2C4D /* Pods-MDBSocials */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + E0878B391334F122612A88DAA4C0EF2B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 19624C07F06D37715BBFD45E33757A39 /* Pods-MDBSocials-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 2FF2948C4BF401D94155BAC19CEF6AB0 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0B8215E415556D95D6573ADDC913B599 /* Pods-MDBSocials.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "Target Support Files/Pods-MDBSocials/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-MDBSocials/Pods-MDBSocials.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_MDBSocials; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 59B042A655B7C20CBAB90E385BF4E4C7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + ONLY_ACTIVE_ARCH = YES; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + A653F29AD7F95DBE168F487383F8D4E2 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FD70039E28880D1D283ED8062921655B /* Pods-MDBSocials.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "Target Support Files/Pods-MDBSocials/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-MDBSocials/Pods-MDBSocials.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_MDBSocials; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B7324857C38B065FEB1EEE3105C2367A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2AEF82315D5862F6207113C576F38472 /* Build configuration list for PBXNativeTarget "Pods-MDBSocials" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A653F29AD7F95DBE168F487383F8D4E2 /* Debug */, + 2FF2948C4BF401D94155BAC19CEF6AB0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 59B042A655B7C20CBAB90E385BF4E4C7 /* Debug */, + B7324857C38B065FEB1EEE3105C2367A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; +} diff --git a/MDBSocials/Pods/Pods.xcodeproj/xcuserdata/vidya.xcuserdatad/xcschemes/Pods-MDBSocials.xcscheme b/MDBSocials/Pods/Pods.xcodeproj/xcuserdata/vidya.xcuserdatad/xcschemes/Pods-MDBSocials.xcscheme new file mode 100644 index 0000000..c368b60 --- /dev/null +++ b/MDBSocials/Pods/Pods.xcodeproj/xcuserdata/vidya.xcuserdatad/xcschemes/Pods-MDBSocials.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MDBSocials/Pods/Pods.xcodeproj/xcuserdata/vidya.xcuserdatad/xcschemes/xcschememanagement.plist b/MDBSocials/Pods/Pods.xcodeproj/xcuserdata/vidya.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..540bc36 --- /dev/null +++ b/MDBSocials/Pods/Pods.xcodeproj/xcuserdata/vidya.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + Pods-MDBSocials.xcscheme + + isShown + + + + SuppressBuildableAutocreation + + 2B33812D40E5E43F6563C3FEE3DF2C4D + + primary + + + + + diff --git a/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Info.plist b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-acknowledgements.markdown b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-acknowledgements.markdown new file mode 100644 index 0000000..67a1581 --- /dev/null +++ b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-acknowledgements.markdown @@ -0,0 +1,75 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## Firebase + +Copyright 2016 Google + +## FirebaseAnalytics + +Copyright 2016 Google + +## FirebaseAppIndexing + +Copyright 2016 Google + +## FirebaseAuth + +Copyright 2016 Google + +## FirebaseCore + +Copyright 2016 Google + +## FirebaseCrash + +Copyright 2016 Google + +## FirebaseDatabase + +Copyright 2016 Google + +## FirebaseDynamicLinks + +Copyright 2016 Google + +## FirebaseInstanceID + +Copyright 2016 Google + +## FirebaseMessaging + +Copyright 2016 Google + +## FirebaseRemoteConfig + +Copyright 2016 Google + +## FirebaseStorage + +Copyright 2016 Google + +## Google-Mobile-Ads-SDK + +Copyright 2011 Google Inc. All Rights Reserved. + +## GoogleIPhoneUtilities + +Copyright 2015 Google Inc. + +## GoogleInterchangeUtilities + +Copyright 2016 Google + +## GoogleNetworkingUtilities + +Copyright 2016 Google + +## GoogleSymbolUtilities + +Copyright 2016 Google + +## GoogleUtilities + +Copyright 2016 Google +Generated by CocoaPods - https://cocoapods.org diff --git a/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-acknowledgements.plist b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-acknowledgements.plist new file mode 100644 index 0000000..506c90f --- /dev/null +++ b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-acknowledgements.plist @@ -0,0 +1,209 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + Firebase + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + FirebaseAnalytics + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + FirebaseAppIndexing + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + FirebaseAuth + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + FirebaseCore + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + FirebaseCrash + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + FirebaseDatabase + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + FirebaseDynamicLinks + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + FirebaseInstanceID + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + FirebaseMessaging + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + FirebaseRemoteConfig + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + FirebaseStorage + Type + PSGroupSpecifier + + + FooterText + Copyright 2011 Google Inc. All Rights Reserved. + License + Copyright + Title + Google-Mobile-Ads-SDK + Type + PSGroupSpecifier + + + FooterText + Copyright 2015 Google Inc. + License + Copyright + Title + GoogleIPhoneUtilities + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + GoogleInterchangeUtilities + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + GoogleNetworkingUtilities + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + GoogleSymbolUtilities + Type + PSGroupSpecifier + + + FooterText + Copyright 2016 Google + License + Copyright + Title + GoogleUtilities + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-dummy.m b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-dummy.m new file mode 100644 index 0000000..81ccf86 --- /dev/null +++ b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_MDBSocials : NSObject +@end +@implementation PodsDummy_Pods_MDBSocials +@end diff --git a/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-frameworks.sh b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-frameworks.sh new file mode 100755 index 0000000..893c16a --- /dev/null +++ b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-frameworks.sh @@ -0,0 +1,84 @@ +#!/bin/sh +set -e + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + # use filter instead of exclude so missing patterns dont' throw errors + echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" + /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current file + archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + stripped="" + for arch in $archs; do + if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi +} + diff --git a/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-resources.sh b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-resources.sh new file mode 100755 index 0000000..25e9d37 --- /dev/null +++ b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-resources.sh @@ -0,0 +1,96 @@ +#!/bin/sh +set -e + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + +install_resource() +{ + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.framework) + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + *) + echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +then + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "${PODS_ROOT}*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-umbrella.h b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-umbrella.h new file mode 100644 index 0000000..8a483f3 --- /dev/null +++ b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials-umbrella.h @@ -0,0 +1,8 @@ +#ifdef __OBJC__ +#import +#endif + + +FOUNDATION_EXPORT double Pods_MDBSocialsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_MDBSocialsVersionString[]; + diff --git a/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials.debug.xcconfig b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials.debug.xcconfig new file mode 100644 index 0000000..bd26a81 --- /dev/null +++ b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials.debug.xcconfig @@ -0,0 +1,10 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAppIndexing/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseCore/Frameworks/frameworks" "${PODS_ROOT}/FirebaseCrash/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseDynamicLinks/Frameworks/frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseMessaging/Frameworks/frameworks" "${PODS_ROOT}/FirebaseRemoteConfig/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks/frameworks" "${PODS_ROOT}/Google-Mobile-Ads-SDK/Frameworks" "${PODS_ROOT}/GoogleIPhoneUtilities/Frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks/frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks/frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks/frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks/frameworks" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/Firebase/Core/Sources $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAppIndexing" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCrash" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseDynamicLinks" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseMessaging" "${PODS_ROOT}/Headers/Public/FirebaseRemoteConfig" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/Google-Mobile-Ads-SDK" "${PODS_ROOT}/Headers/Public/GoogleIPhoneUtilities" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAppIndexing" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseCore" -isystem "${PODS_ROOT}/Headers/Public/FirebaseCrash" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDynamicLinks" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseMessaging" -isystem "${PODS_ROOT}/Headers/Public/FirebaseRemoteConfig" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/Google-Mobile-Ads-SDK" -isystem "${PODS_ROOT}/Headers/Public/GoogleIPhoneUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"icucore" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "AddressBook" -framework "AssetsLibrary" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreMedia" -framework "CoreMotion" -framework "CoreTelephony" -framework "CoreVideo" -framework "FirebaseAnalytics" -framework "FirebaseAppIndexing" -framework "FirebaseAuth" -framework "FirebaseCore" -framework "FirebaseCrash" -framework "FirebaseDatabase" -framework "FirebaseDynamicLinks" -framework "FirebaseInstanceID" -framework "FirebaseMessaging" -framework "FirebaseRemoteConfig" -framework "FirebaseStorage" -framework "GLKit" -framework "GoogleIPhoneUtilities" -framework "GoogleInterchangeUtilities" -framework "GoogleMobileAds" -framework "GoogleNetworkingUtilities" -framework "GoogleSymbolUtilities" -framework "GoogleUtilities" -framework "MediaPlayer" -framework "MessageUI" -framework "MobileCoreServices" -framework "OpenGLES" -framework "QuartzCore" -framework "SafariServices" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "AdSupport" -weak_framework "SafariServices" -weak_framework "WebKit" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/../Pods diff --git a/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials.modulemap b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials.modulemap new file mode 100644 index 0000000..e8fa3b9 --- /dev/null +++ b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials.modulemap @@ -0,0 +1,6 @@ +framework module Pods_MDBSocials { + umbrella header "Pods-MDBSocials-umbrella.h" + + export * + module * { export * } +} diff --git a/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials.release.xcconfig b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials.release.xcconfig new file mode 100644 index 0000000..bd26a81 --- /dev/null +++ b/MDBSocials/Pods/Target Support Files/Pods-MDBSocials/Pods-MDBSocials.release.xcconfig @@ -0,0 +1,10 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAppIndexing/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseCore/Frameworks/frameworks" "${PODS_ROOT}/FirebaseCrash/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseDynamicLinks/Frameworks/frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseMessaging/Frameworks/frameworks" "${PODS_ROOT}/FirebaseRemoteConfig/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks/frameworks" "${PODS_ROOT}/Google-Mobile-Ads-SDK/Frameworks" "${PODS_ROOT}/GoogleIPhoneUtilities/Frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks/frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks/frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks/frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks/frameworks" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/Firebase/Core/Sources $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAppIndexing" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCrash" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseDynamicLinks" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseMessaging" "${PODS_ROOT}/Headers/Public/FirebaseRemoteConfig" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/Google-Mobile-Ads-SDK" "${PODS_ROOT}/Headers/Public/GoogleIPhoneUtilities" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Firebase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAppIndexing" -isystem "${PODS_ROOT}/Headers/Public/FirebaseAuth" -isystem "${PODS_ROOT}/Headers/Public/FirebaseCore" -isystem "${PODS_ROOT}/Headers/Public/FirebaseCrash" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDatabase" -isystem "${PODS_ROOT}/Headers/Public/FirebaseDynamicLinks" -isystem "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" -isystem "${PODS_ROOT}/Headers/Public/FirebaseMessaging" -isystem "${PODS_ROOT}/Headers/Public/FirebaseRemoteConfig" -isystem "${PODS_ROOT}/Headers/Public/FirebaseStorage" -isystem "${PODS_ROOT}/Headers/Public/Google-Mobile-Ads-SDK" -isystem "${PODS_ROOT}/Headers/Public/GoogleIPhoneUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" -isystem "${PODS_ROOT}/Headers/Public/GoogleUtilities" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"icucore" -l"sqlite3" -l"z" -framework "AVFoundation" -framework "AddressBook" -framework "AssetsLibrary" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreMedia" -framework "CoreMotion" -framework "CoreTelephony" -framework "CoreVideo" -framework "FirebaseAnalytics" -framework "FirebaseAppIndexing" -framework "FirebaseAuth" -framework "FirebaseCore" -framework "FirebaseCrash" -framework "FirebaseDatabase" -framework "FirebaseDynamicLinks" -framework "FirebaseInstanceID" -framework "FirebaseMessaging" -framework "FirebaseRemoteConfig" -framework "FirebaseStorage" -framework "GLKit" -framework "GoogleIPhoneUtilities" -framework "GoogleInterchangeUtilities" -framework "GoogleMobileAds" -framework "GoogleNetworkingUtilities" -framework "GoogleSymbolUtilities" -framework "GoogleUtilities" -framework "MediaPlayer" -framework "MessageUI" -framework "MobileCoreServices" -framework "OpenGLES" -framework "QuartzCore" -framework "SafariServices" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -weak_framework "AdSupport" -weak_framework "SafariServices" -weak_framework "WebKit" +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/../Pods diff --git a/MDBSocials/README.md b/MDBSocials/README.md new file mode 100644 index 0000000..a19cfe4 --- /dev/null +++ b/MDBSocials/README.md @@ -0,0 +1,2 @@ +# MDBSocials +An app to plan events between the members of MDB! diff --git a/README.md b/README.md index 4a040e1..2dd5b92 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ + Repository for MDB Training Program Mini-Project Submissions Finalized mini-projects should be stored in personal portfolios, but this repository will be used for providing feedback on code quality using the GitHub code review features. -When pushing code to this repo, DO NOT push to master. Create a new branch and open a pull request. \ No newline at end of file +When pushing code to this repo, DO NOT push to master. Create a new branch and open a pull request. +