diff --git a/.gitignore b/.gitignore index 51163b4ba..446a8ae41 100644 --- a/.gitignore +++ b/.gitignore @@ -70,6 +70,5 @@ fastlane/screenshots fastlane/test_output - -/Shared/Secrets.swift +/Frameworks/Secrets/Secrets.swift *.py[cod] diff --git a/Frameworks/Account/Account.swift b/Frameworks/Account/Account.swift index cc4fc37f4..59f87e065 100644 --- a/Frameworks/Account/Account.swift +++ b/Frameworks/Account/Account.swift @@ -18,6 +18,7 @@ import RSDatabase import ArticlesDatabase import RSWeb import os.log +import Secrets // Main thread only. diff --git a/Frameworks/Account/Account.xcodeproj/project.pbxproj b/Frameworks/Account/Account.xcodeproj/project.pbxproj index 38674a63f..d9958c367 100644 --- a/Frameworks/Account/Account.xcodeproj/project.pbxproj +++ b/Frameworks/Account/Account.xcodeproj/project.pbxproj @@ -17,7 +17,6 @@ 179DBE829FDF48E102F73244 /* NewsBlurAccountDelegate+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DB78C47256A122A281942 /* NewsBlurAccountDelegate+Internal.swift */; }; 179DBED55C9B4D6A413486C1 /* NewsBlurStoryHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DB818180A51098A9816B2 /* NewsBlurStoryHash.swift */; }; 179DBF4DE2562D4C532F6008 /* NewsBlurFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DB1B909672E0E807B5E8C /* NewsBlurFeed.swift */; }; - 3B3A33E7238D3D6800314204 /* Secrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3A33E6238D3D6800314204 /* Secrets.swift */; }; 3B826DA72385C81C00FC1ADB /* FeedWranglerAuthorizationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826D9E2385C81C00FC1ADB /* FeedWranglerAuthorizationResult.swift */; }; 3B826DA82385C81C00FC1ADB /* FeedWranglerFeedItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826D9F2385C81C00FC1ADB /* FeedWranglerFeedItem.swift */; }; 3B826DA92385C81C00FC1ADB /* FeedWranglerAPICaller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826DA02385C81C00FC1ADB /* FeedWranglerAPICaller.swift */; }; @@ -28,6 +27,7 @@ 3B826DAE2385C81C00FC1ADB /* FeedWranglerSubscriptionsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826DA52385C81C00FC1ADB /* FeedWranglerSubscriptionsRequest.swift */; }; 3B826DAF2385C81C00FC1ADB /* FeedWranglerGenericResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826DA62385C81C00FC1ADB /* FeedWranglerGenericResult.swift */; }; 3BC23AB92385ECB100371CBA /* FeedWranglerSubscriptionResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BC23AB82385ECB100371CBA /* FeedWranglerSubscriptionResult.swift */; }; + 5102FD80244009E000534F17 /* Secrets.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5102FD7F244009E000534F17 /* Secrets.framework */; }; 5103A9D92422546800410853 /* CloudKitAccountDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5103A9D82422546800410853 /* CloudKitAccountDelegate.swift */; }; 5107A09B227DE49500C7C3C5 /* TestAccountManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5107A09A227DE49500C7C3C5 /* TestAccountManager.swift */; }; 5107A09D227DE77700C7C3C5 /* TestTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5107A09C227DE77700C7C3C5 /* TestTransport.swift */; }; @@ -45,9 +45,7 @@ 514BF5202391B0DB00902FE8 /* SingleArticleFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514BF51F2391B0DB00902FE8 /* SingleArticleFetcher.swift */; }; 5150FFFE243823B800C1A442 /* CloudKitError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5150FFFD243823B800C1A442 /* CloudKitError.swift */; }; 5154367B228EEB28005E1CDF /* FeedbinImportResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5154367A228EEB28005E1CDF /* FeedbinImportResult.swift */; }; - 515E4EB52324FF8C0057B0E7 /* CredentialsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 515E4EB22324FF8C0057B0E7 /* CredentialsManager.swift */; }; 515E4EB62324FF8C0057B0E7 /* URLRequest+RSWeb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 515E4EB32324FF8C0057B0E7 /* URLRequest+RSWeb.swift */; }; - 515E4EB72324FF8C0057B0E7 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 515E4EB42324FF8C0057B0E7 /* Credentials.swift */; }; 5165D7122282080C00D9D53D /* AccountFeedbinFolderContentsSyncTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5165D7112282080C00D9D53D /* AccountFeedbinFolderContentsSyncTest.swift */; }; 5165D71622821C2400D9D53D /* taggings_delete.json in Resources */ = {isa = PBXBuildFile; fileRef = 5165D71322821C2400D9D53D /* taggings_delete.json */; }; 5165D71722821C2400D9D53D /* taggings_add.json in Resources */ = {isa = PBXBuildFile; fileRef = 5165D71422821C2400D9D53D /* taggings_add.json */; }; @@ -252,7 +250,6 @@ 179DB818180A51098A9816B2 /* NewsBlurStoryHash.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewsBlurStoryHash.swift; sourceTree = ""; }; 179DBBF346CF712AB2F0E9E6 /* NewsBlurAPICaller+Internal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NewsBlurAPICaller+Internal.swift"; sourceTree = ""; }; 179DBDDC00B68411AA28941F /* NewsBlurFolderChange.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewsBlurFolderChange.swift; sourceTree = ""; }; - 3B3A33E6238D3D6800314204 /* Secrets.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Secrets.swift; path = ../../Shared/Secrets.swift; sourceTree = ""; }; 3B826D9E2385C81C00FC1ADB /* FeedWranglerAuthorizationResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerAuthorizationResult.swift; sourceTree = ""; }; 3B826D9F2385C81C00FC1ADB /* FeedWranglerFeedItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerFeedItem.swift; sourceTree = ""; }; 3B826DA02385C81C00FC1ADB /* FeedWranglerAPICaller.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerAPICaller.swift; sourceTree = ""; }; @@ -263,6 +260,7 @@ 3B826DA52385C81C00FC1ADB /* FeedWranglerSubscriptionsRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerSubscriptionsRequest.swift; sourceTree = ""; }; 3B826DA62385C81C00FC1ADB /* FeedWranglerGenericResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerGenericResult.swift; sourceTree = ""; }; 3BC23AB82385ECB100371CBA /* FeedWranglerSubscriptionResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedWranglerSubscriptionResult.swift; sourceTree = ""; }; + 5102FD7F244009E000534F17 /* Secrets.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Secrets.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 5103A9D82422546800410853 /* CloudKitAccountDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudKitAccountDelegate.swift; sourceTree = ""; }; 5107A098227DE42E00C7C3C5 /* AccountCredentialsTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountCredentialsTest.swift; sourceTree = ""; }; 5107A09A227DE49500C7C3C5 /* TestAccountManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestAccountManager.swift; sourceTree = ""; }; @@ -282,9 +280,7 @@ 514BF51F2391B0DB00902FE8 /* SingleArticleFetcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleArticleFetcher.swift; sourceTree = ""; }; 5150FFFD243823B800C1A442 /* CloudKitError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CloudKitError.swift; sourceTree = ""; }; 5154367A228EEB28005E1CDF /* FeedbinImportResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbinImportResult.swift; sourceTree = ""; }; - 515E4EB22324FF8C0057B0E7 /* CredentialsManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CredentialsManager.swift; sourceTree = ""; }; 515E4EB32324FF8C0057B0E7 /* URLRequest+RSWeb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URLRequest+RSWeb.swift"; sourceTree = ""; }; - 515E4EB42324FF8C0057B0E7 /* Credentials.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; 5165D7112282080C00D9D53D /* AccountFeedbinFolderContentsSyncTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountFeedbinFolderContentsSyncTest.swift; sourceTree = ""; }; 5165D71322821C2400D9D53D /* taggings_delete.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = taggings_delete.json; sourceTree = ""; }; 5165D71422821C2400D9D53D /* taggings_add.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = taggings_add.json; sourceTree = ""; }; @@ -467,6 +463,7 @@ 51E148EC234B8FFC0004F7A5 /* SyncDatabase.framework in Frameworks */, 841973FE1F6DD1BC006346C4 /* RSCore.framework in Frameworks */, 841973FF1F6DD1C5006346C4 /* RSParser.framework in Frameworks */, + 5102FD80244009E000534F17 /* Secrets.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -548,16 +545,6 @@ path = Feedbin; sourceTree = ""; }; - 515E4EB12324FF7D0057B0E7 /* Credentials */ = { - isa = PBXGroup; - children = ( - 515E4EB42324FF8C0057B0E7 /* Credentials.swift */, - 515E4EB22324FF8C0057B0E7 /* CredentialsManager.swift */, - 515E4EB32324FF8C0057B0E7 /* URLRequest+RSWeb.swift */, - ); - path = Credentials; - sourceTree = ""; - }; 5165D71F22835E9800D9D53D /* FeedFinder */ = { isa = PBXGroup; children = ( @@ -661,6 +648,7 @@ 8469F80F1F6DC3C10084783E /* Frameworks */ = { isa = PBXGroup; children = ( + 5102FD7F244009E000534F17 /* Secrets.framework */, 511076F4243BD96D00D97C8C /* FeedProvider.framework */, 511076A3243BD33100D97C8C /* .framework */, 51E148EB234B8FFC0004F7A5 /* SyncDatabase.framework */, @@ -677,7 +665,6 @@ 848934EC1F62484F00CEBD24 = { isa = PBXGroup; children = ( - 3B3A33E6238D3D6800314204 /* Secrets.swift */, 848935101F62486800CEBD24 /* Account.swift */, 841974241F6DDCE4006346C4 /* AccountDelegate.swift */, 51BB7B83233531BC008E8144 /* AccountBehaviors.swift */, @@ -698,11 +685,11 @@ 511B9803237CD4270028BCAA /* FeedIdentifier.swift */, 841974001F6DD1EC006346C4 /* Folder.swift */, 844B297E210CE37E004020B3 /* UnreadCountProvider.swift */, + 515E4EB32324FF8C0057B0E7 /* URLRequest+RSWeb.swift */, 844B297C2106C7EC004020B3 /* WebFeed.swift */, 84B2D4CE2238C13D00498ADA /* WebFeedMetadata.swift */, 510BD112232C3E9D002692E4 /* WebFeedMetadataFile.swift */, 5165D71F22835E9800D9D53D /* FeedFinder */, - 515E4EB12324FF7D0057B0E7 /* Credentials */, 8419742B1F6DDE84006346C4 /* LocalAccount */, 84245C7D1FDDD2580074AFBB /* Feedbin */, 3B826D9D2385C81C00FC1ADB /* FeedWrangler */, @@ -1123,7 +1110,6 @@ 9EEEF71F23545CB4009E9D80 /* FeedlySendArticleStatusesOperation.swift in Sources */, 9EBD49C223C67784005AD5CD /* FeedlyEntryIdentifierProviding.swift in Sources */, 846E77541F6F00E300A165E2 /* AccountManager.swift in Sources */, - 515E4EB72324FF8C0057B0E7 /* Credentials.swift in Sources */, 51E490362288C37100C791F0 /* FeedbinDate.swift in Sources */, 9EEAE06E235D002D00E3FEE4 /* FeedlyGetCollectionsService.swift in Sources */, 5165D72922835F7A00D9D53D /* FeedSpecifier.swift in Sources */, @@ -1186,7 +1172,6 @@ 9EAEC62823331C350085D7C9 /* FeedlyCategory.swift in Sources */, 3B826DAE2385C81C00FC1ADB /* FeedWranglerSubscriptionsRequest.swift in Sources */, 9E964EB823754AC400A7AF2E /* OAuthAuthorizationClient+Feedly.swift in Sources */, - 3B3A33E7238D3D6800314204 /* Secrets.swift in Sources */, 9EF1B10923590E93000A486A /* FeedlyStreamIds.swift in Sources */, 84D09623217418DC00D77525 /* FeedbinTagging.swift in Sources */, 84CAD7161FDF2E22000F0755 /* FeedbinEntry.swift in Sources */, @@ -1196,7 +1181,6 @@ 51E4DB302426353D0091EB5B /* CloudKitAccountZone.swift in Sources */, 3B826DAD2385C81C00FC1ADB /* FeedWranglerFeedItemsRequest.swift in Sources */, 846E774F1F6EF9C000A165E2 /* LocalAccountDelegate.swift in Sources */, - 515E4EB52324FF8C0057B0E7 /* CredentialsManager.swift in Sources */, 844B297F210CE37E004020B3 /* UnreadCountProvider.swift in Sources */, 9E1773D5234570E30056A5A8 /* FeedlyEntryParser.swift in Sources */, 512DD4CD2431098700C17B1F /* CloudKitAccountZoneDelegate.swift in Sources */, diff --git a/Frameworks/Account/AccountDelegate.swift b/Frameworks/Account/AccountDelegate.swift index a7c201cab..d575434cb 100644 --- a/Frameworks/Account/AccountDelegate.swift +++ b/Frameworks/Account/AccountDelegate.swift @@ -9,6 +9,7 @@ import Foundation import Articles import RSWeb +import Secrets protocol AccountDelegate { diff --git a/Frameworks/Account/CloudKit/CloudKitAccountDelegate.swift b/Frameworks/Account/CloudKit/CloudKitAccountDelegate.swift index d6f03a63e..e0a180122 100644 --- a/Frameworks/Account/CloudKit/CloudKitAccountDelegate.swift +++ b/Frameworks/Account/CloudKit/CloudKitAccountDelegate.swift @@ -14,6 +14,7 @@ import RSCore import RSParser import Articles import RSWeb +import Secrets public enum CloudKitAccountDelegateError: String, Error { case invalidParameter = "An invalid parameter was used." diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerAPICaller.swift b/Frameworks/Account/FeedWrangler/FeedWranglerAPICaller.swift index 65c2e41cb..62980b424 100644 --- a/Frameworks/Account/FeedWrangler/FeedWranglerAPICaller.swift +++ b/Frameworks/Account/FeedWrangler/FeedWranglerAPICaller.swift @@ -11,6 +11,7 @@ import Foundation import Foundation import SyncDatabase import RSWeb +import Secrets enum FeedWranglerError : Error { case general(message: String) diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerAccountDelegate.swift b/Frameworks/Account/FeedWrangler/FeedWranglerAccountDelegate.swift index 95910f410..dffff49af 100644 --- a/Frameworks/Account/FeedWrangler/FeedWranglerAccountDelegate.swift +++ b/Frameworks/Account/FeedWrangler/FeedWranglerAccountDelegate.swift @@ -12,6 +12,7 @@ import RSParser import RSWeb import SyncDatabase import os.log +import Secrets final class FeedWranglerAccountDelegate: AccountDelegate { diff --git a/Frameworks/Account/FeedWrangler/FeedWranglerConfig.swift b/Frameworks/Account/FeedWrangler/FeedWranglerConfig.swift index 2de3b62e9..508dfedc4 100644 --- a/Frameworks/Account/FeedWrangler/FeedWranglerConfig.swift +++ b/Frameworks/Account/FeedWrangler/FeedWranglerConfig.swift @@ -7,6 +7,7 @@ // import Foundation +import Secrets enum FeedWranglerConfig { static let pageSize = 100 diff --git a/Frameworks/Account/Feedbin/FeedbinAPICaller.swift b/Frameworks/Account/Feedbin/FeedbinAPICaller.swift index 27e16e0d7..f5bd56477 100644 --- a/Frameworks/Account/Feedbin/FeedbinAPICaller.swift +++ b/Frameworks/Account/Feedbin/FeedbinAPICaller.swift @@ -12,6 +12,7 @@ import Foundation import RSWeb +import Secrets enum CreateSubscriptionResult { case created(FeedbinSubscription) diff --git a/Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift b/Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift index 1e03828dc..8159c4838 100644 --- a/Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift +++ b/Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift @@ -13,6 +13,7 @@ import RSParser import RSWeb import SyncDatabase import os.log +import Secrets public enum FeedbinAccountDelegateError: String, Error { case invalidParameter = "There was an invalid parameter passed." diff --git a/Frameworks/Account/Feedly/FeedlyAPICaller.swift b/Frameworks/Account/Feedly/FeedlyAPICaller.swift index d52c83bb8..f26c6d8e8 100644 --- a/Frameworks/Account/Feedly/FeedlyAPICaller.swift +++ b/Frameworks/Account/Feedly/FeedlyAPICaller.swift @@ -8,6 +8,7 @@ import Foundation import RSWeb +import Secrets final class FeedlyAPICaller { diff --git a/Frameworks/Account/Feedly/FeedlyAccountDelegate+OAuth.swift b/Frameworks/Account/Feedly/FeedlyAccountDelegate+OAuth.swift index f9165f06e..9e29bbbe2 100644 --- a/Frameworks/Account/Feedly/FeedlyAccountDelegate+OAuth.swift +++ b/Frameworks/Account/Feedly/FeedlyAccountDelegate+OAuth.swift @@ -8,6 +8,7 @@ import Foundation import RSWeb +import Secrets /// Models the access token response from Feedly. /// https://developer.feedly.com/v3/auth/#exchanging-an-auth-code-for-a-refresh-token-and-an-access-token diff --git a/Frameworks/Account/Feedly/FeedlyAccountDelegate.swift b/Frameworks/Account/Feedly/FeedlyAccountDelegate.swift index 743706414..47990fdf4 100644 --- a/Frameworks/Account/Feedly/FeedlyAccountDelegate.swift +++ b/Frameworks/Account/Feedly/FeedlyAccountDelegate.swift @@ -12,6 +12,7 @@ import RSParser import RSWeb import SyncDatabase import os.log +import Secrets final class FeedlyAccountDelegate: AccountDelegate { diff --git a/Frameworks/Account/Feedly/OAuthAuthorizationClient+Feedly.swift b/Frameworks/Account/Feedly/OAuthAuthorizationClient+Feedly.swift index 420aa5ed5..56b28361a 100644 --- a/Frameworks/Account/Feedly/OAuthAuthorizationClient+Feedly.swift +++ b/Frameworks/Account/Feedly/OAuthAuthorizationClient+Feedly.swift @@ -7,6 +7,7 @@ // import Foundation +import Secrets extension OAuthAuthorizationClient { diff --git a/Frameworks/Account/Feedly/OAuthAuthorizationCodeGranting.swift b/Frameworks/Account/Feedly/OAuthAuthorizationCodeGranting.swift index 836989e78..6415f90b2 100644 --- a/Frameworks/Account/Feedly/OAuthAuthorizationCodeGranting.swift +++ b/Frameworks/Account/Feedly/OAuthAuthorizationCodeGranting.swift @@ -8,6 +8,7 @@ import Foundation import RSWeb +import Secrets /// Client-specific information for requesting an authorization code grant. /// Accounts are responsible for the scope. diff --git a/Frameworks/Account/Feedly/Operations/FeedlyAddExistingFeedOperation.swift b/Frameworks/Account/Feedly/Operations/FeedlyAddExistingFeedOperation.swift index 76fdde08b..07dc4c8ca 100644 --- a/Frameworks/Account/Feedly/Operations/FeedlyAddExistingFeedOperation.swift +++ b/Frameworks/Account/Feedly/Operations/FeedlyAddExistingFeedOperation.swift @@ -10,6 +10,7 @@ import Foundation import os.log import RSWeb import RSCore +import Secrets class FeedlyAddExistingFeedOperation: FeedlyOperation, FeedlyOperationDelegate, FeedlyCheckpointOperationDelegate { diff --git a/Frameworks/Account/Feedly/Operations/FeedlyAddNewFeedOperation.swift b/Frameworks/Account/Feedly/Operations/FeedlyAddNewFeedOperation.swift index e3641511e..4caccae47 100644 --- a/Frameworks/Account/Feedly/Operations/FeedlyAddNewFeedOperation.swift +++ b/Frameworks/Account/Feedly/Operations/FeedlyAddNewFeedOperation.swift @@ -11,6 +11,7 @@ import os.log import SyncDatabase import RSWeb import RSCore +import Secrets class FeedlyAddNewFeedOperation: FeedlyOperation, FeedlyOperationDelegate, FeedlySearchOperationDelegate, FeedlyCheckpointOperationDelegate { diff --git a/Frameworks/Account/Feedly/Operations/FeedlyGetUpdatedArticleIdsOperation.swift b/Frameworks/Account/Feedly/Operations/FeedlyGetUpdatedArticleIdsOperation.swift index 1ed7a2c10..43d9d2507 100644 --- a/Frameworks/Account/Feedly/Operations/FeedlyGetUpdatedArticleIdsOperation.swift +++ b/Frameworks/Account/Feedly/Operations/FeedlyGetUpdatedArticleIdsOperation.swift @@ -8,6 +8,7 @@ import Foundation import os.log +import Secrets /// Single responsibility is to identify articles that have changed since a particular date. /// diff --git a/Frameworks/Account/Feedly/Operations/FeedlyIngestStarredArticleIdsOperation.swift b/Frameworks/Account/Feedly/Operations/FeedlyIngestStarredArticleIdsOperation.swift index 02dc42043..709aa7bd6 100644 --- a/Frameworks/Account/Feedly/Operations/FeedlyIngestStarredArticleIdsOperation.swift +++ b/Frameworks/Account/Feedly/Operations/FeedlyIngestStarredArticleIdsOperation.swift @@ -9,6 +9,7 @@ import Foundation import os.log import SyncDatabase +import Secrets /// Clone locally the remote starred article state. /// diff --git a/Frameworks/Account/Feedly/Operations/FeedlyIngestStreamArticleIdsOperation.swift b/Frameworks/Account/Feedly/Operations/FeedlyIngestStreamArticleIdsOperation.swift index 12b906d12..48fa7d9c6 100644 --- a/Frameworks/Account/Feedly/Operations/FeedlyIngestStreamArticleIdsOperation.swift +++ b/Frameworks/Account/Feedly/Operations/FeedlyIngestStreamArticleIdsOperation.swift @@ -8,6 +8,7 @@ import Foundation import os.log +import Secrets /// Ensure a status exists for every article id the user might be interested in. /// diff --git a/Frameworks/Account/Feedly/Operations/FeedlyIngestUnreadArticleIdsOperation.swift b/Frameworks/Account/Feedly/Operations/FeedlyIngestUnreadArticleIdsOperation.swift index 669a9672d..b32eabfc2 100644 --- a/Frameworks/Account/Feedly/Operations/FeedlyIngestUnreadArticleIdsOperation.swift +++ b/Frameworks/Account/Feedly/Operations/FeedlyIngestUnreadArticleIdsOperation.swift @@ -10,6 +10,7 @@ import Foundation import os.log import RSParser import SyncDatabase +import Secrets /// Clone locally the remote unread article state. /// diff --git a/Frameworks/Account/Feedly/Operations/FeedlyRefreshAccessTokenOperation.swift b/Frameworks/Account/Feedly/Operations/FeedlyRefreshAccessTokenOperation.swift index d1c68d970..ad8271d12 100644 --- a/Frameworks/Account/Feedly/Operations/FeedlyRefreshAccessTokenOperation.swift +++ b/Frameworks/Account/Feedly/Operations/FeedlyRefreshAccessTokenOperation.swift @@ -9,6 +9,7 @@ import Foundation import os.log import RSWeb +import Secrets final class FeedlyRefreshAccessTokenOperation: FeedlyOperation { diff --git a/Frameworks/Account/Feedly/Operations/FeedlySyncAllOperation.swift b/Frameworks/Account/Feedly/Operations/FeedlySyncAllOperation.swift index b0c87e027..34d6b3677 100644 --- a/Frameworks/Account/Feedly/Operations/FeedlySyncAllOperation.swift +++ b/Frameworks/Account/Feedly/Operations/FeedlySyncAllOperation.swift @@ -11,6 +11,7 @@ import os.log import SyncDatabase import RSWeb import RSCore +import Secrets /// Compose the operations necessary to get the entire set of articles, feeds and folders with the statuses the user expects between now and a certain date in the past. final class FeedlySyncAllOperation: FeedlyOperation { diff --git a/Frameworks/Account/Feedly/Operations/FeedlySyncStreamContentsOperation.swift b/Frameworks/Account/Feedly/Operations/FeedlySyncStreamContentsOperation.swift index 7e98eea67..47625992d 100644 --- a/Frameworks/Account/Feedly/Operations/FeedlySyncStreamContentsOperation.swift +++ b/Frameworks/Account/Feedly/Operations/FeedlySyncStreamContentsOperation.swift @@ -11,6 +11,7 @@ import os.log import RSParser import RSCore import RSWeb +import Secrets final class FeedlySyncStreamContentsOperation: FeedlyOperation, FeedlyOperationDelegate, FeedlyGetStreamContentsOperationDelegate, FeedlyCheckpointOperationDelegate { diff --git a/Frameworks/Account/LocalAccount/LocalAccountDelegate.swift b/Frameworks/Account/LocalAccount/LocalAccountDelegate.swift index e99388d81..5fa286995 100644 --- a/Frameworks/Account/LocalAccount/LocalAccountDelegate.swift +++ b/Frameworks/Account/LocalAccount/LocalAccountDelegate.swift @@ -11,6 +11,7 @@ import RSCore import RSParser import Articles import RSWeb +import Secrets public enum LocalAccountDelegateError: String, Error { case invalidParameter = "An invalid parameter was used." diff --git a/Frameworks/Account/NewsBlur/NewsBlurAPICaller.swift b/Frameworks/Account/NewsBlur/NewsBlurAPICaller.swift index 9c974b2cd..71091352d 100644 --- a/Frameworks/Account/NewsBlur/NewsBlurAPICaller.swift +++ b/Frameworks/Account/NewsBlur/NewsBlurAPICaller.swift @@ -8,6 +8,7 @@ import Foundation import RSWeb +import Secrets final class NewsBlurAPICaller: NSObject { static let SessionIdCookie = "newsblur_sessionid" diff --git a/Frameworks/Account/NewsBlur/NewsBlurAccountDelegate.swift b/Frameworks/Account/NewsBlur/NewsBlurAccountDelegate.swift index 609dd3085..b95ae7dab 100644 --- a/Frameworks/Account/NewsBlur/NewsBlurAccountDelegate.swift +++ b/Frameworks/Account/NewsBlur/NewsBlurAccountDelegate.swift @@ -13,6 +13,7 @@ import RSParser import RSWeb import SyncDatabase import os.log +import Secrets final class NewsBlurAccountDelegate: AccountDelegate { diff --git a/Frameworks/Account/ReaderAPI/ReaderAPIAccountDelegate.swift b/Frameworks/Account/ReaderAPI/ReaderAPIAccountDelegate.swift index 722df7842..f36c69ac8 100644 --- a/Frameworks/Account/ReaderAPI/ReaderAPIAccountDelegate.swift +++ b/Frameworks/Account/ReaderAPI/ReaderAPIAccountDelegate.swift @@ -12,6 +12,7 @@ import RSParser import RSWeb import SyncDatabase import os.log +import Secrets public enum ReaderAPIAccountDelegateError: String, Error { case invalidParameter = "There was an invalid parameter passed." diff --git a/Frameworks/Account/ReaderAPI/ReaderAPICaller.swift b/Frameworks/Account/ReaderAPI/ReaderAPICaller.swift index 8b61a37b9..a7622db14 100644 --- a/Frameworks/Account/ReaderAPI/ReaderAPICaller.swift +++ b/Frameworks/Account/ReaderAPI/ReaderAPICaller.swift @@ -8,6 +8,7 @@ import Foundation import RSWeb +import Secrets enum CreateReaderAPISubscriptionResult { case created(ReaderAPISubscription) diff --git a/Frameworks/Account/Credentials/URLRequest+RSWeb.swift b/Frameworks/Account/URLRequest+RSWeb.swift similarity index 99% rename from Frameworks/Account/Credentials/URLRequest+RSWeb.swift rename to Frameworks/Account/URLRequest+RSWeb.swift index f82f3de02..8898ac613 100755 --- a/Frameworks/Account/Credentials/URLRequest+RSWeb.swift +++ b/Frameworks/Account/URLRequest+RSWeb.swift @@ -8,6 +8,7 @@ import Foundation import RSWeb +import Secrets public extension URLRequest { diff --git a/Frameworks/FeedProvider/FeedProvider.xcodeproj/project.pbxproj b/Frameworks/FeedProvider/FeedProvider.xcodeproj/project.pbxproj index 2b5495cd4..b0e51298e 100644 --- a/Frameworks/FeedProvider/FeedProvider.xcodeproj/project.pbxproj +++ b/Frameworks/FeedProvider/FeedProvider.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 5102FD7D244009CF00534F17 /* Secrets.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5102FD7C244009CF00534F17 /* Secrets.framework */; }; 5110769B243BCF3A00D97C8C /* FeedProvider_target.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 51107696243BCF3A00D97C8C /* FeedProvider_target.xcconfig */; }; 5110769C243BCF3A00D97C8C /* FeedProvider_project_test.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 51107697243BCF3A00D97C8C /* FeedProvider_project_test.xcconfig */; }; 5110769D243BCF3A00D97C8C /* FeedProvider_project_release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 51107698243BCF3A00D97C8C /* FeedProvider_project_release.xcconfig */; }; @@ -15,28 +16,12 @@ 511076EE243BD82A00D97C8C /* Articles.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 511076ED243BD82A00D97C8C /* Articles.framework */; }; 51107722243BE0DA00D97C8C /* FeedProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51107721243BE0DA00D97C8C /* FeedProvider.swift */; }; 51107724243BE11800D97C8C /* RSParser.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51107723243BE11800D97C8C /* RSParser.framework */; }; - 51107725243BE11800D97C8C /* RSParser.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 51107723243BE11800D97C8C /* RSParser.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 51107728243BE15D00D97C8C /* RSCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51107727243BE15D00D97C8C /* RSCore.framework */; }; - 51107729243BE15D00D97C8C /* RSCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 51107727243BE15D00D97C8C /* RSCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 515A5105243D0C6B0089E588 /* TwitterFeedProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 515A5104243D0C6B0089E588 /* TwitterFeedProvider.swift */; }; /* End PBXBuildFile section */ -/* Begin PBXCopyFilesBuildPhase section */ - 51107726243BE11800D97C8C /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 51107729243BE15D00D97C8C /* RSCore.framework in Embed Frameworks */, - 51107725243BE11800D97C8C /* RSParser.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - /* Begin PBXFileReference section */ + 5102FD7C244009CF00534F17 /* Secrets.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Secrets.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 5110765F243BCE0400D97C8C /* FeedProvider.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FeedProvider.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 51107663243BCE0400D97C8C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 51107696243BCF3A00D97C8C /* FeedProvider_target.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FeedProvider_target.xcconfig; sourceTree = ""; }; @@ -58,6 +43,7 @@ files = ( 51107728243BE15D00D97C8C /* RSCore.framework in Frameworks */, 51107724243BE11800D97C8C /* RSParser.framework in Frameworks */, + 5102FD7D244009CF00534F17 /* Secrets.framework in Frameworks */, 511076EE243BD82A00D97C8C /* Articles.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -100,6 +86,7 @@ 511076EC243BD82A00D97C8C /* Frameworks */ = { isa = PBXGroup; children = ( + 5102FD7C244009CF00534F17 /* Secrets.framework */, 51107727243BE15D00D97C8C /* RSCore.framework */, 51107723243BE11800D97C8C /* RSParser.framework */, 511076ED243BD82A00D97C8C /* Articles.framework */, @@ -137,7 +124,6 @@ 5110765C243BCE0400D97C8C /* Frameworks */, 5110765D243BCE0400D97C8C /* Resources */, 511076A2243BD2E600D97C8C /* Run Script: Verfiy No Build Settings */, - 51107726243BE11800D97C8C /* Embed Frameworks */, ); buildRules = ( ); diff --git a/Frameworks/Account/Credentials/Credentials.swift b/Frameworks/Secrets/Credentials.swift similarity index 100% rename from Frameworks/Account/Credentials/Credentials.swift rename to Frameworks/Secrets/Credentials.swift diff --git a/Frameworks/Account/Credentials/CredentialsManager.swift b/Frameworks/Secrets/CredentialsManager.swift similarity index 100% rename from Frameworks/Account/Credentials/CredentialsManager.swift rename to Frameworks/Secrets/CredentialsManager.swift diff --git a/Frameworks/Secrets/Info.plist b/Frameworks/Secrets/Info.plist new file mode 100644 index 000000000..b8d61ba53 --- /dev/null +++ b/Frameworks/Secrets/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSHumanReadableCopyright + Copyright © 2020 Ranchero Software, LLC. All rights reserved. + + diff --git a/Shared/Secrets.swift.gyb b/Frameworks/Secrets/Secrets.swift.gyb similarity index 100% rename from Shared/Secrets.swift.gyb rename to Frameworks/Secrets/Secrets.swift.gyb diff --git a/Frameworks/Secrets/Secrets.xcodeproj/project.pbxproj b/Frameworks/Secrets/Secrets.xcodeproj/project.pbxproj new file mode 100644 index 000000000..e31b78c2a --- /dev/null +++ b/Frameworks/Secrets/Secrets.xcodeproj/project.pbxproj @@ -0,0 +1,261 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 514446BE243FFF0300EE752D /* Secrets_project_release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 514446B9243FFF0200EE752D /* Secrets_project_release.xcconfig */; }; + 514446BF243FFF0300EE752D /* Secrets_project_test.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 514446BA243FFF0200EE752D /* Secrets_project_test.xcconfig */; }; + 514446C0243FFF0300EE752D /* Secrets_project_debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 514446BB243FFF0200EE752D /* Secrets_project_debug.xcconfig */; }; + 514446C1243FFF0300EE752D /* Secrets_project.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 514446BC243FFF0200EE752D /* Secrets_project.xcconfig */; }; + 514446C2243FFF0300EE752D /* Secrets_target.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 514446BD243FFF0300EE752D /* Secrets_target.xcconfig */; }; + 514446ED2440030900EE752D /* Secrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514446EC2440030900EE752D /* Secrets.swift */; }; + 514BB43B243FFBFF0023B621 /* CredentialsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514BB439243FFBFF0023B621 /* CredentialsManager.swift */; }; + 514BB43C243FFBFF0023B621 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514BB43A243FFBFF0023B621 /* Credentials.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 514446B9243FFF0200EE752D /* Secrets_project_release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Secrets_project_release.xcconfig; sourceTree = ""; }; + 514446BA243FFF0200EE752D /* Secrets_project_test.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Secrets_project_test.xcconfig; sourceTree = ""; }; + 514446BB243FFF0200EE752D /* Secrets_project_debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Secrets_project_debug.xcconfig; sourceTree = ""; }; + 514446BC243FFF0200EE752D /* Secrets_project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Secrets_project.xcconfig; sourceTree = ""; }; + 514446BD243FFF0300EE752D /* Secrets_target.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Secrets_target.xcconfig; sourceTree = ""; }; + 514446EC2440030900EE752D /* Secrets.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Secrets.swift; sourceTree = ""; }; + 514BB41A243FFA640023B621 /* Secrets.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Secrets.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 514BB41E243FFA640023B621 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 514BB439243FFBFF0023B621 /* CredentialsManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CredentialsManager.swift; sourceTree = ""; }; + 514BB43A243FFBFF0023B621 /* Credentials.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 514BB417243FFA640023B621 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 514BB410243FFA640023B621 = { + isa = PBXGroup; + children = ( + 514446EC2440030900EE752D /* Secrets.swift */, + 514BB43A243FFBFF0023B621 /* Credentials.swift */, + 514BB439243FFBFF0023B621 /* CredentialsManager.swift */, + 514BB42B243FFAF50023B621 /* xcconfig */, + 514BB41E243FFA640023B621 /* Info.plist */, + 514BB41B243FFA640023B621 /* Products */, + ); + sourceTree = ""; + }; + 514BB41B243FFA640023B621 /* Products */ = { + isa = PBXGroup; + children = ( + 514BB41A243FFA640023B621 /* Secrets.framework */, + ); + name = Products; + sourceTree = ""; + }; + 514BB42B243FFAF50023B621 /* xcconfig */ = { + isa = PBXGroup; + children = ( + 514446BB243FFF0200EE752D /* Secrets_project_debug.xcconfig */, + 514446B9243FFF0200EE752D /* Secrets_project_release.xcconfig */, + 514446BA243FFF0200EE752D /* Secrets_project_test.xcconfig */, + 514446BC243FFF0200EE752D /* Secrets_project.xcconfig */, + 514446BD243FFF0300EE752D /* Secrets_target.xcconfig */, + ); + path = xcconfig; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 514BB415243FFA640023B621 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 514BB419243FFA640023B621 /* Secrets */ = { + isa = PBXNativeTarget; + buildConfigurationList = 514BB422243FFA640023B621 /* Build configuration list for PBXNativeTarget "Secrets" */; + buildPhases = ( + 514BB415243FFA640023B621 /* Headers */, + 514BB416243FFA640023B621 /* Sources */, + 514BB417243FFA640023B621 /* Frameworks */, + 514BB418243FFA640023B621 /* Resources */, + 514BB438243FFBB30023B621 /* Run Script: Verfiy No Build Settings */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Secrets; + productName = Credentials; + productReference = 514BB41A243FFA640023B621 /* Secrets.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 514BB411243FFA640023B621 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1140; + ORGANIZATIONNAME = "Ranchero Software, LLC"; + TargetAttributes = { + 514BB419243FFA640023B621 = { + CreatedOnToolsVersion = 11.4; + }; + }; + }; + buildConfigurationList = 514BB414243FFA640023B621 /* Build configuration list for PBXProject "Secrets" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 514BB410243FFA640023B621; + productRefGroup = 514BB41B243FFA640023B621 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 514BB419243FFA640023B621 /* Secrets */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 514BB418243FFA640023B621 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 514446C0243FFF0300EE752D /* Secrets_project_debug.xcconfig in Resources */, + 514446BF243FFF0300EE752D /* Secrets_project_test.xcconfig in Resources */, + 514446C2243FFF0300EE752D /* Secrets_target.xcconfig in Resources */, + 514446C1243FFF0300EE752D /* Secrets_project.xcconfig in Resources */, + 514446BE243FFF0300EE752D /* Secrets_project_release.xcconfig in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 514BB438243FFBB30023B621 /* Run Script: Verfiy No Build Settings */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Run Script: Verfiy No Build Settings"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "xcrun -sdk macosx swiftc -target x86_64-macosx10.11 ../../buildscripts/VerifyNoBuildSettings.swift -o $CONFIGURATION_TEMP_DIR/VerifyNoBS\n$CONFIGURATION_TEMP_DIR/VerifyNoBS ${PROJECT_NAME}.xcodeproj/project.pbxproj\n\nif [ $? -ne 0 ]\nthen\n echo \"error: Build Setting were found in the project.pbxproj file. Most likely you didn't intend to change this file and should revert it.\"\n exit 1\nfi\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 514BB416243FFA640023B621 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 514BB43C243FFBFF0023B621 /* Credentials.swift in Sources */, + 514446ED2440030900EE752D /* Secrets.swift in Sources */, + 514BB43B243FFBFF0023B621 /* CredentialsManager.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 514BB420243FFA640023B621 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 514446BB243FFF0200EE752D /* Secrets_project_debug.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 514BB421243FFA640023B621 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 514446B9243FFF0200EE752D /* Secrets_project_release.xcconfig */; + buildSettings = { + }; + name = Release; + }; + 514BB423243FFA640023B621 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 514446BD243FFF0300EE752D /* Secrets_target.xcconfig */; + buildSettings = { + PRODUCT_NAME = Secrets; + }; + name = Debug; + }; + 514BB424243FFA640023B621 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 514446BD243FFF0300EE752D /* Secrets_target.xcconfig */; + buildSettings = { + PRODUCT_NAME = Secrets; + }; + name = Release; + }; + 514BB436243FFB800023B621 /* Test */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 514446BA243FFF0200EE752D /* Secrets_project_test.xcconfig */; + buildSettings = { + }; + name = Test; + }; + 514BB437243FFB800023B621 /* Test */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 514446BD243FFF0300EE752D /* Secrets_target.xcconfig */; + buildSettings = { + PRODUCT_NAME = Secrets; + }; + name = Test; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 514BB414243FFA640023B621 /* Build configuration list for PBXProject "Secrets" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 514BB420243FFA640023B621 /* Debug */, + 514BB436243FFB800023B621 /* Test */, + 514BB421243FFA640023B621 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 514BB422243FFA640023B621 /* Build configuration list for PBXNativeTarget "Secrets" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 514BB423243FFA640023B621 /* Debug */, + 514BB437243FFB800023B621 /* Test */, + 514BB424243FFA640023B621 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 514BB411243FFA640023B621 /* Project object */; +} diff --git a/Frameworks/Secrets/xcconfig/Secrets_project.xcconfig b/Frameworks/Secrets/xcconfig/Secrets_project.xcconfig new file mode 100644 index 000000000..573284972 --- /dev/null +++ b/Frameworks/Secrets/xcconfig/Secrets_project.xcconfig @@ -0,0 +1,61 @@ +CODE_SIGN_IDENTITY = Developer ID Application +DEVELOPMENT_TEAM = M8L2WTLA8W +CODE_SIGN_STYLE = Manual +PROVISIONING_PROFILE_SPECIFIER = + +// See the notes in NetNewsWire_target.xcconfig on why the +// DeveloperSettings.xcconfig is #included here + +#include? "../../../SharedXcodeSettings/DeveloperSettings.xcconfig" + +SDKROOT = macosx +MACOSX_DEPLOYMENT_TARGET = 10.14 +IPHONEOS_DEPLOYMENT_TARGET = 13.0 +SUPPORTED_PLATFORMS = macosx iphoneos iphonesimulator + +CLANG_ENABLE_OBJC_WEAK = YES +SWIFT_VERSION = 5.1 +COMBINE_HIDPI_IMAGES = YES + +COPY_PHASE_STRIP = NO +ALWAYS_SEARCH_USER_PATHS = NO +CURRENT_PROJECT_VERSION = 1 +VERSION_INFO_PREFIX = +VERSIONING_SYSTEM = apple-generic +GCC_NO_COMMON_BLOCKS = YES +GCC_C_LANGUAGE_STANDARD = gnu99 +CLANG_CXX_LANGUAGE_STANDARD = gnu++0x +CLANG_CXX_LIBRARY = libc++ +CLANG_ENABLE_MODULES = YES +CLANG_ENABLE_OBJC_ARC = YES +ENABLE_STRICT_OBJC_MSGSEND = YES +CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES +CLANG_WARN_DOCUMENTATION_COMMENTS = YES +CLANG_WARN_EMPTY_BODY = YES +CLANG_WARN_BOOL_CONVERSION = YES +CLANG_WARN_CONSTANT_CONVERSION = YES +GCC_WARN_64_TO_32_BIT_CONVERSION = YES +CLANG_WARN_ENUM_CONVERSION = YES +CLANG_WARN_INT_CONVERSION = YES +CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES +CLANG_WARN_INFINITE_RECURSION = YES +GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE +CLANG_WARN_UNREACHABLE_CODE = YES +GCC_WARN_UNUSED_FUNCTION = YES +GCC_WARN_UNUSED_VARIABLE = YES +CLANG_WARN_RANGE_LOOP_ANALYSIS = YES +CLANG_WARN_SUSPICIOUS_MOVE = YES +CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_OBJC_LITERAL_CONVERSION = YES +CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +CLANG_ANALYZER_NONNULL = YES +CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE +SWIFT_SWIFT3_OBJC_INFERENCE = Off diff --git a/Frameworks/Secrets/xcconfig/Secrets_project_debug.xcconfig b/Frameworks/Secrets/xcconfig/Secrets_project_debug.xcconfig new file mode 100644 index 000000000..94c3e5164 --- /dev/null +++ b/Frameworks/Secrets/xcconfig/Secrets_project_debug.xcconfig @@ -0,0 +1,15 @@ +#include "./Secrets_project.xcconfig" + +DEBUG_INFORMATION_FORMAT = dwarf +ENABLE_TESTABILITY = YES +GCC_DYNAMIC_NO_PIC = NO +GCC_OPTIMIZATION_LEVEL = 0 +GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1 $(inherited) + +MTL_ENABLE_DEBUG_INFO = YES +SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG +SWIFT_COMPILATION_MODE = singlefile +SWIFT_OPTIMIZATION_LEVEL = -Onone +ONLY_ACTIVE_ARCH = YES + + diff --git a/Frameworks/Secrets/xcconfig/Secrets_project_release.xcconfig b/Frameworks/Secrets/xcconfig/Secrets_project_release.xcconfig new file mode 100644 index 000000000..4fd9ec377 --- /dev/null +++ b/Frameworks/Secrets/xcconfig/Secrets_project_release.xcconfig @@ -0,0 +1,9 @@ +#include "./Secret_project.xcconfig" + +DEBUG_INFORMATION_FORMAT = dwarf-with-dsym +ENABLE_NS_ASSERTIONS = NO + +MTL_ENABLE_DEBUG_INFO = NO +SWIFT_OPTIMIZATION_LEVEL = -O + +SWIFT_COMPILATION_MODE = wholemodule diff --git a/Frameworks/Secrets/xcconfig/Secrets_project_test.xcconfig b/Frameworks/Secrets/xcconfig/Secrets_project_test.xcconfig new file mode 100644 index 000000000..77fe155da --- /dev/null +++ b/Frameworks/Secrets/xcconfig/Secrets_project_test.xcconfig @@ -0,0 +1,3 @@ +#include "./Secrets_project_debug.xcconfig" + +OTHER_SWIFT_FLAGS = -DTEST $(inherited) diff --git a/Frameworks/Secrets/xcconfig/Secrets_target.xcconfig b/Frameworks/Secrets/xcconfig/Secrets_target.xcconfig new file mode 100644 index 000000000..fcb096eab --- /dev/null +++ b/Frameworks/Secrets/xcconfig/Secrets_target.xcconfig @@ -0,0 +1,13 @@ +INSTALL_PATH = $(LOCAL_LIBRARY_DIR)/Frameworks +SKIP_INSTALL = YES +DYLIB_COMPATIBILITY_VERSION = 1 +DYLIB_CURRENT_VERSION = 1 +DYLIB_INSTALL_NAME_BASE = @rpath +LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/../Frameworks @loader_path/Frameworks +DEFINES_MODULE = YES +FRAMEWORK_VERSION = A +INFOPLIST_FILE = Info.plist +PRODUCT_BUNDLE_IDENTIFIER = com.ranchero.Secrets +PRODUCT_NAME = $(TARGET_NAME) +CLANG_ENABLE_MODULES = YES +APPLICATION_EXTENSION_API_ONLY = YES diff --git a/Mac/Preferences/Accounts/AccountsFeedWranglerWindowController.swift b/Mac/Preferences/Accounts/AccountsFeedWranglerWindowController.swift index b0e62b26e..22eaf0097 100644 --- a/Mac/Preferences/Accounts/AccountsFeedWranglerWindowController.swift +++ b/Mac/Preferences/Accounts/AccountsFeedWranglerWindowController.swift @@ -9,6 +9,7 @@ import AppKit import Account import RSWeb +import Secrets class AccountsFeedWranglerWindowController: NSWindowController { @IBOutlet weak var progressIndicator: NSProgressIndicator! diff --git a/Mac/Preferences/Accounts/AccountsFeedbinWindowController.swift b/Mac/Preferences/Accounts/AccountsFeedbinWindowController.swift index defd7f186..711ab2758 100644 --- a/Mac/Preferences/Accounts/AccountsFeedbinWindowController.swift +++ b/Mac/Preferences/Accounts/AccountsFeedbinWindowController.swift @@ -9,6 +9,7 @@ import AppKit import Account import RSWeb +import Secrets class AccountsFeedbinWindowController: NSWindowController { diff --git a/Mac/Preferences/Accounts/AccountsNewsBlurWindowController.swift b/Mac/Preferences/Accounts/AccountsNewsBlurWindowController.swift index cae19a31a..d1b1a2bb8 100644 --- a/Mac/Preferences/Accounts/AccountsNewsBlurWindowController.swift +++ b/Mac/Preferences/Accounts/AccountsNewsBlurWindowController.swift @@ -9,6 +9,7 @@ import AppKit import Account import RSWeb +import Secrets class AccountsNewsBlurWindowController: NSWindowController { @IBOutlet weak var progressIndicator: NSProgressIndicator! diff --git a/Mac/Preferences/Accounts/AccountsReaderAPIWindowController.swift b/Mac/Preferences/Accounts/AccountsReaderAPIWindowController.swift index 80aa69c7c..948902a21 100644 --- a/Mac/Preferences/Accounts/AccountsReaderAPIWindowController.swift +++ b/Mac/Preferences/Accounts/AccountsReaderAPIWindowController.swift @@ -9,6 +9,7 @@ import AppKit import Account import RSWeb +import Secrets class AccountsReaderAPIWindowController: NSWindowController { diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 23ad5baab..11cc4990e 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -16,6 +16,14 @@ 3B826DCE2385C89600FC1ADB /* AccountsFeedWranglerWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B826DCA2385C84800FC1ADB /* AccountsFeedWranglerWindowController.swift */; }; 49F40DF82335B71000552BF4 /* newsfoot.js in Resources */ = {isa = PBXBuildFile; fileRef = 49F40DEF2335B71000552BF4 /* newsfoot.js */; }; 49F40DF92335B71000552BF4 /* newsfoot.js in Resources */ = {isa = PBXBuildFile; fileRef = 49F40DEF2335B71000552BF4 /* newsfoot.js */; }; + 5102FD83244009F000534F17 /* Secrets.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5102FD7B244008A700534F17 /* Secrets.framework */; }; + 5102FD84244009F000534F17 /* Secrets.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5102FD7B244008A700534F17 /* Secrets.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 5102FD9B244009FA00534F17 /* Secrets.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5102FD7B244008A700534F17 /* Secrets.framework */; }; + 5102FD9C244009FA00534F17 /* Secrets.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5102FD7B244008A700534F17 /* Secrets.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 5102FD9D24400A0500534F17 /* Secrets.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5102FD7B244008A700534F17 /* Secrets.framework */; }; + 5102FD9E24400A0500534F17 /* Secrets.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5102FD7B244008A700534F17 /* Secrets.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 5102FD9F24400A1400534F17 /* Secrets.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5102FD7B244008A700534F17 /* Secrets.framework */; }; + 5102FDA224400A2000534F17 /* Secrets.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5102FD7B244008A700534F17 /* Secrets.framework */; }; 5103A9982421643300410853 /* blank.html in Resources */ = {isa = PBXBuildFile; fileRef = 5103A9972421643300410853 /* blank.html */; }; 5103A9992421643300410853 /* blank.html in Resources */ = {isa = PBXBuildFile; fileRef = 5103A9972421643300410853 /* blank.html */; }; 5103A9B424216A4200410853 /* blank.html in Resources */ = {isa = PBXBuildFile; fileRef = 5103A9B324216A4200410853 /* blank.html */; }; @@ -728,6 +736,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 5102FD7A244008A700534F17 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5102FD72244008A700534F17 /* Secrets.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 514BB41A243FFA640023B621; + remoteInfo = Secrets; + }; 51107671243BCE0500D97C8C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 5110766A243BCE0400D97C8C /* FeedProvider.xcodeproj */; @@ -1212,6 +1227,7 @@ 51C451E92264C81000C03939 /* RSDatabase.framework in Embed Frameworks */, 51554C31228B71A10055115A /* SyncDatabase.framework in Embed Frameworks */, 51C451ED2264C81B00C03939 /* RSCore.framework in Embed Frameworks */, + 5102FD9E24400A0500534F17 /* Secrets.framework in Embed Frameworks */, 51C451E52264C80600C03939 /* RSParser.framework in Embed Frameworks */, ); name = "Embed Frameworks"; @@ -1243,6 +1259,7 @@ 65ED4078235DEF6C0081F399 /* RSParser.framework in Embed Frameworks */, 511076FA243BDA9600D97C8C /* FeedProvider.framework in Embed Frameworks */, 65ED4079235DEF6C0081F399 /* SyncDatabase.framework in Embed Frameworks */, + 5102FD9C244009FA00534F17 /* Secrets.framework in Embed Frameworks */, 65ED407A235DEF6C0081F399 /* RSCore.framework in Embed Frameworks */, ); name = "Embed Frameworks"; @@ -1281,6 +1298,7 @@ files = ( 84C37FAA20DD8D9000CA8CF5 /* RSWeb.framework in Embed Frameworks */, 511076F8243BDA8200D97C8C /* FeedProvider.framework in Embed Frameworks */, + 5102FD84244009F000534F17 /* Secrets.framework in Embed Frameworks */, 84C37FC620DD8E1D00CA8CF5 /* RSDatabase.framework in Embed Frameworks */, 84C37FAE20DD8D9900CA8CF5 /* RSTree.framework in Embed Frameworks */, 51C451AA226377C200C03939 /* ArticlesDatabase.framework in Embed Frameworks */, @@ -1311,6 +1329,7 @@ 3B826DB02385C84800FC1ADB /* AccountsFeedWrangler.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AccountsFeedWrangler.xib; sourceTree = ""; }; 3B826DCA2385C84800FC1ADB /* AccountsFeedWranglerWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsFeedWranglerWindowController.swift; sourceTree = ""; }; 49F40DEF2335B71000552BF4 /* newsfoot.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = newsfoot.js; sourceTree = ""; }; + 5102FD72244008A700534F17 /* Secrets.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Secrets.xcodeproj; path = Frameworks/Secrets/Secrets.xcodeproj; sourceTree = SOURCE_ROOT; }; 5103A9972421643300410853 /* blank.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = blank.html; sourceTree = ""; }; 5103A9B324216A4200410853 /* blank.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = blank.html; sourceTree = ""; }; 5103A9DA242258C600410853 /* AccountsAddCloudKit.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AccountsAddCloudKit.xib; sourceTree = ""; }; @@ -1732,6 +1751,7 @@ 513146BA235A8FD000387FDC /* RSTree.framework in Frameworks */, 513146C5235A8FDB00387FDC /* SyncDatabase.framework in Frameworks */, 513146B4235A8FD000387FDC /* RSCore.framework in Frameworks */, + 5102FDA224400A2000534F17 /* Secrets.framework in Frameworks */, 513146B8235A8FD000387FDC /* RSParser.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1748,6 +1768,7 @@ 513C5D06232574C0003D4054 /* RSDatabase.framework in Frameworks */, 513C5D0E232574E4003D4054 /* SyncDatabase.framework in Frameworks */, 513C5D04232574B9003D4054 /* RSCore.framework in Frameworks */, + 5102FD9F24400A1400534F17 /* Secrets.framework in Frameworks */, 513C5D02232574B4003D4054 /* ArticlesDatabase.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1779,6 +1800,7 @@ 65ED4049235DEF6C0081F399 /* Articles.framework in Frameworks */, 511076F9243BDA9600D97C8C /* FeedProvider.framework in Frameworks */, 65ED404A235DEF6C0081F399 /* RSCore.framework in Frameworks */, + 5102FD9B244009FA00534F17 /* Secrets.framework in Frameworks */, 65ED404B235DEF6C0081F399 /* SyncDatabase.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1796,6 +1818,7 @@ files = ( 51C452B42265141B00C03939 /* WebKit.framework in Frameworks */, 51C451D22264C7F200C03939 /* RSWeb.framework in Frameworks */, + 5102FD9D24400A0500534F17 /* Secrets.framework in Frameworks */, 51C451E02264C7F900C03939 /* RSTree.framework in Frameworks */, 51C451F82264C83E00C03939 /* Account.framework in Frameworks */, 51C451F02264C83100C03939 /* ArticlesDatabase.framework in Frameworks */, @@ -1824,6 +1847,7 @@ 51C451B9226377C900C03939 /* Articles.framework in Frameworks */, 51E4DAED2425F6940091EB5B /* CloudKit.framework in Frameworks */, 84C37FA520DD8D8400CA8CF5 /* RSCore.framework in Frameworks */, + 5102FD83244009F000534F17 /* Secrets.framework in Frameworks */, 51554C24228B71910055115A /* SyncDatabase.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1838,6 +1862,14 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 5102FD73244008A700534F17 /* Products */ = { + isa = PBXGroup; + children = ( + 5102FD7B244008A700534F17 /* Secrets.framework */, + ); + name = Products; + sourceTree = ""; + }; 510C43F5243D0325009F70C3 /* ExtensionPoints */ = { isa = PBXGroup; children = ( @@ -2659,6 +2691,7 @@ children = ( 846E77301F6EF5D600A165E2 /* Account.xcodeproj */, 5110766A243BCE0400D97C8C /* FeedProvider.xcodeproj */, + 5102FD72244008A700534F17 /* Secrets.xcodeproj */, 841D4D542106B3D500DD04E6 /* Articles.xcodeproj */, 841D4D5E2106B3E100DD04E6 /* ArticlesDatabase.xcodeproj */, 51554BFC228B6EB50055115A /* SyncDatabase.xcodeproj */, @@ -3261,6 +3294,10 @@ ProductGroup = 84C37F9920DD8D0400CA8CF5 /* Products */; ProjectRef = 84C37F9820DD8D0400CA8CF5 /* RSWeb.xcodeproj */; }, + { + ProductGroup = 5102FD73244008A700534F17 /* Products */; + ProjectRef = 5102FD72244008A700534F17 /* Secrets.xcodeproj */; + }, { ProductGroup = 65ED429A235E71B40081F399 /* Products */; ProjectRef = 65ED4299235E71B40081F399 /* Sparkle.xcodeproj */; @@ -3286,6 +3323,13 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ + 5102FD7B244008A700534F17 /* Secrets.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = Secrets.framework; + remoteRef = 5102FD7A244008A700534F17 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 51107672243BCE0500D97C8C /* FeedProvider.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; diff --git a/Shared/Article Extractor/ArticleExtractor.swift b/Shared/Article Extractor/ArticleExtractor.swift index 35db6f0f1..6e442b268 100644 --- a/Shared/Article Extractor/ArticleExtractor.swift +++ b/Shared/Article Extractor/ArticleExtractor.swift @@ -8,6 +8,7 @@ import Foundation import Account +import Secrets public enum ArticleExtractorState { case ready