diff --git a/Sources/CoreATProtocol/OAuth/ATProtoOAuth.swift b/Sources/CoreATProtocol/OAuth/ATProtoOAuth.swift index abd51bd..0215474 100644 --- a/Sources/CoreATProtocol/OAuth/ATProtoOAuth.swift +++ b/Sources/CoreATProtocol/OAuth/ATProtoOAuth.swift @@ -46,24 +46,18 @@ public struct ATProtoAuthStorage: Sendable { public let storeLogin: @Sendable (Login) async throws -> Void public let retrievePrivateKey: @Sendable () async throws -> Data? public let storePrivateKey: @Sendable (Data) async throws -> Void - public let retrieveAuthProxyKeyID: (@Sendable () async throws -> String?)? - public let storeAuthProxyKeyID: (@Sendable (String) async throws -> Void)? - public let clearAuthProxyKeyID: (@Sendable () async throws -> Void)? - public let retrieveAuthProxyKeyIDForLogin: (@Sendable (Login) async throws -> String?)? - public let storeAuthProxyKeyIDForLogin: (@Sendable (Login, String) async throws -> Void)? - public let clearAuthProxyKeyIDForLogin: (@Sendable (Login) async throws -> Void)? + public let retrieveAuthProxyKeyID: (@Sendable (Login) async throws -> String?)? + public let storeAuthProxyKeyID: (@Sendable (Login, String) async throws -> Void)? + public let clearAuthProxyKeyID: (@Sendable (Login) async throws -> Void)? public init( retrieveLogin: @escaping @Sendable () async throws -> Login?, storeLogin: @escaping @Sendable (Login) async throws -> Void, retrievePrivateKey: @escaping @Sendable () async throws -> Data?, storePrivateKey: @escaping @Sendable (Data) async throws -> Void, - retrieveAuthProxyKeyID: (@Sendable () async throws -> String?)? = nil, - storeAuthProxyKeyID: (@Sendable (String) async throws -> Void)? = nil, - clearAuthProxyKeyID: (@Sendable () async throws -> Void)? = nil, - retrieveAuthProxyKeyIDForLogin: (@Sendable (Login) async throws -> String?)? = nil, - storeAuthProxyKeyIDForLogin: (@Sendable (Login, String) async throws -> Void)? = nil, - clearAuthProxyKeyIDForLogin: (@Sendable (Login) async throws -> Void)? = nil + retrieveAuthProxyKeyID: (@Sendable (Login) async throws -> String?)? = nil, + storeAuthProxyKeyID: (@Sendable (Login, String) async throws -> Void)? = nil, + clearAuthProxyKeyID: (@Sendable (Login) async throws -> Void)? = nil ) { self.retrieveLogin = retrieveLogin self.storeLogin = storeLogin @@ -72,9 +66,6 @@ public struct ATProtoAuthStorage: Sendable { self.retrieveAuthProxyKeyID = retrieveAuthProxyKeyID self.storeAuthProxyKeyID = storeAuthProxyKeyID self.clearAuthProxyKeyID = clearAuthProxyKeyID - self.retrieveAuthProxyKeyIDForLogin = retrieveAuthProxyKeyIDForLogin - self.storeAuthProxyKeyIDForLogin = storeAuthProxyKeyIDForLogin - self.clearAuthProxyKeyIDForLogin = clearAuthProxyKeyIDForLogin } } @@ -632,33 +623,16 @@ public final class ATProtoOAuth: Sendable { } private func retrieveAuthProxyKeyID(for login: Login) async -> String? { - if let retrieveForLogin = storage.retrieveAuthProxyKeyIDForLogin { - return try? await retrieveForLogin(login) - } - - if let retrieve = storage.retrieveAuthProxyKeyID { - return try? await retrieve() - } - - return nil + try? await storage.retrieveAuthProxyKeyID?(login) } private func persistAuthProxyKeyID(_ keyID: String, for login: Login) async { - if let storeForLogin = storage.storeAuthProxyKeyIDForLogin { - try? await storeForLogin(login, keyID) - return - } - - try? await storage.storeAuthProxyKeyID?(keyID) + try? await storage.storeAuthProxyKeyID?(login, keyID) } private func clearAuthProxyKeyID(for login: Login?) async { - if let login, let clearForLogin = storage.clearAuthProxyKeyIDForLogin { - try? await clearForLogin(login) - return - } - - try? await storage.clearAuthProxyKeyID?() + guard let login else { return } + try? await storage.clearAuthProxyKeyID?(login) } private func buildTokenHandling( diff --git a/Tests/CoreATProtocolTests/OAuthTests.swift b/Tests/CoreATProtocolTests/OAuthTests.swift index 5a22364..e7a42f3 100644 --- a/Tests/CoreATProtocolTests/OAuthTests.swift +++ b/Tests/CoreATProtocolTests/OAuthTests.swift @@ -315,30 +315,6 @@ struct AuthProxyTests { #expect(value == "existing-key") } - @Test("ATProtoAuthStorage accepts auth proxy key ID closures") - func testStorageWithProxyKeyID() async throws { - let keyIDHolder = AuthProxyKeyIDStorage() - - let storage = ATProtoAuthStorage( - retrieveLogin: { nil }, - storeLogin: { _ in }, - retrievePrivateKey: { nil }, - storePrivateKey: { _ in }, - retrieveAuthProxyKeyID: { await keyIDHolder.keyID }, - storeAuthProxyKeyID: { await keyIDHolder.update($0) } - ) - - #expect(storage.retrieveAuthProxyKeyID != nil) - #expect(storage.storeAuthProxyKeyID != nil) - - let initial = try await storage.retrieveAuthProxyKeyID?() - #expect(initial == nil) - - try await storage.storeAuthProxyKeyID?("test-key") - let retrieved = try await storage.retrieveAuthProxyKeyID?() - #expect(retrieved == "test-key") - } - @Test("ATProtoAuthStorage accepts session-scoped auth proxy key ID closures") func testStorageWithSessionScopedProxyKeyID() async throws { actor SessionKeyIDStore { @@ -368,30 +344,30 @@ struct AuthProxyTests { storeLogin: { _ in }, retrievePrivateKey: { nil }, storePrivateKey: { _ in }, - retrieveAuthProxyKeyIDForLogin: { login in + retrieveAuthProxyKeyID: { login in await sessionStore.retrieve(for: login) }, - storeAuthProxyKeyIDForLogin: { login, keyID in + storeAuthProxyKeyID: { login, keyID in await sessionStore.store(login: login, keyID: keyID) }, - clearAuthProxyKeyIDForLogin: { login in + clearAuthProxyKeyID: { login in await sessionStore.clear(for: login) } ) - #expect(storage.retrieveAuthProxyKeyIDForLogin != nil) - #expect(storage.storeAuthProxyKeyIDForLogin != nil) - #expect(storage.clearAuthProxyKeyIDForLogin != nil) + #expect(storage.retrieveAuthProxyKeyID != nil) + #expect(storage.storeAuthProxyKeyID != nil) + #expect(storage.clearAuthProxyKeyID != nil) - let initial = try await storage.retrieveAuthProxyKeyIDForLogin?(login) + let initial = try await storage.retrieveAuthProxyKeyID?(login) #expect(initial == nil) - try await storage.storeAuthProxyKeyIDForLogin?(login, "proxy-key") - let stored = try await storage.retrieveAuthProxyKeyIDForLogin?(login) + try await storage.storeAuthProxyKeyID?(login, "proxy-key") + let stored = try await storage.retrieveAuthProxyKeyID?(login) #expect(stored == "proxy-key") - try await storage.clearAuthProxyKeyIDForLogin?(login) - let cleared = try await storage.retrieveAuthProxyKeyIDForLogin?(login) + try await storage.clearAuthProxyKeyID?(login) + let cleared = try await storage.retrieveAuthProxyKeyID?(login) #expect(cleared == nil) } @@ -407,9 +383,6 @@ struct AuthProxyTests { #expect(storage.retrieveAuthProxyKeyID == nil) #expect(storage.storeAuthProxyKeyID == nil) #expect(storage.clearAuthProxyKeyID == nil) - #expect(storage.retrieveAuthProxyKeyIDForLogin == nil) - #expect(storage.storeAuthProxyKeyIDForLogin == nil) - #expect(storage.clearAuthProxyKeyIDForLogin == nil) } }