Commit 1943a4ce by Dmitriy Stepanets

Fnished Core. Integrating WDTWeatherSource.

parent dfa21bff
......@@ -16,7 +16,6 @@
87DE8C81263BFBCE00E1C8D4 /* LegacyMigrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87DE8C80263BFBCE00E1C8D4 /* LegacyMigrationManager.swift */; };
87DE8CB2263C09BA00E1C8D4 /* LegacyWdtLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87DE8CB1263C09BA00E1C8D4 /* LegacyWdtLocation.swift */; };
87DE8CF4263C267B00E1C8D4 /* LegacySettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87DE8CF3263C267B00E1C8D4 /* LegacySettings.swift */; };
87DE8D01263C4ADD00E1C8D4 /* WdtHealth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87DE8D00263C4ADD00E1C8D4 /* WdtHealth.swift */; };
C27F92C189A9C9E637AF6C3A /* Pods_OneWeatherNotificationServiceExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 871EA87D239E6F89F6F8818E /* Pods_OneWeatherNotificationServiceExtension.framework */; };
CD1237C3255D5C5900C98139 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD1237C2255D5C5900C98139 /* AppDelegate.swift */; };
CD1237CC255D5C5C00C98139 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CD1237CB255D5C5C00C98139 /* Assets.xcassets */; };
......@@ -137,6 +136,8 @@
CDF8F12A262089A200DB384A /* MapTimeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDF8F129262089A200DB384A /* MapTimeView.swift */; };
CDF8F12D26208E7B00DB384A /* MapCurrentTimeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDF8F12C26208E7B00DB384A /* MapCurrentTimeView.swift */; };
CDF9BF8E26133D050037847D /* LocationSearchCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDF9BF8D26133D050037847D /* LocationSearchCoordinator.swift */; };
CDFE45BC26566EF50021A29F /* WDTWeatherSource.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CDFE45BB26566EF50021A29F /* WDTWeatherSource.framework */; };
CDFE45BD26566EF50021A29F /* WDTWeatherSource.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CDFE45BB26566EF50021A29F /* WDTWeatherSource.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
CE04561F26282325003D252B /* NWSCurrentEventsReponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE04561E26282325003D252B /* NWSCurrentEventsReponse.swift */; };
CE0456242629C04C003D252B /* NWSAlertsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE0456232629C04C003D252B /* NWSAlertsManager.swift */; };
CE0457902632B3BC00B3C19A /* NotificationsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE04578F2632B3BC00B3C19A /* NotificationsViewModel.swift */; };
......@@ -170,7 +171,6 @@
CE13B97B2626FB11007CBD4D /* PSMLocationSDK.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE13B7DC262478E7007CBD4D /* PSMLocationSDK.xcframework */; };
CE13B97C2626FB11007CBD4D /* PSMLocationSDK.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CE13B7DC262478E7007CBD4D /* PSMLocationSDK.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
CE14445F2638B6CF008E2162 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE14445E2638B6CF008E2162 /* StoreKit.framework */; };
CE28474F26159857006C8DC5 /* HealthSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE28474E26159857006C8DC5 /* HealthSource.swift */; };
CE28475226159A32006C8DC5 /* BlendHealthModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE28475126159A32006C8DC5 /* BlendHealthModels.swift */; };
CE2847602615A8AD006C8DC5 /* BlendHealthSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE28475F2615A8AD006C8DC5 /* BlendHealthSource.swift */; };
CE308B262637EA88001ECD8A /* CoreNotifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE308B242637EA87001ECD8A /* CoreNotifications.swift */; };
......@@ -209,27 +209,14 @@
CE9F01BB261B31A6009BA500 /* CoreDataError.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE9F01BA261B31A6009BA500 /* CoreDataError.swift */; };
CE9F01BE261B34C0009BA500 /* CoreDataAppModelConvertable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE9F01BD261B34C0009BA500 /* CoreDataAppModelConvertable.swift */; };
CE9F01C1261B3776009BA500 /* CoreDataUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE9F01C0261B3776009BA500 /* CoreDataUtils.swift */; };
CE9F01CC261C9A6E009BA500 /* AppData.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE9F01CB261C9A6D009BA500 /* AppData.swift */; };
CEAD00A12577B2D5003596AD /* StuffThatIsPresentInTheMainProject.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEAD00A02577B2D5003596AD /* StuffThatIsPresentInTheMainProject.swift */; };
CEAFF0A325E0FF0800DF4EBF /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEAFF0A225E0FF0800DF4EBF /* LocationManager.swift */; };
CEBAC1C62638236D00A89681 /* PushNotificationsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEBAC1C52638236D00A89681 /* PushNotificationsManager.swift */; };
CEBAC1C82638240800A89681 /* DeeplinksRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEBAC1C72638240800A89681 /* DeeplinksRouter.swift */; };
CEBAC2122638968D00A89681 /* FIPSSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEBAC2112638968D00A89681 /* FIPSSource.swift */; };
CEC526FD25E795F700DA58A5 /* WdtWeatherSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC526FC25E795F700DA58A5 /* WdtWeatherSource.swift */; };
CEC5270025E7BACB00DA58A5 /* WdtLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC526FF25E7BACB00DA58A5 /* WdtLocation.swift */; };
CEC5270325E7BB4000DA58A5 /* WdtSurfaceObservation.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC5270225E7BB4000DA58A5 /* WdtSurfaceObservation.swift */; };
CEC5275D25E8E50B00DA58A5 /* WdtDailySummary.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC5275C25E8E50B00DA58A5 /* WdtDailySummary.swift */; };
CEC5276025E92DDA00DA58A5 /* WdtHourlySummary.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC5275F25E92DDA00DA58A5 /* WdtHourlySummary.swift */; };
CEC7D8EE2639FE2700B8836D /* OLInAppStoreManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC7D8ED2639FE2700B8836D /* OLInAppStoreManager.swift */; };
CEC8FBAF2639756A0001A6BF /* OnboardingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC8FBAE2639756A0001A6BF /* OnboardingViewController.swift */; };
CEC8FBB2263976240001A6BF /* OnboardingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC8FBB1263976240001A6BF /* OnboardingCoordinator.swift */; };
CEC8FBB5263976400001A6BF /* OnboardingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC8FBB4263976400001A6BF /* OnboardingViewModel.swift */; };
CEDE4E8225EEFD56007457E9 /* WdtWeatherCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEDE4E7E25EEFD56007457E9 /* WdtWeatherCode.swift */; };
CEDE4E8325EEFD56007457E9 /* WdtLocationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEDE4E7F25EEFD56007457E9 /* WdtLocationResponse.swift */; };
CEDE4E8425EEFD56007457E9 /* WdtDailySummariesArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEDE4E8025EEFD56007457E9 /* WdtDailySummariesArray.swift */; };
CEDE4E8525EEFD56007457E9 /* WdtHourlySummariesArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEDE4E8125EEFD56007457E9 /* WdtHourlySummariesArray.swift */; };
CEDE4E8925EEFFEF007457E9 /* WdtDayNight.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEDE4E8825EEFFEF007457E9 /* WdtDayNight.swift */; };
CEE0A179262FA9650044C257 /* DelayedSaveStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE0A178262FA9650044C257 /* DelayedSaveStorage.swift */; };
CEE0A1A426317A8F0044C257 /* NWSAlertInfoParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE0A1A326317A8F0044C257 /* NWSAlertInfoParser.swift */; };
CEF959652600C2F900975FAA /* AnalyticsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF959642600C2F900975FAA /* AnalyticsService.swift */; };
CEF959692600C30500975FAA /* AnalyticsGlobal.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF959682600C30500975FAA /* AnalyticsGlobal.swift */; };
......@@ -239,7 +226,6 @@
CEF959932600C63500975FAA /* Analytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF959922600C63500975FAA /* Analytics.swift */; };
CEF959982600C88100975FAA /* AnalyticsParameter.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF959972600C88100975FAA /* AnalyticsParameter.swift */; };
CEF959A626035A2600975FAA /* DeviceLocationMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEF959A526035A2600975FAA /* DeviceLocationMonitor.swift */; };
CEFB857226174F7A00C5CDD2 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEFB857126174F7A00C5CDD2 /* Storage.swift */; };
CEFB85752617506100C5CDD2 /* CoreDataStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEFB85742617506100C5CDD2 /* CoreDataStorage.swift */; };
CEFB857A2617510700C5CDD2 /* 1WModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = CEFB85782617510700C5CDD2 /* 1WModel.xcdatamodeld */; };
/* End PBXBuildFile section */
......@@ -261,6 +247,7 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
CDFE45BD26566EF50021A29F /* WDTWeatherSource.framework in Embed Frameworks */,
CE13B97C2626FB11007CBD4D /* PSMLocationSDK.xcframework in Embed Frameworks */,
CD615F7F265523BD00B717DB /* OneWeatherCore.framework in Embed Frameworks */,
);
......@@ -296,7 +283,6 @@
87DE8C80263BFBCE00E1C8D4 /* LegacyMigrationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyMigrationManager.swift; sourceTree = "<group>"; };
87DE8CB1263C09BA00E1C8D4 /* LegacyWdtLocation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyWdtLocation.swift; sourceTree = "<group>"; };
87DE8CF3263C267B00E1C8D4 /* LegacySettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacySettings.swift; sourceTree = "<group>"; };
87DE8D00263C4ADD00E1C8D4 /* WdtHealth.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WdtHealth.swift; sourceTree = "<group>"; };
C8C576F6184B547435CFF0F3 /* Pods-1Weather.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-1Weather.debug.xcconfig"; path = "Target Support Files/Pods-1Weather/Pods-1Weather.debug.xcconfig"; sourceTree = "<group>"; };
CD1237BF255D5C5900C98139 /* 1Weather.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = 1Weather.app; sourceTree = BUILT_PRODUCTS_DIR; };
CD1237C2255D5C5900C98139 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
......@@ -419,6 +405,7 @@
CDF8F129262089A200DB384A /* MapTimeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapTimeView.swift; sourceTree = "<group>"; };
CDF8F12C26208E7B00DB384A /* MapCurrentTimeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapCurrentTimeView.swift; sourceTree = "<group>"; };
CDF9BF8D26133D050037847D /* LocationSearchCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationSearchCoordinator.swift; sourceTree = "<group>"; };
CDFE45BB26566EF50021A29F /* WDTWeatherSource.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WDTWeatherSource.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CE04561E26282325003D252B /* NWSCurrentEventsReponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWSCurrentEventsReponse.swift; sourceTree = "<group>"; };
CE0456232629C04C003D252B /* NWSAlertsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWSAlertsManager.swift; sourceTree = "<group>"; };
CE04578F2632B3BC00B3C19A /* NotificationsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationsViewModel.swift; sourceTree = "<group>"; };
......@@ -455,7 +442,6 @@
CE13B88D26248A77007CBD4D /* GoogleService-Info-Staging.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info-Staging.plist"; sourceTree = "<group>"; };
CE14445D2638B6A8008E2162 /* 1Weather.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = 1Weather.entitlements; sourceTree = "<group>"; };
CE14445E2638B6CF008E2162 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
CE28474E26159857006C8DC5 /* HealthSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HealthSource.swift; sourceTree = "<group>"; };
CE28475126159A32006C8DC5 /* BlendHealthModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlendHealthModels.swift; sourceTree = "<group>"; };
CE28475F2615A8AD006C8DC5 /* BlendHealthSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlendHealthSource.swift; sourceTree = "<group>"; };
CE308B242637EA87001ECD8A /* CoreNotifications.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreNotifications.swift; sourceTree = "<group>"; };
......@@ -496,27 +482,14 @@
CE9F01BA261B31A6009BA500 /* CoreDataError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataError.swift; sourceTree = "<group>"; };
CE9F01BD261B34C0009BA500 /* CoreDataAppModelConvertable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataAppModelConvertable.swift; sourceTree = "<group>"; };
CE9F01C0261B3776009BA500 /* CoreDataUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataUtils.swift; sourceTree = "<group>"; };
CE9F01CB261C9A6D009BA500 /* AppData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppData.swift; sourceTree = "<group>"; };
CEAD00A02577B2D5003596AD /* StuffThatIsPresentInTheMainProject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StuffThatIsPresentInTheMainProject.swift; sourceTree = "<group>"; };
CEAFF0A225E0FF0800DF4EBF /* LocationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationManager.swift; sourceTree = "<group>"; };
CEBAC1C52638236D00A89681 /* PushNotificationsManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PushNotificationsManager.swift; sourceTree = "<group>"; };
CEBAC1C72638240800A89681 /* DeeplinksRouter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeeplinksRouter.swift; sourceTree = "<group>"; };
CEBAC2112638968D00A89681 /* FIPSSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FIPSSource.swift; sourceTree = "<group>"; };
CEC526FC25E795F700DA58A5 /* WdtWeatherSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WdtWeatherSource.swift; sourceTree = "<group>"; };
CEC526FF25E7BACB00DA58A5 /* WdtLocation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WdtLocation.swift; sourceTree = "<group>"; };
CEC5270225E7BB4000DA58A5 /* WdtSurfaceObservation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WdtSurfaceObservation.swift; sourceTree = "<group>"; };
CEC5275C25E8E50B00DA58A5 /* WdtDailySummary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WdtDailySummary.swift; sourceTree = "<group>"; };
CEC5275F25E92DDA00DA58A5 /* WdtHourlySummary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WdtHourlySummary.swift; sourceTree = "<group>"; };
CEC7D8ED2639FE2700B8836D /* OLInAppStoreManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OLInAppStoreManager.swift; sourceTree = "<group>"; };
CEC8FBAE2639756A0001A6BF /* OnboardingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingViewController.swift; sourceTree = "<group>"; };
CEC8FBB1263976240001A6BF /* OnboardingCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingCoordinator.swift; sourceTree = "<group>"; };
CEC8FBB4263976400001A6BF /* OnboardingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingViewModel.swift; sourceTree = "<group>"; };
CEDE4E7E25EEFD56007457E9 /* WdtWeatherCode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WdtWeatherCode.swift; sourceTree = "<group>"; };
CEDE4E7F25EEFD56007457E9 /* WdtLocationResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WdtLocationResponse.swift; sourceTree = "<group>"; };
CEDE4E8025EEFD56007457E9 /* WdtDailySummariesArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WdtDailySummariesArray.swift; sourceTree = "<group>"; };
CEDE4E8125EEFD56007457E9 /* WdtHourlySummariesArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WdtHourlySummariesArray.swift; sourceTree = "<group>"; };
CEDE4E8825EEFFEF007457E9 /* WdtDayNight.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WdtDayNight.swift; sourceTree = "<group>"; };
CEE0A178262FA9650044C257 /* DelayedSaveStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelayedSaveStorage.swift; sourceTree = "<group>"; };
CEE0A1A326317A8F0044C257 /* NWSAlertInfoParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWSAlertInfoParser.swift; sourceTree = "<group>"; };
CEF959642600C2F900975FAA /* AnalyticsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsService.swift; sourceTree = "<group>"; };
CEF959682600C30500975FAA /* AnalyticsGlobal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsGlobal.swift; sourceTree = "<group>"; };
......@@ -526,7 +499,6 @@
CEF959922600C63500975FAA /* Analytics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Analytics.swift; sourceTree = "<group>"; };
CEF959972600C88100975FAA /* AnalyticsParameter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsParameter.swift; sourceTree = "<group>"; };
CEF959A526035A2600975FAA /* DeviceLocationMonitor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceLocationMonitor.swift; sourceTree = "<group>"; };
CEFB857126174F7A00C5CDD2 /* Storage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Storage.swift; sourceTree = "<group>"; };
CEFB85742617506100C5CDD2 /* CoreDataStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataStorage.swift; sourceTree = "<group>"; };
CEFB85792617510700C5CDD2 /* Model.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Model.xcdatamodel; sourceTree = "<group>"; };
DF826CF4702D9DCCB9A9DD71 /* Pods-1Weather.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-1Weather.release.xcconfig"; path = "Target Support Files/Pods-1Weather/Pods-1Weather.release.xcconfig"; sourceTree = "<group>"; };
......@@ -540,6 +512,7 @@
files = (
CE14445F2638B6CF008E2162 /* StoreKit.framework in Frameworks */,
CE13B97B2626FB11007CBD4D /* PSMLocationSDK.xcframework in Frameworks */,
CDFE45BC26566EF50021A29F /* WDTWeatherSource.framework in Frameworks */,
34EAFD887EF2D1D7449A016C /* Pods_1Weather.framework in Frameworks */,
CD615F7E265523BD00B717DB /* OneWeatherCore.framework in Frameworks */,
);
......@@ -580,7 +553,6 @@
isa = PBXGroup;
children = (
CEAFF09A25DFC79100DF4EBF /* Model */,
CEC526FC25E795F700DA58A5 /* WdtWeatherSource.swift */,
);
path = Weather;
sourceTree = "<group>";
......@@ -1200,7 +1172,6 @@
CE13B98026272A13007CBD4D /* Model */,
CE0456232629C04C003D252B /* NWSAlertsManager.swift */,
CEE0A1A326317A8F0044C257 /* NWSAlertInfoParser.swift */,
CEBAC2112638968D00A89681 /* FIPSSource.swift */,
CE3A36C62638A77E002CACC3 /* BlendFIPSSource.swift */,
);
path = Notifications;
......@@ -1219,7 +1190,6 @@
isa = PBXGroup;
children = (
CE28474D261597F1006C8DC5 /* Model */,
CE28474E26159857006C8DC5 /* HealthSource.swift */,
CE28475F2615A8AD006C8DC5 /* BlendHealthSource.swift */,
);
path = Health;
......@@ -1265,7 +1235,6 @@
CE89628F26175DF400CA274A /* Objects */ = {
isa = PBXGroup;
children = (
CE9F01CB261C9A6D009BA500 /* AppData.swift */,
CE89629926175DF500CA274A /* Human */,
CE89629026175DF400CA274A /* Machine */,
);
......@@ -1345,12 +1314,6 @@
CEAFF09A25DFC79100DF4EBF /* Model */ = {
isa = PBXGroup;
children = (
CEDE4E7D25EEFD56007457E9 /* HelperObjects */,
CEC526FF25E7BACB00DA58A5 /* WdtLocation.swift */,
CEC5270225E7BB4000DA58A5 /* WdtSurfaceObservation.swift */,
CEC5275C25E8E50B00DA58A5 /* WdtDailySummary.swift */,
CEC5275F25E92DDA00DA58A5 /* WdtHourlySummary.swift */,
87DE8D00263C4ADD00E1C8D4 /* WdtHealth.swift */,
);
path = Model;
sourceTree = "<group>";
......@@ -1371,18 +1334,6 @@
path = Onboarding;
sourceTree = "<group>";
};
CEDE4E7D25EEFD56007457E9 /* HelperObjects */ = {
isa = PBXGroup;
children = (
CEDE4E7F25EEFD56007457E9 /* WdtLocationResponse.swift */,
CEDE4E7E25EEFD56007457E9 /* WdtWeatherCode.swift */,
CEDE4E8025EEFD56007457E9 /* WdtDailySummariesArray.swift */,
CEDE4E8125EEFD56007457E9 /* WdtHourlySummariesArray.swift */,
CEDE4E8825EEFFEF007457E9 /* WdtDayNight.swift */,
);
path = HelperObjects;
sourceTree = "<group>";
};
CEF959632600C2E300975FAA /* Analytics */ = {
isa = PBXGroup;
children = (
......@@ -1408,10 +1359,8 @@
CEFB856B26174F2E00C5CDD2 /* Storage */ = {
isa = PBXGroup;
children = (
CEFB857126174F7A00C5CDD2 /* Storage.swift */,
CD16A179262D81880028E74A /* UserDefaultsWrapper.swift */,
CEFB8577261750DF00C5CDD2 /* CoreData */,
CEE0A178262FA9650044C257 /* DelayedSaveStorage.swift */,
87DE8C80263BFBCE00E1C8D4 /* LegacyMigrationManager.swift */,
87DE8CB1263C09BA00E1C8D4 /* LegacyWdtLocation.swift */,
87DE8CF3263C267B00E1C8D4 /* LegacySettings.swift */,
......@@ -1436,6 +1385,7 @@
DBFD169AA2AA6A3CB5B68BB5 /* Frameworks */ = {
isa = PBXGroup;
children = (
CDFE45BB26566EF50021A29F /* WDTWeatherSource.framework */,
CD615F7D265523BD00B717DB /* OneWeatherCore.framework */,
CE849E372638CE8000DEFFBD /* UserNotifications.framework */,
CE14445E2638B6CF008E2162 /* StoreKit.framework */,
......@@ -1726,7 +1676,6 @@
CD7BF15526203E6900A30DF5 /* RadarViewController.swift in Sources */,
CD82300325D69DE400A05501 /* TodayConditionsCell.swift in Sources */,
CEF959902600C5A800975FAA /* MoEngageAnalyticsService.swift in Sources */,
CEC526FD25E795F700DA58A5 /* WdtWeatherSource.swift in Sources */,
CD32CE08260C743B00235081 /* MenuViewModel.swift in Sources */,
CD866A76260F77C500E96A5C /* SettingsDetailsCoordinator.swift in Sources */,
CE0457902632B3BC00B3C19A /* NotificationsViewModel.swift in Sources */,
......@@ -1746,8 +1695,6 @@
CEF959692600C30500975FAA /* AnalyticsGlobal.swift in Sources */,
CD866A72260F6A5300E96A5C /* SettingsDetailsCell.swift in Sources */,
CD6761802625B0F50079D273 /* RadarLayerCell.swift in Sources */,
CEC5270325E7BB4000DA58A5 /* WdtSurfaceObservation.swift in Sources */,
CE28474F26159857006C8DC5 /* HealthSource.swift in Sources */,
CE13B80F262480B3007CBD4D /* BRNativeBannerContainerView.swift in Sources */,
CD6761842625B6A10079D273 /* RadarLayersCellFactory.swift in Sources */,
CD67617C2625A60B0079D273 /* MapLayersDismissAnimator.swift in Sources */,
......@@ -1797,7 +1744,6 @@
CDAD97B1262042B2007FCFB1 /* MapButton.swift in Sources */,
CD17C60225D15C8500EE884E /* CoordinatorProtocol.swift in Sources */,
CDA5542825EF734200A2E08C /* TodayCellFactory.swift in Sources */,
CE9F01CC261C9A6E009BA500 /* AppData.swift in Sources */,
CEF959742600C3A400975FAA /* FlurryAnalyticsService.swift in Sources */,
CE2847602615A8AD006C8DC5 /* BlendHealthSource.swift in Sources */,
CD86C22225F0DCCB00F38A16 /* PrecipitationView.swift in Sources */,
......@@ -1806,20 +1752,17 @@
CE9F01BE261B34C0009BA500 /* CoreDataAppModelConvertable.swift in Sources */,
CD822FF525D6817000A05501 /* TodayForecastCell.swift in Sources */,
CD37D401260DF744002669D6 /* SettingsCell.swift in Sources */,
CEDE4E8525EEFD56007457E9 /* WdtHourlySummariesArray.swift in Sources */,
CDC6125725E7AB1A00188DA7 /* TodayAirQualityCell.swift in Sources */,
CD8B60AE263819400055CB3F /* NWSAlertViewController.swift in Sources */,
CD593BCF2608A50900C93428 /* ForecastHourlyCell.swift in Sources */,
87DE8CF4263C267B00E1C8D4 /* LegacySettings.swift in Sources */,
CD1DDD332602305200AC62B2 /* ForecastInfoCell.swift in Sources */,
CEDE4E8425EEFD56007457E9 /* WdtDailySummariesArray.swift in Sources */,
CDEE8AD725DA882200C289DE /* ForecastPeriodButton.swift in Sources */,
CDE18DD125D166F900C80ED9 /* ForecastViewController.swift in Sources */,
CE8962AC26175DF500CA274A /* CoreCurrentWeather.swift in Sources */,
CE9F01BB261B31A6009BA500 /* CoreDataError.swift in Sources */,
CD39F2F525DE9571009FE398 /* ArrowButton.swift in Sources */,
CE8962A526175DF500CA274A /* _CoreHourlyWeather.swift in Sources */,
CEDE4E8325EEFD56007457E9 /* WdtLocationResponse.swift in Sources */,
CD37D3FE260DF726002669D6 /* SettingsCellFactory.swift in Sources */,
CD8E041625F8F91B001785B6 /* ForecastCellFactory.swift in Sources */,
CE8962A826175DF500CA274A /* _CoreCurrentWeather.swift in Sources */,
......@@ -1831,14 +1774,12 @@
CE0457952632B3F900B3C19A /* NotificationsCoordinator.swift in Sources */,
CD86246925E672A20097F3FB /* PrecipButton.swift in Sources */,
CD3F6E6C25FA5A90002DB99B /* PeriodButtonProtocol.swift in Sources */,
CEDE4E8225EEFD56007457E9 /* WdtWeatherCode.swift in Sources */,
CE04561F26282325003D252B /* NWSCurrentEventsReponse.swift in Sources */,
CD1DDD30260218AE00AC62B2 /* DaysControlView.swift in Sources */,
CE578FE725FB415F00E8B85D /* LocationsViewModel.swift in Sources */,
CD82300A25D6B2AF00A05501 /* AppTabBarController.swift in Sources */,
CE9F01C1261B3776009BA500 /* CoreDataUtils.swift in Sources */,
CDC6126225E8DAB800188DA7 /* MoonPhaseCell.swift in Sources */,
CEBAC2122638968D00A89681 /* FIPSSource.swift in Sources */,
CD37D3D6260C93B3002669D6 /* MenuCellFactory.swift in Sources */,
CD8B60AD263819400055CB3F /* NWSAlertInfoBlockTableViewCell.swift in Sources */,
87D815AC2636D61D0015A6D1 /* NWSAlertViewModel.swift in Sources */,
......@@ -1847,7 +1788,6 @@
CD6B303B2572680C004B34B3 /* SelfSizingButton.swift in Sources */,
CD9B6B1125DBC723001D9B80 /* CubicCurveAlgorithm.swift in Sources */,
CD8B60B4263819790055CB3F /* NotificationsViewController.swift in Sources */,
CEC5270025E7BACB00DA58A5 /* WdtLocation.swift in Sources */,
CE8962A726175DF500CA274A /* _CoreLocation.swift in Sources */,
CD67617026259D220079D273 /* RadarMapLayersController.swift in Sources */,
CEC8FBAF2639756A0001A6BF /* OnboardingViewController.swift in Sources */,
......@@ -1859,13 +1799,11 @@
CD4742D0261200500061AC95 /* TodayAlertCell.swift in Sources */,
CD615FCC2655299A00B717DB /* NotificationName+Localization.swift in Sources */,
CD15DB4225DA806C00024727 /* TodayForecastTimePeriodCell.swift in Sources */,
CEE0A179262FA9650044C257 /* DelayedSaveStorage.swift in Sources */,
CE0456242629C04C003D252B /* NWSAlertsManager.swift in Sources */,
CD7F3ABD262443260041C478 /* MapPinnedLayersView.swift in Sources */,
CD5692B42653D46200A3CDBE /* SplashAnimationViewController.swift in Sources */,
CE8962AB26175DF500CA274A /* CorePollutant.swift in Sources */,
87D815AA2636D5E60015A6D1 /* NWSAlertCoordinator.swift in Sources */,
CEC5276025E92DDA00DA58A5 /* WdtHourlySummary.swift in Sources */,
CE8962AF26175DF500CA274A /* CoreDailyWeather.swift in Sources */,
CDE2BF252609D9140085C930 /* ForecastWindButton.swift in Sources */,
CD32CE16260C77C600235081 /* MenuHeaderButton.swift in Sources */,
......@@ -1890,7 +1828,6 @@
CEF959A626035A2600975FAA /* DeviceLocationMonitor.swift in Sources */,
CD32CDFF260B2E5400235081 /* ForecastDescriptionView.swift in Sources */,
CD16A17A262D81880028E74A /* UserDefaultsWrapper.swift in Sources */,
CEC5275D25E8E50B00DA58A5 /* WdtDailySummary.swift in Sources */,
CD8B60AC263819400055CB3F /* NWSForecastOfficeTableViewCell.swift in Sources */,
CE9F01B8261B2DB6009BA500 /* _CoreAppData.swift in Sources */,
CDE18DCD25D1666700C80ED9 /* ForecastCoordinator.swift in Sources */,
......@@ -1916,8 +1853,6 @@
CDF8F12D26208E7B00DB384A /* MapCurrentTimeView.swift in Sources */,
CE6F5F0C263C8B3D00973137 /* SmartTextProvider.swift in Sources */,
CEC7D8EE2639FE2700B8836D /* OLInAppStoreManager.swift in Sources */,
CEFB857226174F7A00C5CDD2 /* Storage.swift in Sources */,
87DE8D01263C4ADD00E1C8D4 /* WdtHealth.swift in Sources */,
CD82300725D6A73F00A05501 /* TodayConditionButton.swift in Sources */,
CE13B7EB2624805F007CBD4D /* Constants.swift in Sources */,
CDC6126A25E90C8800188DA7 /* GraphLineSettings.swift in Sources */,
......@@ -1929,7 +1864,6 @@
CE578FE525FB415F00E8B85D /* CityCell.swift in Sources */,
CEAFF0A325E0FF0800DF4EBF /* LocationManager.swift in Sources */,
CEAD00A12577B2D5003596AD /* StuffThatIsPresentInTheMainProject.swift in Sources */,
CEDE4E8925EEFFEF007457E9 /* WdtDayNight.swift in Sources */,
CE13B820262480B3007CBD4D /* AdLogger.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
......
......@@ -12,7 +12,7 @@
<key>OneWeatherNotificationServiceExtension.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>44</integer>
<integer>45</integer>
</dict>
<key>PG (Playground) 1.xcscheme</key>
<dict>
......
......@@ -2,6 +2,9 @@
<Workspace
version = "1.0">
<FileRef
location = "group:WDTWeatherSource/WDTWeatherSource.xcodeproj">
</FileRef>
<FileRef
location = "group:OneWeatherCore/OneWeatherCore.xcodeproj">
</FileRef>
<FileRef
......
......@@ -8,6 +8,7 @@
import UIKit
import FBAudienceNetwork
import OneWeatherCore
class AdCacheManager: NSObject {
......
......@@ -13,6 +13,7 @@ import FBAudienceNetwork
import GoogleMobileAds
import IASDKCore
import Flurry_iOS_SDK
import OneWeatherCore
public class AdManager {
......
......@@ -6,6 +6,7 @@
//
import Foundation
import OneWeatherCore
public class Analytics {
private let services: [AnalyticsService]
......
......@@ -13,7 +13,7 @@ import MoEngage
import GoogleMobileAds
import Swarm
import DTBiOSSDK
import OneWeatherCore
@main
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class AppCoordinator: Coordinator {
//Private
......
......@@ -7,6 +7,7 @@
//
import Foundation
import OneWeatherCore
class DeeplinksRouter {
static let urlScheme = "oneweather"
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class NWSAlertCoordinator: Coordinator {
private let parentViewController:UIViewController
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class NotificationsCoordinator: Coordinator {
private let parentViewController:UIViewController
......
......@@ -8,9 +8,9 @@
import UIKit
import StoreKit
import OneWeatherCore
// Ported from ObjC
protocol OLInAppStoreManagerUIDelegate: AnyObject {
func viewControllerForPresentation() -> UIViewController
}
......
......@@ -18,6 +18,7 @@ import CryptoKit
import FBAudienceNetwork
import PSMLocationSDK
import DTBiOSSDK
import OneWeatherCore
fileprivate let APP_NAME = "ONE_WEATHER"
fileprivate let DEVICE_TYPE = "IOS"
......
......@@ -7,6 +7,7 @@
import Foundation
import CoreLocation
import UIKit
import OneWeatherCore
internal protocol DeviceLocationMonitorDelegate: AnyObject {
func deviceLocationMonitor(_ monitor: DeviceLocationMonitor, didUpdateLocation newLocation: PartialLocation)
......
......@@ -9,6 +9,8 @@ import Foundation
import CoreLocation
import UIKit
import MoEngage
import OneWeatherCore
import WDTWeatherSource
public protocol LocationManagerDelegate: AnyObject {
func locationManager(_ locationManager: LocationManager, changedSelectedLocation newLocation: Location?)
......
......@@ -6,6 +6,7 @@
//
import Foundation
import OneWeatherCore
private enum Macro: String {
case feelsLikeTemp = "#FEELS_LIKE_TEMP#"
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class WeatherImageProvider {
private enum DefaultImage: String {
......
......@@ -9,6 +9,7 @@
import Foundation
import Firebase
import FirebaseRemoteConfig
import OneWeatherCore
public struct AppConfig: Codable {
let popularCities: [GeoNamesPlace]?
......
......@@ -6,7 +6,7 @@
//
import Foundation
import OneWeatherCore
public enum BlendHealthSourceError: Error {
case insufficientLocationInfo
......
......@@ -7,6 +7,7 @@
import Foundation
import UIKit
import OneWeatherCore
// MARK: - HealthCenter
struct BlendHealthCenter: Codable {
......
......@@ -6,6 +6,7 @@
//
import Foundation
import OneWeatherCore
class BlendFIPSSource: FIPSSource {
private let log = Logger(componentName: "BlendFIPSSource")
......
......@@ -6,6 +6,7 @@
//
import Foundation
import OneWeatherCore
struct NWSCurrentEventsReponse: Codable {
struct Wrapper: Codable {
......
......@@ -6,6 +6,7 @@
//
import Foundation
import OneWeatherCore
class NWSAlertInfoParser {
private var strongSelfReference: NWSAlertInfoParser?
......
......@@ -6,6 +6,7 @@
//
import Foundation
import OneWeatherCore
public enum NWSError: Error {
case insufficientLocationInfo
......
......@@ -8,6 +8,7 @@
import UIKit
import Firebase
import FirebaseRemoteConfig
import OneWeatherCore
class PopularCitiesManager {
public static let shared = PopularCitiesManager()
......
......@@ -8,6 +8,7 @@
import Foundation
import MoEngage
import OneWeatherCore
public class PushNotificationsManager: NSObject {
// MARK: - Private
......
......@@ -8,6 +8,7 @@
import Foundation
import CoreLocation
import XMLCoder
import OneWeatherCore
public enum WdtWeatherSourceError: Error {
case insufficientLocationInfo
......
......@@ -7,6 +7,7 @@
import Foundation
import CoreData
import OneWeatherCore
public class CoreDataStorage: Storage {
private var lastSavedAppData: AppData? = nil
......
import Foundation
import CoreData
import OneWeatherCore
@objc(CoreAirQuality)
open class CoreAirQuality: _CoreAirQuality, CoreDataAppModelConvertable {
......
import Foundation
import CoreData
import OneWeatherCore
@objc(CoreAppData)
open class CoreAppData: _CoreAppData, CoreDataAppModelConvertable {
......
import Foundation
import CoreData
import OneWeatherCore
@objc(CoreCurrentWeather)
open class CoreCurrentWeather: _CoreCurrentWeather, CoreDataAppModelConvertable {
......
import Foundation
import CoreData
import OneWeatherCore
@objc(CoreDailyWeather)
open class CoreDailyWeather: _CoreDailyWeather, CoreDataAppModelConvertable {
......
import Foundation
import CoreData
import OneWeatherCore
@objc(CoreHealth)
open class CoreHealth: _CoreHealth, CoreDataAppModelConvertable {
......
import Foundation
import CoreData
import OneWeatherCore
@objc(CoreHourlyWeather)
open class CoreHourlyWeather: _CoreHourlyWeather, CoreDataAppModelConvertable {
......
import Foundation
import CoreData
import OneWeatherCore
@objc(CoreLocation)
open class CoreLocation: _CoreLocation, CoreDataAppModelConvertable {
......
import Foundation
import CoreData
import OneWeatherCore
@objc(CoreNWSAlert)
open class CoreNWSAlert: _CoreNWSAlert, CoreDataAppModelConvertable {
......
import Foundation
import CoreData
import OneWeatherCore
@objc(CoreNotifications)
open class CoreNotifications: _CoreNotifications, CoreDataAppModelConvertable {
......
import Foundation
import CoreData
import OneWeatherCore
@objc(CorePollutant)
open class CorePollutant: _CorePollutant, CoreDataAppModelConvertable {
......
......@@ -6,10 +6,9 @@
//
import Foundation
import OneWeatherCore
class LegacyMigrationManager {
typealias Completion = ([PartialLocation]?, MigrationError?) -> ()
private enum MigrationResult: String {
......
......@@ -6,6 +6,7 @@
//
import Foundation
import OneWeatherCore
// Used in Settings and Widget
enum LegacyTempUnits: Int {
......
......@@ -6,6 +6,7 @@
//
import Foundation
import OneWeatherCore
/// locations list, selectedIndex, error
public typealias StorageCompletion = ([Location]?, Int?, Error?) -> ()
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class NavigationCityButton: UIControl {
//Private
......
......@@ -7,6 +7,7 @@
import UIKit
import SnapKit
import OneWeatherCore
class ForecastDetailPeriodButton: UIControl, PeriodButtonProtocol {
private let kGraphInset:CGFloat = 10
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class ForecastPeriodButton: UIControl, PeriodButtonProtocol {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class ForecastWindButton: UIControl, PeriodButtonProtocol {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
public protocol PeriodButtonProtocol: UIControl {
init()
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
private struct DailyGraphPoints {
let maxTempPoints: [CGPoint]
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
public struct ThemeManager {
public struct Colors {
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class MoonPhaseCell: UITableViewCell {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class PrecipButton: UIControl {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class PrecipitationCell: UITableViewCell {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
private struct CircleSegment {
let chord:CGFloat
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
protocol ForecastDailyCellDelegate: AnyObject {
func timePeriodCell(cell:ForecastDailyCell, didSelectButtonAt index:Int)
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class ForecastDayCell: UITableViewCell {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class ForecastHourlyCell: UITableViewCell {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class ForecastInfoCell: UITableViewCell {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class ForecastWindSpeedCell: UITableViewCell {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
protocol DaysControlViewDelegate: AnyObject {
func didSelectButtonAt(index:Int)
......
......@@ -7,6 +7,7 @@
import UIKit
import SnapKit
import OneWeatherCore
protocol CityCellDelegate: AnyObject {
func didSelect(location:PartialLocation)
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class LocationCellFactory: CellFactoryProtocol {
//Private
......
......@@ -6,6 +6,8 @@
//
import UIKit
import OneWeatherCore
//MARK:- Cities View Controller
class LocationViewController:UIViewController {
//Private
......
......@@ -7,6 +7,7 @@
import UIKit
import AlgoliaSearchClient
import OneWeatherCore
public protocol LocationsViewModelDelegate: AnyObject {
func viewModelDidChange(model:LocationsViewModel)
......
......@@ -7,6 +7,7 @@
import UIKit
import SafariServices
import OneWeatherCore
class MenuViewController: UIViewController {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
fileprivate enum NWSAlertCellType: Int {
case header = 0
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class NWSAlertInfoBlockTableViewCell: UITableViewCell {
let titleLabel = UILabel()
......
......@@ -7,6 +7,7 @@
import UIKit
import SnapKit
import OneWeatherCore
class NWSForecastOfficeTableViewCell: UITableViewCell {
var alert: NWSAlert?
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class NWSAlertCell: UITableViewCell {
// TODO: we don't have an image for this one?
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class NotificationsViewController: UIViewController {
private let coordinator: NotificationsCoordinator
......
......@@ -6,7 +6,7 @@
//
import UIKit
import OneWeatherCore
class OnboardingViewController: UIViewController {
private let coordinator: OnboardingCoordinator
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
private enum Section {
case weather
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class MapLegendSevereView: UIView {
//Private
......
......@@ -7,6 +7,7 @@
import UIKit
import SnapKit
import OneWeatherCore
private enum LegendType {
case weather
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class MapLegendWeatherView: UIView {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
protocol MapPinnedLayersViewDelegate: AnyObject {
func didSelectLayer(layerId:String)
......
......@@ -8,6 +8,7 @@
import UIKit
import MapKit
import Swarm
import OneWeatherCore
class RadarViewController: UIViewController {
//Private
......
......@@ -8,6 +8,7 @@
import UIKit
import Localize_Swift
import CoreLocation
import OneWeatherCore
public enum SettingsRow {
case theme
......
......@@ -7,6 +7,7 @@
import UIKit
import Localize_Swift
import OneWeatherCore
class SettingsDetailsCellFactory: CellFactoryProtocol {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class SettingsThemeCell: UITableViewCell {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class PollutantView: UIView {
//Private
......
......@@ -7,6 +7,7 @@
import UIKit
import Cirque
import OneWeatherCore
private struct AirQualityDataType: CirqueDataType {
var color: UIColor
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class TodayAlertCell: UITableViewCell {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
public enum TodayCellType:Int {
case alert = 0
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class TodayConditionButton: UIControl {
//Private
......
......@@ -7,6 +7,7 @@
import UIKit
import SnapKit
import OneWeatherCore
class TodayConditionsCell: UITableViewCell {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class DayTimeView: UIView {
private let dayTimeLabel = UILabel()
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class TodayDayTimesCell: UITableViewCell {
//Private
......
......@@ -7,6 +7,7 @@
import UIKit
import SnapKit
import OneWeatherCore
class TodayForecastCell: UITableViewCell {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
class TodayForecastTimePeriodCell: UITableViewCell {
//Private
......
......@@ -6,6 +6,7 @@
//
import UIKit
import OneWeatherCore
protocol ForecastViewModelDelegate:ViewModelDelegate {
func selectedWeatherDidChange()
......
......@@ -9,6 +9,7 @@ import UIKit
import StoreKit
import MessageUI
import PKHUD
import OneWeatherCore
protocol MenuViewModelDelegate: ViewModelDelegate {
func viewControllerForPresentation() -> UIViewController
......
......@@ -6,6 +6,7 @@
//
import Foundation
import OneWeatherCore
class NWSAlertViewModel: ViewModelProtocol {
public weak var delegate: ViewModelDelegate?
......
......@@ -6,6 +6,7 @@
//
import Foundation
import OneWeatherCore
protocol NotificationsViewModelDelegate: ViewModelDelegate {
func viewModel(_ viewModel: NotificationsViewModel, didSelect alert: NWSAlert)
......
......@@ -8,6 +8,7 @@
import UIKit
import Swarm
import CoreLocation
import OneWeatherCore
protocol RadarViewModelDelegate: ViewModelDelegate {
func viewModel(model:RadarViewModel, didSelectLayer layer:RadarLayer)
......
......@@ -7,6 +7,7 @@
import UIKit
import Localize_Swift
import OneWeatherCore
class SettingsDetailsViewModel: ViewModelProtocol {
//Public
......
......@@ -6,7 +6,7 @@
//
import UIKit
import OneWeatherCore
class SettingsViewModel: ViewModelProtocol {
let settings = Settings.shared
......
......@@ -7,6 +7,7 @@
import UIKit
import PSMLocationSDK
import OneWeatherCore
protocol TodayViewModelDelegate: ViewModelDelegate {
func showOnboarding(viewModel: TodayViewModel)
......
......@@ -62,6 +62,11 @@
CD91685B26552FD000EC04EF /* DefaultSettingsMetric.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD615FD1265529DE00B717DB /* DefaultSettingsMetric.swift */; };
CD91685E26552FEC00EC04EF /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD91685C26552FEB00EC04EF /* Logger.swift */; };
CD91685F26552FEC00EC04EF /* Global.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD91685D26552FEC00EC04EF /* Global.swift */; };
CDBC243F2656740E00F9F4E2 /* AppData.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDBC243E2656740E00F9F4E2 /* AppData.swift */; };
CDFE458D26566BD50021A29F /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE458C26566BD50021A29F /* Storage.swift */; };
CDFE458F26566C5F0021A29F /* DelayedSaveStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE458E26566C5E0021A29F /* DelayedSaveStorage.swift */; };
CDFE459426566D7B0021A29F /* HealthSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE459326566D7B0021A29F /* HealthSource.swift */; };
CDFE459626566D860021A29F /* FIPSSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE459526566D860021A29F /* FIPSSource.swift */; };
CFF31454D7A391AB1E363560 /* Pods_OneWeatherCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6ED82DCC42318CBA9646976 /* Pods_OneWeatherCore.framework */; };
/* End PBXBuildFile section */
......@@ -136,6 +141,11 @@
CD91685626552FAE00EC04EF /* MulticastDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MulticastDelegate.swift; sourceTree = "<group>"; };
CD91685C26552FEB00EC04EF /* Logger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = "<group>"; };
CD91685D26552FEC00EC04EF /* Global.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Global.swift; sourceTree = "<group>"; };
CDBC243E2656740E00F9F4E2 /* AppData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppData.swift; sourceTree = "<group>"; };
CDFE458C26566BD50021A29F /* Storage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Storage.swift; sourceTree = "<group>"; };
CDFE458E26566C5E0021A29F /* DelayedSaveStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelayedSaveStorage.swift; sourceTree = "<group>"; };
CDFE459326566D7B0021A29F /* HealthSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HealthSource.swift; sourceTree = "<group>"; };
CDFE459526566D860021A29F /* FIPSSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FIPSSource.swift; sourceTree = "<group>"; };
F6ED82DCC42318CBA9646976 /* Pods_OneWeatherCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OneWeatherCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
......@@ -212,6 +222,8 @@
CD615F65265523A400B717DB /* OneWeatherCore */ = {
isa = PBXGroup;
children = (
CDFE459026566D4D0021A29F /* Sources */,
CDFE458B26566BC20021A29F /* Storage */,
CD615F852655269100B717DB /* Protocols */,
CD615F942655269200B717DB /* ModelObjects */,
CD615FB72655293100B717DB /* Extensions */,
......@@ -219,7 +231,6 @@
CD91685526552F9900EC04EF /* Common */,
CD615FA3265528F000B717DB /* HelperTypes.swift */,
CD615F66265523A400B717DB /* OneWeatherCore.h */,
CD615F802655243C00B717DB /* WeatherSource.swift */,
CD615F67265523A400B717DB /* Info.plist */,
);
path = OneWeatherCore;
......@@ -281,6 +292,7 @@
CD615F942655269200B717DB /* ModelObjects */ = {
isa = PBXGroup;
children = (
CDBC243E2656740E00F9F4E2 /* AppData.swift */,
CD615F862655269200B717DB /* GeoNamesPlace.swift */,
CD615F872655269200B717DB /* Location.swift */,
CD550FB92655318D00257FB5 /* RadarLayers */,
......@@ -347,6 +359,25 @@
path = Common;
sourceTree = "<group>";
};
CDFE458B26566BC20021A29F /* Storage */ = {
isa = PBXGroup;
children = (
CDFE458C26566BD50021A29F /* Storage.swift */,
CDFE458E26566C5E0021A29F /* DelayedSaveStorage.swift */,
);
path = Storage;
sourceTree = "<group>";
};
CDFE459026566D4D0021A29F /* Sources */ = {
isa = PBXGroup;
children = (
CD615F802655243C00B717DB /* WeatherSource.swift */,
CDFE459526566D860021A29F /* FIPSSource.swift */,
CDFE459326566D7B0021A29F /* HealthSource.swift */,
);
path = Sources;
sourceTree = "<group>";
};
F74D258AC48F534A8A9B9EDB /* Frameworks */ = {
isa = PBXGroup;
children = (
......@@ -494,9 +525,11 @@
CD2D55D626553384007B70F4 /* UserDefaultsValue.swift in Sources */,
CD550FBA265531A100257FB5 /* RadarLayer.swift in Sources */,
CD550FBB265531A100257FB5 /* RadarLayerType.swift in Sources */,
CDBC243F2656740E00F9F4E2 /* AppData.swift in Sources */,
CD550FBC265531A100257FB5 /* WeatherLayerType.swift in Sources */,
CD550FBD265531A100257FB5 /* SevereLayerType.swift in Sources */,
CD91685826552FD000EC04EF /* DefaultSettingsFactory.swift in Sources */,
CDFE459626566D860021A29F /* FIPSSource.swift in Sources */,
CD91685926552FD000EC04EF /* DefaultSettings.swift in Sources */,
CD91685A26552FD000EC04EF /* DefaultSettingsImperial.swift in Sources */,
CD91685B26552FD000EC04EF /* DefaultSettingsMetric.swift in Sources */,
......@@ -505,6 +538,7 @@
CD2D55E0265537DC007B70F4 /* NWSAlertInfoBlock.swift in Sources */,
CD91685726552FAE00EC04EF /* MulticastDelegate.swift in Sources */,
CD615FB92655295C00B717DB /* UIColor+Highlight.swift in Sources */,
CDFE458D26566BD50021A29F /* Storage.swift in Sources */,
CD615FBA2655295C00B717DB /* UIViewController+Alert.swift in Sources */,
CD615FBB2655295C00B717DB /* UITabBarController+Append.swift in Sources */,
CD615FBD2655295C00B717DB /* Measurement+String.swift in Sources */,
......@@ -529,7 +563,9 @@
CD615F96265526E700B717DB /* UpdatableModelObjectInTime.swift in Sources */,
CD615F97265526E700B717DB /* PartialLocation.swift in Sources */,
CD615F98265526E700B717DB /* GeoNamesPlace.swift in Sources */,
CDFE458F26566C5F0021A29F /* DelayedSaveStorage.swift in Sources */,
CD615F99265526E700B717DB /* Location.swift in Sources */,
CDFE459426566D7B0021A29F /* HealthSource.swift in Sources */,
CD615F9A265526E700B717DB /* CurrentWeather.swift in Sources */,
CD615F9B265526E700B717DB /* DailyWeather.swift in Sources */,
CD615F9C265526E700B717DB /* HourlyWeather.swift in Sources */,
......
......@@ -7,9 +7,8 @@
import Foundation
/// Does the work on the main thread. If the current thread is the main thread, does the work in place. Otherwise dispatches it asynchronously.
func onMain(_ work: @escaping () -> ()) {
public func onMain(_ work: @escaping () -> ()) {
if Thread.isMainThread {
work()
}
......
......@@ -9,14 +9,14 @@
import Foundation
@propertyWrapper
struct UserDefaultsOptionalValue<T> {
let key: String
public struct UserDefaultsOptionalValue<T> {
public let key: String
init(_ key: String) {
public init(_ key: String) {
self.key = key
}
var wrappedValue: T? {
public var wrappedValue: T? {
get {
return UserDefaults.standard.object(forKey: key) as? T
}
......
......@@ -9,16 +9,16 @@
import Foundation
@propertyWrapper
struct UserDefaultsValue<T> {
let key: String
let defaultValue: T
public struct UserDefaultsValue<T> {
public let key: String
public let defaultValue: T
init(_ key: String, defaultValue: T) {
public init(_ key: String, defaultValue: T) {
self.key = key
self.defaultValue = defaultValue
}
var wrappedValue: T {
public var wrappedValue: T {
get {
return (UserDefaults.standard.object(forKey: key) as? T) ?? defaultValue
}
......
......@@ -8,8 +8,8 @@
import Foundation
@propertyWrapper
struct UserDefaultsUnitValue<T> {
var wrappedValue: T {
public struct UserDefaultsUnitValue<T> {
public var wrappedValue: T {
get {
// TODO: If we will ever have 2 instances of UserDefaultsUnitValue with the same key at the same time, this cache will become desynchronized.
if let knownValue = lastKnownValue {
......
......@@ -7,7 +7,7 @@
import UIKit
extension CACornerMask {
public extension CACornerMask {
static var all:CACornerMask {
return [.layerMinXMinYCorner, .layerMaxXMinYCorner, .layerMinXMaxYCorner, .layerMaxXMaxYCorner]
}
......
......@@ -8,7 +8,7 @@
import UIKit
import CoreLocation
extension CLAuthorizationStatus {
public extension CLAuthorizationStatus {
var localized:String {
switch self {
case .notDetermined:
......
......@@ -7,7 +7,7 @@
import UIKit
extension Calendar {
public extension Calendar {
static func timeZoneCalendar(timeZone:TimeZone) -> Self {
var cal = Calendar(identifier: current.identifier)
cal.timeZone = timeZone
......
......@@ -7,7 +7,7 @@
import UIKit
extension Dimension {
public extension Dimension {
private static var fmt: MeasurementFormatter {
let fmt = MeasurementFormatter()
fmt.unitStyle = .long
......
......@@ -7,7 +7,7 @@
import UIKit
extension UIApplication {
public extension UIApplication {
static func openSettings() {
guard
let bundleIdentifier = Bundle.main.bundleIdentifier,
......
......@@ -7,7 +7,7 @@
import UIKit
extension UIColor {
public extension UIColor {
private var isDarkColor: Bool {
var r, g, b, a: CGFloat
(r, g, b, a) = (0, 0, 0, 0)
......
......@@ -7,7 +7,7 @@
import UIKit
extension UIStackView {
public extension UIStackView {
func removeAll() {
arrangedSubviews.forEach {
removeArrangedSubview($0)
......
......@@ -7,7 +7,7 @@
import UIKit
extension UITabBarController {
public extension UITabBarController {
func add(viewController:UIViewController) {
var existingControllers = [UIViewController]()
existingControllers.append(contentsOf: self.viewControllers ?? [UIViewController]())
......
......@@ -7,8 +7,7 @@
import UIKit
extension UITabBarController {
public extension UITabBarController {
/**
Show or hide the tab bar.
......
......@@ -7,7 +7,7 @@
import UIKit
extension UITableView {
public extension UITableView {
//Variable-height UITableView tableHeaderView with autolayout
func layoutTableHeaderView() {
guard let headerView = self.tableHeaderView else { return }
......
......@@ -7,7 +7,7 @@
import UIKit
extension UIViewController {
public extension UIViewController {
func showAlert(withTitle title:String?, message:String?) {
guard message != nil, message?.isEmpty == false else { return }
......
......@@ -7,6 +7,6 @@
import UIKit
extension UnitPressure {
public extension UnitPressure {
static let atmosphere = UnitPressure(symbol: "atm", converter: UnitConverterLinear(coefficient: 101325))
}
......@@ -7,12 +7,16 @@
import Foundation
/// A helper structure, so that we could work with CoreAppData the same way we work with everything else.
public struct AppData: Equatable {
public let selectedIndex: Int?
public let locations: [Location]
public init(selectedIndex: Int?, locations: [Location]) {
self.selectedIndex = selectedIndex
self.locations = locations
}
public static func == (lhs: Self, rhs: Self) -> Bool {
guard lhs.selectedIndex == rhs.selectedIndex else { return false }
guard lhs.locations.count == rhs.locations.count else { return false }
......
......@@ -8,22 +8,22 @@
import Foundation
final class GeoNamesPlace: NSObject {
var latitude: String?
var longitude : String?
var city : String?
var state : String?
var stateCode : String?
var country : String?
var countryCode : String?
var fcodeName : String? // airport if airport
var toponymName : String? // airport name if fcodeName is airport
var fipsCode: String?
var optionalCityId: String?
var nickname: String?
func detailName() -> String {
final public class GeoNamesPlace: NSObject {
public var latitude: String?
public var longitude : String?
public var city : String?
public var state : String?
public var stateCode : String?
public var country : String?
public var countryCode : String?
public var fcodeName : String? // airport if airport
public var toponymName : String? // airport name if fcodeName is airport
public var fipsCode: String?
public var optionalCityId: String?
public var nickname: String?
public func detailName() -> String {
var sb = String()
if let state = self.state {
if state.count > 0 {
......@@ -44,7 +44,7 @@ final class GeoNamesPlace: NSObject {
return sb
}
var fullName: String {
public var fullName: String {
get {
var sb = String()
......@@ -67,7 +67,7 @@ final class GeoNamesPlace: NSObject {
}
}
override func isEqual(_ object: Any?) -> Bool {
public override func isEqual(_ object: Any?) -> Bool {
if let object = object as? GeoNamesPlace {
return fullName == object.fullName
} else {
......@@ -75,7 +75,7 @@ final class GeoNamesPlace: NSObject {
}
}
override var hash: Int {
public override var hash: Int {
return fullName.hashValue
}
}
......@@ -96,15 +96,15 @@ extension GeoNamesPlace: Codable {
}
extension GeoNamesPlace: PartialLocation {
var deviceLocation: Bool {
public var deviceLocation: Bool {
return false
}
var selected: Bool? {
public var selected: Bool? {
return nil
}
var nameForDisplay: String {
public var nameForDisplay: String {
//TODO: refactor this
var sb = String()
let hasCity = cityName?.count ?? 0 > 0
......@@ -142,27 +142,27 @@ extension GeoNamesPlace: PartialLocation {
return sb
}
var lat: String? {
public var lat: String? {
return latitude
}
var lon: String? {
public var lon: String? {
return longitude
}
var countryName: String? {
public var countryName: String? {
return country
}
var region: String? {
public var region: String? {
return stateCode ?? state
}
var cityName: String? {
public var cityName: String? {
return city
}
var timeZoneIdentifier: String? {
public var timeZoneIdentifier: String? {
return nil
}
}
......@@ -11,6 +11,12 @@ public struct Health: Equatable, Hashable {
public let lastUpdateTime: Date
public let airQuality: AirQuality?
public let pollutants: [String: Pollutant]
public init(lastUpdateTime: Date, airQuality: AirQuality?, pollutants: [String : Pollutant]) {
self.lastUpdateTime = lastUpdateTime
self.airQuality = airQuality
self.pollutants = pollutants
}
}
......
......@@ -85,6 +85,27 @@ public struct Location {
return false
}
public init(deviceLocation: Bool, lastWeatherUpdateDate: Date? = nil, coordinates: CLLocationCoordinate2D? = nil, imageName: String? = "ny_bridge", notifications: Notifications? = nil, countryCode: String? = nil, countryName: String? = nil, region: String? = nil, cityName: String? = nil, nickname: String? = nil, zip: String? = nil, fipsCode: String? = nil, timeZone: TimeZone, today: CurrentWeather? = nil, daily: [DailyWeather] = [DailyWeather](), hourly: [HourlyWeather] = [HourlyWeather](), dayTimeForecast: [DayTimeWeather] = [DayTimeWeather](), health: Health? = nil) {
self.deviceLocation = deviceLocation
self.lastWeatherUpdateDate = lastWeatherUpdateDate
self.coordinates = coordinates
self.imageName = imageName
self.notifications = notifications
self.countryCode = countryCode
self.countryName = countryName
self.region = region
self.cityName = cityName
self.nickname = nickname
self.zip = zip
self.fipsCode = fipsCode
self.timeZone = timeZone
self.today = today
self.daily = daily
self.hourly = hourly
self.dayTimeForecast = dayTimeForecast
self.health = health
}
public func equals(to other: Location, onlyCompareLocationInfo: Bool) -> Bool {
guard !onlyCompareLocationInfo else {
return self == other
......
......@@ -24,6 +24,20 @@ public struct NWSAlert: Codable, Equatable, Hashable {
public var extendedInfo: NWSAlertExtendedInfo?
public init(weatherID: String, messageID: String, messageURL: String, severityLevel: NWSSeverityLevel, description: String, expires: Date, weatherMessage: String? = nil, city: String = "", timeZone: TimeZone? = nil, read: Bool = false, extendedInfo: NWSAlertExtendedInfo? = nil) {
self.weatherID = weatherID
self.messageID = messageID
self.messageURL = messageURL
self.severityLevel = severityLevel
self.description = description
self.expires = expires
self.weatherMessage = weatherMessage
self.city = city
self.timeZone = timeZone
self.read = read
self.extendedInfo = extendedInfo
}
// Used to encode/decode a JSON object to send/recieve data with the server
private enum CodingKeys: String, CodingKey {
case weatherID
......
......@@ -13,4 +13,12 @@ public struct NWSAlertExtendedInfo: Codable {
public var expiryDate: Date?
public var issuer: String?
public var infoBlocks: [NWSAlertInfoBlock] = [NWSAlertInfoBlock]()
public init(title: String? = nil, issueDate: Date? = nil, expiryDate: Date? = nil, issuer: String? = nil, infoBlocks: [NWSAlertInfoBlock] = [NWSAlertInfoBlock]()) {
self.title = title
self.issueDate = issueDate
self.expiryDate = expiryDate
self.issuer = issuer
self.infoBlocks = infoBlocks
}
}
......@@ -8,6 +8,11 @@
import Foundation
public struct NWSAlertInfoBlock: Codable {
let title: String?
let text: String?
public let title: String?
public let text: String?
public init(title: String?, text: String?) {
self.title = title
self.text = text
}
}
......@@ -10,4 +10,9 @@ import Foundation
public struct Notifications {
public let updatedAt: Date
public var nwsAlerts: [NWSAlert]
public init(updatedAt: Date, nwsAlerts: [NWSAlert]) {
self.updatedAt = updatedAt
self.nwsAlerts = nwsAlerts
}
}
......@@ -10,4 +10,9 @@ import UIKit
public struct RadarLayer {
public var pinned = false
public let layer:RadarLayerType
public init(pinned: Bool = false, layer: RadarLayerType) {
self.pinned = pinned
self.layer = layer
}
}
......@@ -34,6 +34,25 @@ public struct DailyWeather: Equatable, Hashable {
public var moonState: CelestialState? = .normal
public var moonPhase: MoonPhase? = .unknown
public init(lastTimeUpdated: Date, date: Date, timeZone: TimeZone, weekDay: WeekDay, type: WeatherType = .unknown, minTemp: Temperature? = nil, maxTemp: Temperature? = nil, windSpeed: WindSpeed? = nil, windDirection: WindDirection? = nil, precipitationProbability: Percent? = nil, sunrise: Date? = nil, sunset: Date? = nil, sunState: CelestialState? = .normal, moonrise: Date? = nil, moonset: Date? = nil, moonState: CelestialState? = .normal, moonPhase: MoonPhase? = .unknown) {
self.lastTimeUpdated = lastTimeUpdated
self.date = date
self.timeZone = timeZone
self.weekDay = weekDay
self.type = type
self.minTemp = minTemp
self.maxTemp = maxTemp
self.windSpeed = windSpeed
self.windDirection = windDirection
self.precipitationProbability = precipitationProbability
self.sunrise = sunrise
self.sunset = sunset
self.sunState = sunState
self.moonrise = moonrise
self.moonset = moonset
self.moonState = moonState
self.moonPhase = moonPhase
}
}
extension DailyWeather: UpdatableModelObjectInTime {
......
......@@ -24,6 +24,22 @@ public struct HourlyWeather: Equatable, Hashable {
public var precipitationProbability: Percent?
public var humidity: Percent?
public init(lastTimeUpdated: Date, date: Date, timeZone: TimeZone, weekDay: WeekDay, type: WeatherType = .unknown, isDay: Bool, temp: Temperature? = nil, dewPoint: Temperature? = nil, apparentTemp: Temperature? = nil, windSpeed: WindSpeed? = nil, windDirection: WindDirection? = nil, precipitationProbability: Percent? = nil, humidity: Percent? = nil) {
self.lastTimeUpdated = lastTimeUpdated
self.date = date
self.timeZone = timeZone
self.weekDay = weekDay
self.type = type
self.isDay = isDay
self.temp = temp
self.dewPoint = dewPoint
self.apparentTemp = apparentTemp
self.windSpeed = windSpeed
self.windDirection = windDirection
self.precipitationProbability = precipitationProbability
self.humidity = humidity
}
}
extension HourlyWeather: UpdatableModelObjectInTime {
......
......@@ -8,7 +8,7 @@
import UIKit
import Localize_Swift
protocol SettingsDelegate: AnyObject {
public protocol SettingsDelegate: AnyObject {
func settingsDidChange()
}
......@@ -17,7 +17,7 @@ public enum AppTheme: Int {
case dark
case system
var nameForEvent: String {
public var nameForEvent: String {
switch self {
case .light:
return "light"
......@@ -30,8 +30,8 @@ public enum AppTheme: Int {
}
public class Settings {
static let shared = Settings()
let delegate = MulticastDelegate<SettingsDelegate>()
public static let shared = Settings()
public let delegate = MulticastDelegate<SettingsDelegate>()
private init() {}
@UserDefaultsBasicValue(key: "app_theme")
......
//
// Storage.swift
// 1Weather
//
// Created by Demid Merzlyakov on 02.04.2021.
//
import Foundation
/// locations list, selectedIndex, error
public typealias StorageCompletion = ([Location]?, Int?, Error?) -> ()
public protocol Storage {
func save(locations: [Location], selectedIndex: Int?)
func load(completion: @escaping StorageCompletion)
}
......@@ -24,7 +24,6 @@ target '1Weather' do
pod 'BezierKit'
pod 'lottie-ios'
pod 'Cirque', :git => 'https://github.com/StepanetsDmtry/Cirque.git'
pod 'XMLCoder', '~> 0.12.0'
pod 'AlgoliaSearchClient', '~> 8.2'
pod 'Flurry-iOS-SDK/FlurrySDK'
pod 'MoEngage-iOS-SDK'
......@@ -47,9 +46,16 @@ end
#Core
target 'OneWeatherCore' do
project 'OneWeatherCore/OneWeatherCore.project'
pod 'XMLCoder', '~> 0.12.0'
shared_pods
end
#WDTSource
target 'WDTWeatherSource' do
project 'WDTWeatherSource/WDTWeatherSource.project'
pod 'XMLCoder', '~> 0.12.0'
end
target 'OneWeatherNotificationServiceExtension' do
use_frameworks!
pod 'MORichNotification'
......
......@@ -291,6 +291,6 @@ SPEC CHECKSUMS:
Swarm: 95393cd52715744c94e3a8475bc20b4de5d79f35
XMLCoder: f884dfa894a6f8b7dce465e4f6c02963bf17e028
PODFILE CHECKSUM: 0c2405861201a6f3431e069ff33505c571f65b68
PODFILE CHECKSUM: ebf44ef327964f2b037721dca363b54494224177
COCOAPODS: 1.10.1
......@@ -291,6 +291,6 @@ SPEC CHECKSUMS:
Swarm: 95393cd52715744c94e3a8475bc20b4de5d79f35
XMLCoder: f884dfa894a6f8b7dce465e4f6c02963bf17e028
PODFILE CHECKSUM: 0c2405861201a6f3431e069ff33505c571f65b68
PODFILE CHECKSUM: ebf44ef327964f2b037721dca363b54494224177
COCOAPODS: 1.10.1
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -2676,31 +2676,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
## XMLCoder
MIT License
Copyright (c) 2018-2019 Shawn Moore and XMLCoder contributors
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.
## lottie-ios
Apache License
......
......@@ -2875,37 +2875,6 @@ THE SOFTWARE.
</dict>
<dict>
<key>FooterText</key>
<string>MIT License
Copyright (c) 2018-2019 Shawn Moore and XMLCoder contributors
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.
</string>
<key>License</key>
<string>MIT</string>
<key>Title</key>
<string>XMLCoder</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>FooterText</key>
<string> Apache License
Version 2.0, January 2004
https://www.apache.org/licenses/
......
......@@ -23,7 +23,6 @@ ${BUILT_PRODUCTS_DIR}/PKHUD/PKHUD.framework
${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework
${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework
${BUILT_PRODUCTS_DIR}/Swarm/Swarm.framework
${BUILT_PRODUCTS_DIR}/XMLCoder/XMLCoder.framework
${BUILT_PRODUCTS_DIR}/lottie-ios/Lottie.framework
${BUILT_PRODUCTS_DIR}/mopub-ios-sdk/MoPubSDK.framework
${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework
......
......@@ -22,7 +22,6 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PKHUD.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Swarm.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/XMLCoder.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Lottie.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MoPubSDK.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework
......
......@@ -23,7 +23,6 @@ ${BUILT_PRODUCTS_DIR}/PKHUD/PKHUD.framework
${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework
${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework
${BUILT_PRODUCTS_DIR}/Swarm/Swarm.framework
${BUILT_PRODUCTS_DIR}/XMLCoder/XMLCoder.framework
${BUILT_PRODUCTS_DIR}/lottie-ios/Lottie.framework
${BUILT_PRODUCTS_DIR}/mopub-ios-sdk/MoPubSDK.framework
${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework
......
......@@ -22,7 +22,6 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PKHUD.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Swarm.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/XMLCoder.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Lottie.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MoPubSDK.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework
......
......@@ -199,7 +199,6 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then
install_framework "${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework"
install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework"
install_framework "${BUILT_PRODUCTS_DIR}/Swarm/Swarm.framework"
install_framework "${BUILT_PRODUCTS_DIR}/XMLCoder/XMLCoder.framework"
install_framework "${BUILT_PRODUCTS_DIR}/lottie-ios/Lottie.framework"
install_framework "${BUILT_PRODUCTS_DIR}/mopub-ios-sdk/MoPubSDK.framework"
install_framework "${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework"
......@@ -230,7 +229,6 @@ if [[ "$CONFIGURATION" == "Release" ]]; then
install_framework "${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework"
install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework"
install_framework "${BUILT_PRODUCTS_DIR}/Swarm/Swarm.framework"
install_framework "${BUILT_PRODUCTS_DIR}/XMLCoder/XMLCoder.framework"
install_framework "${BUILT_PRODUCTS_DIR}/lottie-ios/Lottie.framework"
install_framework "${BUILT_PRODUCTS_DIR}/mopub-ios-sdk/MoPubSDK.framework"
install_framework "${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework"
......
......@@ -3,12 +3,12 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
EXCLUDED_ARCHS[sdk=appletvsimulator*] = arm64
EXCLUDED_ARCHS[sdk=iphoneos*] = i386 x86_64
EXCLUDED_ARCHS[sdk=watchsimulator*] = arm64
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AlgoliaSearchClient" "${PODS_CONFIGURATION_BUILD_DIR}/BezierKit" "${PODS_CONFIGURATION_BUILD_DIR}/Cirque" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseABTesting" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseRemoteConfig" "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift" "${PODS_CONFIGURATION_BUILD_DIR}/Logging" "${PODS_CONFIGURATION_BUILD_DIR}/PKHUD" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm" "${PODS_CONFIGURATION_BUILD_DIR}/XMLCoder" "${PODS_CONFIGURATION_BUILD_DIR}/lottie-ios" "${PODS_CONFIGURATION_BUILD_DIR}/mopub-ios-sdk" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/AmazonPublisherServicesSDK/APS_iOS_SDK-4.0.0" "${PODS_ROOT}/FBAudienceNetwork/Static" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/Fyber_Marketplace_SDK/IASDKCore" "${PODS_ROOT}/Fyber_Marketplace_SDK/IASDKMRAID" "${PODS_ROOT}/Fyber_Marketplace_SDK/IASDKVideo" "${PODS_ROOT}/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework-Current" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" "${PODS_ROOT}/GoogleMobileAdsMediationFacebook/FacebookAdapter-6.4.1.0" "${PODS_ROOT}/GoogleMobileAdsMediationFyber/FyberAdapter-7.8.5.0" "${PODS_ROOT}/GoogleMobileAdsMediationMoPub/MoPubAdapter-5.16.2.0" "${PODS_ROOT}/GoogleUserMessagingPlatform/Frameworks/Release" "${PODS_ROOT}/MORichNotification/Frameworks" "${PODS_ROOT}/MoEngage-iOS-SDK/Frameworks" "${PODS_XCFRAMEWORKS_BUILD_DIR}/DTBiOSSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FacebookAdapter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FirebaseAnalytics" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FyberAdapter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAppMeasurement" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleMobileAds" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MoPubAdapter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/UserMessagingPlatform"
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AlgoliaSearchClient" "${PODS_CONFIGURATION_BUILD_DIR}/BezierKit" "${PODS_CONFIGURATION_BUILD_DIR}/Cirque" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseABTesting" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseRemoteConfig" "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift" "${PODS_CONFIGURATION_BUILD_DIR}/Logging" "${PODS_CONFIGURATION_BUILD_DIR}/PKHUD" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm" "${PODS_CONFIGURATION_BUILD_DIR}/lottie-ios" "${PODS_CONFIGURATION_BUILD_DIR}/mopub-ios-sdk" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/AmazonPublisherServicesSDK/APS_iOS_SDK-4.0.0" "${PODS_ROOT}/FBAudienceNetwork/Static" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/Fyber_Marketplace_SDK/IASDKCore" "${PODS_ROOT}/Fyber_Marketplace_SDK/IASDKMRAID" "${PODS_ROOT}/Fyber_Marketplace_SDK/IASDKVideo" "${PODS_ROOT}/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework-Current" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" "${PODS_ROOT}/GoogleMobileAdsMediationFacebook/FacebookAdapter-6.4.1.0" "${PODS_ROOT}/GoogleMobileAdsMediationFyber/FyberAdapter-7.8.5.0" "${PODS_ROOT}/GoogleMobileAdsMediationMoPub/MoPubAdapter-5.16.2.0" "${PODS_ROOT}/GoogleUserMessagingPlatform/Frameworks/Release" "${PODS_ROOT}/MORichNotification/Frameworks" "${PODS_ROOT}/MoEngage-iOS-SDK/Frameworks" "${PODS_XCFRAMEWORKS_BUILD_DIR}/DTBiOSSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FacebookAdapter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FirebaseAnalytics" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FyberAdapter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAppMeasurement" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleMobileAds" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MoPubAdapter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/UserMessagingPlatform"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) FBSDKCOCOAPODS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AlgoliaSearchClient/AlgoliaSearchClient.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BezierKit/BezierKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cirque/Cirque.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseABTesting/FirebaseABTesting.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK/Flurry_iOS_SDK.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift/Localize_Swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Logging/Logging.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PKHUD/PKHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm/Swarm.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/XMLCoder/XMLCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/lottie-ios/Lottie.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/mopub-ios-sdk/MoPubSDK.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/Fyber_Marketplace_SDK" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include"
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AlgoliaSearchClient/AlgoliaSearchClient.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BezierKit/BezierKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cirque/Cirque.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseABTesting/FirebaseABTesting.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK/Flurry_iOS_SDK.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift/Localize_Swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Logging/Logging.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PKHUD/PKHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm/Swarm.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/lottie-ios/Lottie.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/mopub-ios-sdk/MoPubSDK.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/Fyber_Marketplace_SDK" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Flurry-iOS-SDK/Flurry" "${PODS_ROOT}/mopub-ios-sdk/MoPubSDK/Internal/Viewability/OMSDK"
OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"sqlite3" -l"stdc++" -l"xml2" -l"xml2.2" -l"z" -framework "AVFoundation" -framework "AVKit" -framework "AdSupport" -framework "AlgoliaSearchClient" -framework "AudioToolbox" -framework "BezierKit" -framework "CFNetwork" -framework "Cirque" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreLocation" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "DTBiOSSDK" -framework "EventKit" -framework "EventKitUI" -framework "FBAudienceNetwork" -framework "FBLPromises" -framework "FBSDKCoreKit" -framework "FacebookAdapter" -framework "FirebaseABTesting" -framework "FirebaseAnalytics" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseCrashlytics" -framework "FirebaseInstallations" -framework "FirebaseRemoteConfig" -framework "Flurry_iOS_SDK" -framework "Foundation" -framework "FyberAdapter" -framework "GoogleAppMeasurement" -framework "GoogleDataTransport" -framework "GoogleMobileAds" -framework "GoogleUtilities" -framework "IASDKCore" -framework "IASDKMRAID" -framework "IASDKVideo" -framework "Localize_Swift" -framework "Logging" -framework "Lottie" -framework "MOAnalytics" -framework "MOMessaging" -framework "MORichNotification" -framework "MediaPlayer" -framework "MessageUI" -framework "MoEngage" -framework "MoEngageCore" -framework "MoPubAdapter" -framework "MoPubSDK" -framework "MobileCoreServices" -framework "PKHUD" -framework "QuartzCore" -framework "SafariServices" -framework "Security" -framework "SnapKit" -framework "StoreKit" -framework "Swarm" -framework "SystemConfiguration" -framework "UIKit" -framework "UserMessagingPlatform" -framework "UserNotifications" -framework "UserNotificationsUI" -framework "WebKit" -framework "XMLCoder" -framework "nanopb" -weak_framework "Accelerate" -weak_framework "Accounts" -weak_framework "AdSupport" -weak_framework "AppTrackingTransparency" -weak_framework "AudioToolbox" -weak_framework "CFNetwork" -weak_framework "CoreGraphics" -weak_framework "CoreMotion" -weak_framework "CoreTelephony" -weak_framework "Foundation" -weak_framework "JavaScriptCore" -weak_framework "LocalAuthentication" -weak_framework "QuartzCore" -weak_framework "SafariServices" -weak_framework "Security" -weak_framework "Social" -weak_framework "StoreKit" -weak_framework "SystemConfiguration" -weak_framework "UIKit" -weak_framework "UserNotifications" -weak_framework "VideoToolbox" -weak_framework "WebKit"
OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"sqlite3" -l"stdc++" -l"xml2" -l"xml2.2" -l"z" -framework "AVFoundation" -framework "AVKit" -framework "AdSupport" -framework "AlgoliaSearchClient" -framework "AudioToolbox" -framework "BezierKit" -framework "CFNetwork" -framework "Cirque" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreLocation" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "DTBiOSSDK" -framework "EventKit" -framework "EventKitUI" -framework "FBAudienceNetwork" -framework "FBLPromises" -framework "FBSDKCoreKit" -framework "FacebookAdapter" -framework "FirebaseABTesting" -framework "FirebaseAnalytics" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseCrashlytics" -framework "FirebaseInstallations" -framework "FirebaseRemoteConfig" -framework "Flurry_iOS_SDK" -framework "Foundation" -framework "FyberAdapter" -framework "GoogleAppMeasurement" -framework "GoogleDataTransport" -framework "GoogleMobileAds" -framework "GoogleUtilities" -framework "IASDKCore" -framework "IASDKMRAID" -framework "IASDKVideo" -framework "Localize_Swift" -framework "Logging" -framework "Lottie" -framework "MOAnalytics" -framework "MOMessaging" -framework "MORichNotification" -framework "MediaPlayer" -framework "MessageUI" -framework "MoEngage" -framework "MoEngageCore" -framework "MoPubAdapter" -framework "MoPubSDK" -framework "MobileCoreServices" -framework "PKHUD" -framework "QuartzCore" -framework "SafariServices" -framework "Security" -framework "SnapKit" -framework "StoreKit" -framework "Swarm" -framework "SystemConfiguration" -framework "UIKit" -framework "UserMessagingPlatform" -framework "UserNotifications" -framework "UserNotificationsUI" -framework "WebKit" -framework "nanopb" -weak_framework "Accelerate" -weak_framework "Accounts" -weak_framework "AdSupport" -weak_framework "AppTrackingTransparency" -weak_framework "AudioToolbox" -weak_framework "CFNetwork" -weak_framework "CoreGraphics" -weak_framework "CoreMotion" -weak_framework "CoreTelephony" -weak_framework "Foundation" -weak_framework "JavaScriptCore" -weak_framework "LocalAuthentication" -weak_framework "QuartzCore" -weak_framework "SafariServices" -weak_framework "Security" -weak_framework "Social" -weak_framework "StoreKit" -weak_framework "SystemConfiguration" -weak_framework "UIKit" -weak_framework "UserNotifications" -weak_framework "VideoToolbox" -weak_framework "WebKit"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
......
......@@ -3,12 +3,12 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
EXCLUDED_ARCHS[sdk=appletvsimulator*] = arm64
EXCLUDED_ARCHS[sdk=iphoneos*] = i386 x86_64
EXCLUDED_ARCHS[sdk=watchsimulator*] = arm64
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AlgoliaSearchClient" "${PODS_CONFIGURATION_BUILD_DIR}/BezierKit" "${PODS_CONFIGURATION_BUILD_DIR}/Cirque" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseABTesting" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseRemoteConfig" "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift" "${PODS_CONFIGURATION_BUILD_DIR}/Logging" "${PODS_CONFIGURATION_BUILD_DIR}/PKHUD" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm" "${PODS_CONFIGURATION_BUILD_DIR}/XMLCoder" "${PODS_CONFIGURATION_BUILD_DIR}/lottie-ios" "${PODS_CONFIGURATION_BUILD_DIR}/mopub-ios-sdk" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/AmazonPublisherServicesSDK/APS_iOS_SDK-4.0.0" "${PODS_ROOT}/FBAudienceNetwork/Static" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/Fyber_Marketplace_SDK/IASDKCore" "${PODS_ROOT}/Fyber_Marketplace_SDK/IASDKMRAID" "${PODS_ROOT}/Fyber_Marketplace_SDK/IASDKVideo" "${PODS_ROOT}/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework-Current" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" "${PODS_ROOT}/GoogleMobileAdsMediationFacebook/FacebookAdapter-6.4.1.0" "${PODS_ROOT}/GoogleMobileAdsMediationFyber/FyberAdapter-7.8.5.0" "${PODS_ROOT}/GoogleMobileAdsMediationMoPub/MoPubAdapter-5.16.2.0" "${PODS_ROOT}/GoogleUserMessagingPlatform/Frameworks/Release" "${PODS_ROOT}/MORichNotification/Frameworks" "${PODS_ROOT}/MoEngage-iOS-SDK/Frameworks" "${PODS_XCFRAMEWORKS_BUILD_DIR}/DTBiOSSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FacebookAdapter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FirebaseAnalytics" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FyberAdapter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAppMeasurement" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleMobileAds" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MoPubAdapter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/UserMessagingPlatform"
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AlgoliaSearchClient" "${PODS_CONFIGURATION_BUILD_DIR}/BezierKit" "${PODS_CONFIGURATION_BUILD_DIR}/Cirque" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseABTesting" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseRemoteConfig" "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift" "${PODS_CONFIGURATION_BUILD_DIR}/Logging" "${PODS_CONFIGURATION_BUILD_DIR}/PKHUD" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm" "${PODS_CONFIGURATION_BUILD_DIR}/lottie-ios" "${PODS_CONFIGURATION_BUILD_DIR}/mopub-ios-sdk" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/AmazonPublisherServicesSDK/APS_iOS_SDK-4.0.0" "${PODS_ROOT}/FBAudienceNetwork/Static" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/Fyber_Marketplace_SDK/IASDKCore" "${PODS_ROOT}/Fyber_Marketplace_SDK/IASDKMRAID" "${PODS_ROOT}/Fyber_Marketplace_SDK/IASDKVideo" "${PODS_ROOT}/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework-Current" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" "${PODS_ROOT}/GoogleMobileAdsMediationFacebook/FacebookAdapter-6.4.1.0" "${PODS_ROOT}/GoogleMobileAdsMediationFyber/FyberAdapter-7.8.5.0" "${PODS_ROOT}/GoogleMobileAdsMediationMoPub/MoPubAdapter-5.16.2.0" "${PODS_ROOT}/GoogleUserMessagingPlatform/Frameworks/Release" "${PODS_ROOT}/MORichNotification/Frameworks" "${PODS_ROOT}/MoEngage-iOS-SDK/Frameworks" "${PODS_XCFRAMEWORKS_BUILD_DIR}/DTBiOSSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FacebookAdapter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FirebaseAnalytics" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FyberAdapter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAppMeasurement" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleMobileAds" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MoPubAdapter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/UserMessagingPlatform"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) FBSDKCOCOAPODS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AlgoliaSearchClient/AlgoliaSearchClient.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BezierKit/BezierKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cirque/Cirque.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseABTesting/FirebaseABTesting.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK/Flurry_iOS_SDK.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift/Localize_Swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Logging/Logging.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PKHUD/PKHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm/Swarm.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/XMLCoder/XMLCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/lottie-ios/Lottie.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/mopub-ios-sdk/MoPubSDK.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/Fyber_Marketplace_SDK" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include"
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AlgoliaSearchClient/AlgoliaSearchClient.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/BezierKit/BezierKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Cirque/Cirque.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit/FBSDKCoreKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseABTesting/FirebaseABTesting.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK/Flurry_iOS_SDK.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift/Localize_Swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Logging/Logging.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PKHUD/PKHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm/Swarm.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/lottie-ios/Lottie.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/mopub-ios-sdk/MoPubSDK.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/Fyber_Marketplace_SDK" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Flurry-iOS-SDK/Flurry" "${PODS_ROOT}/mopub-ios-sdk/MoPubSDK/Internal/Viewability/OMSDK"
OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"sqlite3" -l"stdc++" -l"xml2" -l"xml2.2" -l"z" -framework "AVFoundation" -framework "AVKit" -framework "AdSupport" -framework "AlgoliaSearchClient" -framework "AudioToolbox" -framework "BezierKit" -framework "CFNetwork" -framework "Cirque" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreLocation" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "DTBiOSSDK" -framework "EventKit" -framework "EventKitUI" -framework "FBAudienceNetwork" -framework "FBLPromises" -framework "FBSDKCoreKit" -framework "FacebookAdapter" -framework "FirebaseABTesting" -framework "FirebaseAnalytics" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseCrashlytics" -framework "FirebaseInstallations" -framework "FirebaseRemoteConfig" -framework "Flurry_iOS_SDK" -framework "Foundation" -framework "FyberAdapter" -framework "GoogleAppMeasurement" -framework "GoogleDataTransport" -framework "GoogleMobileAds" -framework "GoogleUtilities" -framework "IASDKCore" -framework "IASDKMRAID" -framework "IASDKVideo" -framework "Localize_Swift" -framework "Logging" -framework "Lottie" -framework "MOAnalytics" -framework "MOMessaging" -framework "MORichNotification" -framework "MediaPlayer" -framework "MessageUI" -framework "MoEngage" -framework "MoEngageCore" -framework "MoPubAdapter" -framework "MoPubSDK" -framework "MobileCoreServices" -framework "PKHUD" -framework "QuartzCore" -framework "SafariServices" -framework "Security" -framework "SnapKit" -framework "StoreKit" -framework "Swarm" -framework "SystemConfiguration" -framework "UIKit" -framework "UserMessagingPlatform" -framework "UserNotifications" -framework "UserNotificationsUI" -framework "WebKit" -framework "XMLCoder" -framework "nanopb" -weak_framework "Accelerate" -weak_framework "Accounts" -weak_framework "AdSupport" -weak_framework "AppTrackingTransparency" -weak_framework "AudioToolbox" -weak_framework "CFNetwork" -weak_framework "CoreGraphics" -weak_framework "CoreMotion" -weak_framework "CoreTelephony" -weak_framework "Foundation" -weak_framework "JavaScriptCore" -weak_framework "LocalAuthentication" -weak_framework "QuartzCore" -weak_framework "SafariServices" -weak_framework "Security" -weak_framework "Social" -weak_framework "StoreKit" -weak_framework "SystemConfiguration" -weak_framework "UIKit" -weak_framework "UserNotifications" -weak_framework "VideoToolbox" -weak_framework "WebKit"
OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"sqlite3" -l"stdc++" -l"xml2" -l"xml2.2" -l"z" -framework "AVFoundation" -framework "AVKit" -framework "AdSupport" -framework "AlgoliaSearchClient" -framework "AudioToolbox" -framework "BezierKit" -framework "CFNetwork" -framework "Cirque" -framework "CoreGraphics" -framework "CoreImage" -framework "CoreLocation" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "DTBiOSSDK" -framework "EventKit" -framework "EventKitUI" -framework "FBAudienceNetwork" -framework "FBLPromises" -framework "FBSDKCoreKit" -framework "FacebookAdapter" -framework "FirebaseABTesting" -framework "FirebaseAnalytics" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseCrashlytics" -framework "FirebaseInstallations" -framework "FirebaseRemoteConfig" -framework "Flurry_iOS_SDK" -framework "Foundation" -framework "FyberAdapter" -framework "GoogleAppMeasurement" -framework "GoogleDataTransport" -framework "GoogleMobileAds" -framework "GoogleUtilities" -framework "IASDKCore" -framework "IASDKMRAID" -framework "IASDKVideo" -framework "Localize_Swift" -framework "Logging" -framework "Lottie" -framework "MOAnalytics" -framework "MOMessaging" -framework "MORichNotification" -framework "MediaPlayer" -framework "MessageUI" -framework "MoEngage" -framework "MoEngageCore" -framework "MoPubAdapter" -framework "MoPubSDK" -framework "MobileCoreServices" -framework "PKHUD" -framework "QuartzCore" -framework "SafariServices" -framework "Security" -framework "SnapKit" -framework "StoreKit" -framework "Swarm" -framework "SystemConfiguration" -framework "UIKit" -framework "UserMessagingPlatform" -framework "UserNotifications" -framework "UserNotificationsUI" -framework "WebKit" -framework "nanopb" -weak_framework "Accelerate" -weak_framework "Accounts" -weak_framework "AdSupport" -weak_framework "AppTrackingTransparency" -weak_framework "AudioToolbox" -weak_framework "CFNetwork" -weak_framework "CoreGraphics" -weak_framework "CoreMotion" -weak_framework "CoreTelephony" -weak_framework "Foundation" -weak_framework "JavaScriptCore" -weak_framework "LocalAuthentication" -weak_framework "QuartzCore" -weak_framework "SafariServices" -weak_framework "Security" -weak_framework "Social" -weak_framework "StoreKit" -weak_framework "SystemConfiguration" -weak_framework "UIKit" -weak_framework "UserNotifications" -weak_framework "VideoToolbox" -weak_framework "WebKit"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
......
......@@ -1768,4 +1768,29 @@ redistribute it freely, subject to the following restrictions:
3. This notice may not be removed or altered from any source
distribution.
## XMLCoder
MIT License
Copyright (c) 2018-2019 Shawn Moore and XMLCoder contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Generated by CocoaPods - https://cocoapods.org
......@@ -1842,6 +1842,37 @@ redistribute it freely, subject to the following restrictions:
</dict>
<dict>
<key>FooterText</key>
<string>MIT License
Copyright (c) 2018-2019 Shawn Moore and XMLCoder contributors
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.
</string>
<key>License</key>
<string>MIT</string>
<key>Title</key>
<string>XMLCoder</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>FooterText</key>
<string>Generated by CocoaPods - https://cocoapods.org</string>
<key>Title</key>
<string></string>
......
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb"
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm" "${PODS_CONFIGURATION_BUILD_DIR}/XMLCoder" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift/Localize_Swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm/Swarm.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/Fyber_Marketplace_SDK" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include"
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift/Localize_Swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm/Swarm.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/XMLCoder/XMLCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/Fyber_Marketplace_SDK" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks'
OTHER_LDFLAGS = $(inherited) -l"c++" -l"z" -framework "CoreTelephony" -framework "FBLPromises" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseCrashlytics" -framework "FirebaseInstallations" -framework "Foundation" -framework "GoogleDataTransport" -framework "GoogleUtilities" -framework "Localize_Swift" -framework "Security" -framework "Swarm" -framework "SystemConfiguration" -framework "UIKit" -framework "nanopb"
OTHER_LDFLAGS = $(inherited) -l"c++" -l"z" -framework "CoreTelephony" -framework "FBLPromises" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseCrashlytics" -framework "FirebaseInstallations" -framework "Foundation" -framework "GoogleDataTransport" -framework "GoogleUtilities" -framework "Localize_Swift" -framework "Security" -framework "Swarm" -framework "SystemConfiguration" -framework "UIKit" -framework "XMLCoder" -framework "nanopb"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
......
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb"
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm" "${PODS_CONFIGURATION_BUILD_DIR}/XMLCoder" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift/Localize_Swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm/Swarm.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/Fyber_Marketplace_SDK" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include"
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport/GoogleDataTransport.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Localize-Swift/Localize_Swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Swarm/Swarm.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/XMLCoder/XMLCoder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/Fyber_Marketplace_SDK" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks'
OTHER_LDFLAGS = $(inherited) -l"c++" -l"z" -framework "CoreTelephony" -framework "FBLPromises" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseCrashlytics" -framework "FirebaseInstallations" -framework "Foundation" -framework "GoogleDataTransport" -framework "GoogleUtilities" -framework "Localize_Swift" -framework "Security" -framework "Swarm" -framework "SystemConfiguration" -framework "UIKit" -framework "nanopb"
OTHER_LDFLAGS = $(inherited) -l"c++" -l"z" -framework "CoreTelephony" -framework "FBLPromises" -framework "FirebaseCore" -framework "FirebaseCoreDiagnostics" -framework "FirebaseCrashlytics" -framework "FirebaseInstallations" -framework "Foundation" -framework "GoogleDataTransport" -framework "GoogleUtilities" -framework "Localize_Swift" -framework "Security" -framework "Swarm" -framework "SystemConfiguration" -framework "UIKit" -framework "XMLCoder" -framework "nanopb"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>${CURRENT_PROJECT_VERSION}</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>
# Acknowledgements
This application makes use of the following third party libraries:
## XMLCoder
MIT License
Copyright (c) 2018-2019 Shawn Moore and XMLCoder contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Generated by CocoaPods - https://cocoapods.org
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>FooterText</key>
<string>This application makes use of the following third party libraries:</string>
<key>Title</key>
<string>Acknowledgements</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>FooterText</key>
<string>MIT License
Copyright (c) 2018-2019 Shawn Moore and XMLCoder contributors
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.
</string>
<key>License</key>
<string>MIT</string>
<key>Title</key>
<string>XMLCoder</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>FooterText</key>
<string>Generated by CocoaPods - https://cocoapods.org</string>
<key>Title</key>
<string></string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
</array>
<key>StringsTable</key>
<string>Acknowledgements</string>
<key>Title</key>
<string>Acknowledgements</string>
</dict>
</plist>
#import <Foundation/Foundation.h>
@interface PodsDummy_Pods_WDTWeatherSource : NSObject
@end
@implementation PodsDummy_Pods_WDTWeatherSource
@end
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
FOUNDATION_EXPORT double Pods_WDTWeatherSourceVersionNumber;
FOUNDATION_EXPORT const unsigned char Pods_WDTWeatherSourceVersionString[];
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/XMLCoder"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/XMLCoder/XMLCoder.framework/Headers"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks'
OTHER_LDFLAGS = $(inherited) -framework "XMLCoder"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/..
PODS_ROOT = ${SRCROOT}/../Pods
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
framework module Pods_WDTWeatherSource {
umbrella header "Pods-WDTWeatherSource-umbrella.h"
export *
module * { export * }
}
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/XMLCoder"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/XMLCoder/XMLCoder.framework/Headers"
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks'
OTHER_LDFLAGS = $(inherited) -framework "XMLCoder"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/..
PODS_ROOT = ${SRCROOT}/../Pods
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 50;
objects = {
/* Begin PBXBuildFile section */
3A8E26C271B48D84635E8C95 /* Pods_WDTWeatherSource.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96BE59B7A83D9CFA327BF4AA /* Pods_WDTWeatherSource.framework */; };
CDBC243D265673B100F9F4E2 /* WdtWeatherSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDBC243C265673B100F9F4E2 /* WdtWeatherSource.swift */; };
CDFE45AB26566E7A0021A29F /* WDTWeatherSource.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CDFE45A126566E7A0021A29F /* WDTWeatherSource.framework */; };
CDFE45B026566E7A0021A29F /* WDTWeatherSourceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE45AF26566E7A0021A29F /* WDTWeatherSourceTests.swift */; };
CDFE45B226566E7A0021A29F /* WDTWeatherSource.h in Headers */ = {isa = PBXBuildFile; fileRef = CDFE45A426566E7A0021A29F /* WDTWeatherSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
CDFE45C926566F280021A29F /* WdtLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE45C726566F270021A29F /* WdtLocation.swift */; };
CDFE45CA26566F280021A29F /* WdtSurfaceObservation.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE45C026566F260021A29F /* WdtSurfaceObservation.swift */; };
CDFE45CB26566F280021A29F /* WdtDailySummary.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE45BE26566F260021A29F /* WdtDailySummary.swift */; };
CDFE45CC26566F280021A29F /* WdtHealth.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE45BF26566F260021A29F /* WdtHealth.swift */; };
CDFE45CD26566F280021A29F /* WdtHourlySummary.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE45C826566F280021A29F /* WdtHourlySummary.swift */; };
CDFE45CE26566F480021A29F /* WdtLocationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE45C126566F270021A29F /* WdtLocationResponse.swift */; };
CDFE45CF26566F480021A29F /* WdtWeatherCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE45C226566F270021A29F /* WdtWeatherCode.swift */; };
CDFE45D026566F480021A29F /* WdtDailySummariesArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE45C326566F270021A29F /* WdtDailySummariesArray.swift */; };
CDFE45D126566F480021A29F /* WdtHourlySummariesArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE45C426566F270021A29F /* WdtHourlySummariesArray.swift */; };
CDFE45D226566F480021A29F /* WdtDayNight.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE45C526566F270021A29F /* WdtDayNight.swift */; };
CDFE45D526566F620021A29F /* OneWeatherCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CDFE45D426566F620021A29F /* OneWeatherCore.framework */; };
CDFE45D626566F620021A29F /* OneWeatherCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CDFE45D426566F620021A29F /* OneWeatherCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
CDFE45AC26566E7A0021A29F /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = CDFE459826566E7A0021A29F /* Project object */;
proxyType = 1;
remoteGlobalIDString = CDFE45A026566E7A0021A29F;
remoteInfo = WDTWeatherSource;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
CDFE45D726566F620021A29F /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
CDFE45D626566F620021A29F /* OneWeatherCore.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
2FC441E45268762FD5A08342 /* Pods-WDTWeatherSource.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WDTWeatherSource.release.xcconfig"; path = "Target Support Files/Pods-WDTWeatherSource/Pods-WDTWeatherSource.release.xcconfig"; sourceTree = "<group>"; };
96BE59B7A83D9CFA327BF4AA /* Pods_WDTWeatherSource.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WDTWeatherSource.framework; sourceTree = BUILT_PRODUCTS_DIR; };
B7E99288E63F28CB0F6FD4BC /* Pods-WDTWeatherSource.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WDTWeatherSource.debug.xcconfig"; path = "Target Support Files/Pods-WDTWeatherSource/Pods-WDTWeatherSource.debug.xcconfig"; sourceTree = "<group>"; };
CDBC243C265673B100F9F4E2 /* WdtWeatherSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WdtWeatherSource.swift; sourceTree = "<group>"; };
CDFE45A126566E7A0021A29F /* WDTWeatherSource.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = WDTWeatherSource.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CDFE45A426566E7A0021A29F /* WDTWeatherSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WDTWeatherSource.h; sourceTree = "<group>"; };
CDFE45A526566E7A0021A29F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
CDFE45AA26566E7A0021A29F /* WDTWeatherSourceTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WDTWeatherSourceTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
CDFE45AF26566E7A0021A29F /* WDTWeatherSourceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WDTWeatherSourceTests.swift; sourceTree = "<group>"; };
CDFE45B126566E7A0021A29F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
CDFE45BE26566F260021A29F /* WdtDailySummary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WdtDailySummary.swift; sourceTree = "<group>"; };
CDFE45BF26566F260021A29F /* WdtHealth.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WdtHealth.swift; sourceTree = "<group>"; };
CDFE45C026566F260021A29F /* WdtSurfaceObservation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WdtSurfaceObservation.swift; sourceTree = "<group>"; };
CDFE45C126566F270021A29F /* WdtLocationResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WdtLocationResponse.swift; sourceTree = "<group>"; };
CDFE45C226566F270021A29F /* WdtWeatherCode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WdtWeatherCode.swift; sourceTree = "<group>"; };
CDFE45C326566F270021A29F /* WdtDailySummariesArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WdtDailySummariesArray.swift; sourceTree = "<group>"; };
CDFE45C426566F270021A29F /* WdtHourlySummariesArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WdtHourlySummariesArray.swift; sourceTree = "<group>"; };
CDFE45C526566F270021A29F /* WdtDayNight.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WdtDayNight.swift; sourceTree = "<group>"; };
CDFE45C726566F270021A29F /* WdtLocation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WdtLocation.swift; sourceTree = "<group>"; };
CDFE45C826566F280021A29F /* WdtHourlySummary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WdtHourlySummary.swift; sourceTree = "<group>"; };
CDFE45D426566F620021A29F /* OneWeatherCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = OneWeatherCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
CDFE459E26566E7A0021A29F /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
CDFE45D526566F620021A29F /* OneWeatherCore.framework in Frameworks */,
3A8E26C271B48D84635E8C95 /* Pods_WDTWeatherSource.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
CDFE45A726566E7A0021A29F /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
CDFE45AB26566E7A0021A29F /* WDTWeatherSource.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
6D78A3C78212E658AE349CC9 /* Pods */ = {
isa = PBXGroup;
children = (
B7E99288E63F28CB0F6FD4BC /* Pods-WDTWeatherSource.debug.xcconfig */,
2FC441E45268762FD5A08342 /* Pods-WDTWeatherSource.release.xcconfig */,
);
name = Pods;
path = ../Pods;
sourceTree = "<group>";
};
CDFE459726566E7A0021A29F = {
isa = PBXGroup;
children = (
CDFE45A326566E7A0021A29F /* WDTWeatherSource */,
CDFE45AE26566E7A0021A29F /* WDTWeatherSourceTests */,
CDFE45A226566E7A0021A29F /* Products */,
CDFE45D326566F620021A29F /* Frameworks */,
6D78A3C78212E658AE349CC9 /* Pods */,
);
sourceTree = "<group>";
};
CDFE45A226566E7A0021A29F /* Products */ = {
isa = PBXGroup;
children = (
CDFE45A126566E7A0021A29F /* WDTWeatherSource.framework */,
CDFE45AA26566E7A0021A29F /* WDTWeatherSourceTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
CDFE45A326566E7A0021A29F /* WDTWeatherSource */ = {
isa = PBXGroup;
children = (
CDFE45C626566F270021A29F /* HelperObjects */,
CDFE45C726566F270021A29F /* WdtLocation.swift */,
CDFE45C026566F260021A29F /* WdtSurfaceObservation.swift */,
CDFE45BE26566F260021A29F /* WdtDailySummary.swift */,
CDFE45C826566F280021A29F /* WdtHourlySummary.swift */,
CDFE45BF26566F260021A29F /* WdtHealth.swift */,
CDFE45A426566E7A0021A29F /* WDTWeatherSource.h */,
CDFE45A526566E7A0021A29F /* Info.plist */,
);
path = WDTWeatherSource;
sourceTree = "<group>";
};
CDFE45AE26566E7A0021A29F /* WDTWeatherSourceTests */ = {
isa = PBXGroup;
children = (
CDFE45AF26566E7A0021A29F /* WDTWeatherSourceTests.swift */,
CDFE45B126566E7A0021A29F /* Info.plist */,
);
path = WDTWeatherSourceTests;
sourceTree = "<group>";
};
CDFE45C626566F270021A29F /* HelperObjects */ = {
isa = PBXGroup;
children = (
CDBC243C265673B100F9F4E2 /* WdtWeatherSource.swift */,
CDFE45C126566F270021A29F /* WdtLocationResponse.swift */,
CDFE45C226566F270021A29F /* WdtWeatherCode.swift */,
CDFE45C326566F270021A29F /* WdtDailySummariesArray.swift */,
CDFE45C426566F270021A29F /* WdtHourlySummariesArray.swift */,
CDFE45C526566F270021A29F /* WdtDayNight.swift */,
);
path = HelperObjects;
sourceTree = "<group>";
};
CDFE45D326566F620021A29F /* Frameworks */ = {
isa = PBXGroup;
children = (
CDFE45D426566F620021A29F /* OneWeatherCore.framework */,
96BE59B7A83D9CFA327BF4AA /* Pods_WDTWeatherSource.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
CDFE459C26566E7A0021A29F /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
CDFE45B226566E7A0021A29F /* WDTWeatherSource.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
CDFE45A026566E7A0021A29F /* WDTWeatherSource */ = {
isa = PBXNativeTarget;
buildConfigurationList = CDFE45B526566E7A0021A29F /* Build configuration list for PBXNativeTarget "WDTWeatherSource" */;
buildPhases = (
37C9EE31972BE27504E434FD /* [CP] Check Pods Manifest.lock */,
CDFE459C26566E7A0021A29F /* Headers */,
CDFE459D26566E7A0021A29F /* Sources */,
CDFE459E26566E7A0021A29F /* Frameworks */,
CDFE459F26566E7A0021A29F /* Resources */,
CDFE45D726566F620021A29F /* Embed Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = WDTWeatherSource;
productName = WDTWeatherSource;
productReference = CDFE45A126566E7A0021A29F /* WDTWeatherSource.framework */;
productType = "com.apple.product-type.framework";
};
CDFE45A926566E7A0021A29F /* WDTWeatherSourceTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = CDFE45B826566E7A0021A29F /* Build configuration list for PBXNativeTarget "WDTWeatherSourceTests" */;
buildPhases = (
CDFE45A626566E7A0021A29F /* Sources */,
CDFE45A726566E7A0021A29F /* Frameworks */,
CDFE45A826566E7A0021A29F /* Resources */,
);
buildRules = (
);
dependencies = (
CDFE45AD26566E7A0021A29F /* PBXTargetDependency */,
);
name = WDTWeatherSourceTests;
productName = WDTWeatherSourceTests;
productReference = CDFE45AA26566E7A0021A29F /* WDTWeatherSourceTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
CDFE459826566E7A0021A29F /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 1250;
LastUpgradeCheck = 1250;
TargetAttributes = {
CDFE45A026566E7A0021A29F = {
CreatedOnToolsVersion = 12.5;
};
CDFE45A926566E7A0021A29F = {
CreatedOnToolsVersion = 12.5;
};
};
};
buildConfigurationList = CDFE459B26566E7A0021A29F /* Build configuration list for PBXProject "WDTWeatherSource" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = CDFE459726566E7A0021A29F;
productRefGroup = CDFE45A226566E7A0021A29F /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
CDFE45A026566E7A0021A29F /* WDTWeatherSource */,
CDFE45A926566E7A0021A29F /* WDTWeatherSourceTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
CDFE459F26566E7A0021A29F /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
CDFE45A826566E7A0021A29F /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
37C9EE31972BE27504E434FD /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-WDTWeatherSource-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
CDFE459D26566E7A0021A29F /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CDFE45CE26566F480021A29F /* WdtLocationResponse.swift in Sources */,
CDFE45CF26566F480021A29F /* WdtWeatherCode.swift in Sources */,
CDFE45D026566F480021A29F /* WdtDailySummariesArray.swift in Sources */,
CDFE45D126566F480021A29F /* WdtHourlySummariesArray.swift in Sources */,
CDFE45D226566F480021A29F /* WdtDayNight.swift in Sources */,
CDBC243D265673B100F9F4E2 /* WdtWeatherSource.swift in Sources */,
CDFE45CA26566F280021A29F /* WdtSurfaceObservation.swift in Sources */,
CDFE45CB26566F280021A29F /* WdtDailySummary.swift in Sources */,
CDFE45C926566F280021A29F /* WdtLocation.swift in Sources */,
CDFE45CD26566F280021A29F /* WdtHourlySummary.swift in Sources */,
CDFE45CC26566F280021A29F /* WdtHealth.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
CDFE45A626566E7A0021A29F /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CDFE45B026566E7A0021A29F /* WDTWeatherSourceTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
CDFE45AD26566E7A0021A29F /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = CDFE45A026566E7A0021A29F /* WDTWeatherSource */;
targetProxy = CDFE45AC26566E7A0021A29F /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
CDFE45B326566E7A0021A29F /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 14.5;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
CDFE45B426566E7A0021A29F /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 14.5;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
CDFE45B626566E7A0021A29F /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = B7E99288E63F28CB0F6FD4BC /* Pods-WDTWeatherSource.debug.xcconfig */;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 24W4XMQ38L;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = WDTWeatherSource/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.inmobi.WDTWeatherSource;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
SUPPORTS_MACCATALYST = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
CDFE45B726566E7A0021A29F /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 2FC441E45268762FD5A08342 /* Pods-WDTWeatherSource.release.xcconfig */;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 24W4XMQ38L;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = WDTWeatherSource/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.inmobi.WDTWeatherSource;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
SUPPORTS_MACCATALYST = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
CDFE45B926566E7A0021A29F /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 24W4XMQ38L;
INFOPLIST_FILE = WDTWeatherSourceTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.inmobi.WDTWeatherSourceTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
CDFE45BA26566E7A0021A29F /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 24W4XMQ38L;
INFOPLIST_FILE = WDTWeatherSourceTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.inmobi.WDTWeatherSourceTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
CDFE459B26566E7A0021A29F /* Build configuration list for PBXProject "WDTWeatherSource" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CDFE45B326566E7A0021A29F /* Debug */,
CDFE45B426566E7A0021A29F /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
CDFE45B526566E7A0021A29F /* Build configuration list for PBXNativeTarget "WDTWeatherSource" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CDFE45B626566E7A0021A29F /* Debug */,
CDFE45B726566E7A0021A29F /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
CDFE45B826566E7A0021A29F /* Build configuration list for PBXNativeTarget "WDTWeatherSourceTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CDFE45B926566E7A0021A29F /* Debug */,
CDFE45BA26566E7A0021A29F /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = CDFE459826566E7A0021A29F /* Project object */;
}
......@@ -7,7 +7,7 @@
//
import Foundation
import OneWeatherCore
/// Needed for XMLCoder to decode the array with the right key name
struct WdtDailySummariesArray: Codable {
......
......@@ -7,6 +7,7 @@
//
import Foundation
import OneWeatherCore
/// Needed for XMLCoder to decode the array with the right key name
struct WdtHourlySummariesArray: Codable {
......
//
// WdtWeatherSource.swift
// 1Weather
//
// Created by Demid Merzlyakov on 25.02.2021.
//
import Foundation
import CoreLocation
import XMLCoder
import OneWeatherCore
public enum WdtWeatherSourceError: Error {
case insufficientLocationInfo
case badUrl
case networkError(Error?)
case badServerResponse(Error?)
case dataMergeError(String)
case alreadyBeingUpdated
}
public class WdtWeatherSource: WeatherSource {
private let log = Logger(componentName: "WdtWeatherSource")
private static let updateUrlMega = "https://1weather.onelouder.com/feeds/onelouder/mega.php"
private static let updateUrlMicro = "https://1weather.onelouder.com/feeds/onelouder2/fm.php"
private static let updateUrlHealth = "https://1weather.onelouder.com/feeds/onelouder/health.php"
/// This queue is needed to synchronize access to locationsBeingUpdated. Also, to make logging more clear.
private let internalQueue: OperationQueue = {
let queue = OperationQueue()
queue.name = "WdtWeatherSource Queue"
queue.maxConcurrentOperationCount = 1
return queue
}()
private var locationsBeingUpdated = Set<Location>()
#if DEBUG
public let weatherUpdateInterval = TimeInterval(2 * 60) // 2 minutes
#else
public let weatherUpdateInterval = TimeInterval(15 * 60) // 15 minutes
#endif
public init() {}
public func updateWeather(for location: Location, type: WeatherUpdateType, completion: @escaping WeatherSourceCompletion) {
internalQueue.addOperation { [weak self] in
let extendedCompletion: WeatherSourceCompletion = { [weak self] (updatedLocation, error) in
self?.internalQueue.addOperation {
completion(updatedLocation, error)
self?.locationsBeingUpdated.remove(location)
}
}
self?.updateWeatherInternal(for: location, type: type, completion: extendedCompletion)
}
}
private func buildURL(for location: Location, type: WeatherUpdateType, uvRequest: Bool) -> Result<URL, WdtWeatherSourceError> {
var urlToUse = WdtWeatherSource.updateUrlMega
if uvRequest {
log.debug("Start update (health) for \(location)")
urlToUse = WdtWeatherSource.updateUrlHealth
}
else if type == .preferIncremental && location.lastWeatherUpdateDate != nil {
urlToUse = WdtWeatherSource.updateUrlMicro
log.debug("Start update (incremental) for \(location)")
}
else {
log.debug("Start update (MEGA) for \(location)")
}
guard var urlComponents = URLComponents(string: urlToUse) else {
log.error("Couldn't create URLComponents from \(urlToUse)")
assertionFailure("Should never happen. The URL should be correct.")
// Should never happen, but a lot of stuff that should never happen happens from time to time, so let's at least handle it gracefully in prod.
return .failure(.badUrl)
}
var queryParameters = [String: String]()
if let coordinates = location.coordinates {
queryParameters["LAT"] = String(format: "%.5f", coordinates.latitude)
queryParameters["LON"] = String(format: "%.5f", coordinates.longitude)
}
else {
queryParameters["ZIP"] = location.zip
queryParameters["CITY"] = location.cityName
queryParameters["STATE"] = location.region
queryParameters["COUNTRY"] = location.countryName
}
guard !queryParameters.isEmpty else {
log.error("Not enough information about location.")
return .failure(.insufficientLocationInfo)
}
queryParameters["UNITS"] = "all"
urlComponents.queryItems = queryParameters.map { URLQueryItem(name: $0, value: $1) }
guard let url = urlComponents.url else {
log.error("Couldn't create URL with params: \(queryParameters)")
return .failure(.badUrl)
}
log.debug("Network request (\(location)): \(url)")
return .success(url)
}
/// This method should only be run from the internalQueue.
private func updateWeatherInternal(for location: Location, type: WeatherUpdateType, completion: @escaping WeatherSourceCompletion) {
let urlBuildResult = buildURL(for: location, type: type, uvRequest: false)
switch urlBuildResult {
case .failure(let error):
completion(nil, error)
return
case .success(let url):
let urlSession = URLSession.shared
let dataTask = urlSession.dataTask(with: url) { [weak self] (data, reponse, error) in
guard let self = self else { return }
guard let data = data else {
self.log.debug("Network response (\(location)): error \(String(describing: error))")
completion(nil, WdtWeatherSourceError.networkError(error))
return
}
let responseBodyString = String(data: data, encoding: .utf8) ?? "<couldn't show as string"
self.log.debug("Network response (\(location)): \(responseBodyString)")
let decoder = XMLDecoder()
do {
let locationResponse = try decoder.decode(WdtLocationResponse.self, from: data)
guard let newLocation = try self.applyChangesTo(location: location, from: locationResponse) else {
completion(nil, WdtWeatherSourceError.badServerResponse(error))
return
}
self.updateUV(for: newLocation, type: type, completion: completion)
}
catch {
completion(nil, WdtWeatherSourceError.badServerResponse(error))
}
}
dataTask.resume()
}
}
private func updateUV(for location: Location, type: WeatherUpdateType, completion: @escaping WeatherSourceCompletion) {
let urlBuildResult = buildURL(for: location, type: type, uvRequest: true)
switch urlBuildResult {
case .failure(let error):
completion(nil, error)
return
case .success(let url):
let urlSession = URLSession.shared
let dataTask = urlSession.dataTask(with: url) { [weak self] (data, reponse, error) in
guard let self = self else { return }
guard let data = data else {
self.log.debug("Network response (health) (\(location)): error \(String(describing: error))")
completion(nil, WdtWeatherSourceError.networkError(error))
return
}
let responseBodyString = String(data: data, encoding: .utf8) ?? "<couldn't show as string"
self.log.debug("Network response (\(location)): \(responseBodyString)")
let decoder = XMLDecoder()
do {
let locationResponse = try decoder.decode(WdtHealth.self, from: data)
var newLocation = location
newLocation.today?.uv = locationResponse.uvIndex?.today
completion(newLocation, nil)
}
catch {
completion(nil, WdtWeatherSourceError.badServerResponse(error))
}
}
dataTask.resume()
}
}
private func applyChangesTo(location: Location, from locationResponse: WdtLocationResponse) throws -> Location? {
guard let wdtLocation = locationResponse.locations.first else {
return nil
}
let updateTime = Date()
let incrementalChanges = try wdtLocation.toAppModel(context: location, updatedAt: updateTime)
let updatedLocation = location.mergedWith(incrementalChanges: incrementalChanges)
return updatedLocation
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>
//
// WDTWeatherSource.h
// WDTWeatherSource
//
// Created by Dmitry Stepanets on 20.05.2021.
//
#import <Foundation/Foundation.h>
//! Project version number for WDTWeatherSource.
FOUNDATION_EXPORT double WDTWeatherSourceVersionNumber;
//! Project version string for WDTWeatherSource.
FOUNDATION_EXPORT const unsigned char WDTWeatherSourceVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <WDTWeatherSource/PublicHeader.h>
......@@ -6,6 +6,7 @@
//
import Foundation
import OneWeatherCore
struct WdtDailySummary: Codable {
public var dateLocal: String
......
......@@ -6,6 +6,7 @@
//
import Foundation
import OneWeatherCore
struct WdtHourlySummary: Codable {
public var dateTimeLocal: String
......
......@@ -7,6 +7,7 @@
import Foundation
import CoreLocation
import OneWeatherCore
struct WdtLocation: Codable {
public private (set) var lat: String?
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
//
// WDTWeatherSourceTests.swift
// WDTWeatherSourceTests
//
// Created by Dmitry Stepanets on 20.05.2021.
//
import XCTest
@testable import WDTWeatherSource
class WDTWeatherSourceTests: XCTestCase {
override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() throws {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() throws {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment