this repo has no description
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Remove backwards-compat global auth proxy key ID closures in favor of session-scoped Login-keyed storage

+21 -74
+10 -36
Sources/CoreATProtocol/OAuth/ATProtoOAuth.swift
··· 46 46 public let storeLogin: @Sendable (Login) async throws -> Void 47 47 public let retrievePrivateKey: @Sendable () async throws -> Data? 48 48 public let storePrivateKey: @Sendable (Data) async throws -> Void 49 - public let retrieveAuthProxyKeyID: (@Sendable () async throws -> String?)? 50 - public let storeAuthProxyKeyID: (@Sendable (String) async throws -> Void)? 51 - public let clearAuthProxyKeyID: (@Sendable () async throws -> Void)? 52 - public let retrieveAuthProxyKeyIDForLogin: (@Sendable (Login) async throws -> String?)? 53 - public let storeAuthProxyKeyIDForLogin: (@Sendable (Login, String) async throws -> Void)? 54 - public let clearAuthProxyKeyIDForLogin: (@Sendable (Login) async throws -> Void)? 49 + public let retrieveAuthProxyKeyID: (@Sendable (Login) async throws -> String?)? 50 + public let storeAuthProxyKeyID: (@Sendable (Login, String) async throws -> Void)? 51 + public let clearAuthProxyKeyID: (@Sendable (Login) async throws -> Void)? 55 52 56 53 public init( 57 54 retrieveLogin: @escaping @Sendable () async throws -> Login?, 58 55 storeLogin: @escaping @Sendable (Login) async throws -> Void, 59 56 retrievePrivateKey: @escaping @Sendable () async throws -> Data?, 60 57 storePrivateKey: @escaping @Sendable (Data) async throws -> Void, 61 - retrieveAuthProxyKeyID: (@Sendable () async throws -> String?)? = nil, 62 - storeAuthProxyKeyID: (@Sendable (String) async throws -> Void)? = nil, 63 - clearAuthProxyKeyID: (@Sendable () async throws -> Void)? = nil, 64 - retrieveAuthProxyKeyIDForLogin: (@Sendable (Login) async throws -> String?)? = nil, 65 - storeAuthProxyKeyIDForLogin: (@Sendable (Login, String) async throws -> Void)? = nil, 66 - clearAuthProxyKeyIDForLogin: (@Sendable (Login) async throws -> Void)? = nil 58 + retrieveAuthProxyKeyID: (@Sendable (Login) async throws -> String?)? = nil, 59 + storeAuthProxyKeyID: (@Sendable (Login, String) async throws -> Void)? = nil, 60 + clearAuthProxyKeyID: (@Sendable (Login) async throws -> Void)? = nil 67 61 ) { 68 62 self.retrieveLogin = retrieveLogin 69 63 self.storeLogin = storeLogin ··· 72 66 self.retrieveAuthProxyKeyID = retrieveAuthProxyKeyID 73 67 self.storeAuthProxyKeyID = storeAuthProxyKeyID 74 68 self.clearAuthProxyKeyID = clearAuthProxyKeyID 75 - self.retrieveAuthProxyKeyIDForLogin = retrieveAuthProxyKeyIDForLogin 76 - self.storeAuthProxyKeyIDForLogin = storeAuthProxyKeyIDForLogin 77 - self.clearAuthProxyKeyIDForLogin = clearAuthProxyKeyIDForLogin 78 69 } 79 70 } 80 71 ··· 632 623 } 633 624 634 625 private func retrieveAuthProxyKeyID(for login: Login) async -> String? { 635 - if let retrieveForLogin = storage.retrieveAuthProxyKeyIDForLogin { 636 - return try? await retrieveForLogin(login) 637 - } 638 - 639 - if let retrieve = storage.retrieveAuthProxyKeyID { 640 - return try? await retrieve() 641 - } 642 - 643 - return nil 626 + try? await storage.retrieveAuthProxyKeyID?(login) 644 627 } 645 628 646 629 private func persistAuthProxyKeyID(_ keyID: String, for login: Login) async { 647 - if let storeForLogin = storage.storeAuthProxyKeyIDForLogin { 648 - try? await storeForLogin(login, keyID) 649 - return 650 - } 651 - 652 - try? await storage.storeAuthProxyKeyID?(keyID) 630 + try? await storage.storeAuthProxyKeyID?(login, keyID) 653 631 } 654 632 655 633 private func clearAuthProxyKeyID(for login: Login?) async { 656 - if let login, let clearForLogin = storage.clearAuthProxyKeyIDForLogin { 657 - try? await clearForLogin(login) 658 - return 659 - } 660 - 661 - try? await storage.clearAuthProxyKeyID?() 634 + guard let login else { return } 635 + try? await storage.clearAuthProxyKeyID?(login) 662 636 } 663 637 664 638 private func buildTokenHandling(
+11 -38
Tests/CoreATProtocolTests/OAuthTests.swift
··· 315 315 #expect(value == "existing-key") 316 316 } 317 317 318 - @Test("ATProtoAuthStorage accepts auth proxy key ID closures") 319 - func testStorageWithProxyKeyID() async throws { 320 - let keyIDHolder = AuthProxyKeyIDStorage() 321 - 322 - let storage = ATProtoAuthStorage( 323 - retrieveLogin: { nil }, 324 - storeLogin: { _ in }, 325 - retrievePrivateKey: { nil }, 326 - storePrivateKey: { _ in }, 327 - retrieveAuthProxyKeyID: { await keyIDHolder.keyID }, 328 - storeAuthProxyKeyID: { await keyIDHolder.update($0) } 329 - ) 330 - 331 - #expect(storage.retrieveAuthProxyKeyID != nil) 332 - #expect(storage.storeAuthProxyKeyID != nil) 333 - 334 - let initial = try await storage.retrieveAuthProxyKeyID?() 335 - #expect(initial == nil) 336 - 337 - try await storage.storeAuthProxyKeyID?("test-key") 338 - let retrieved = try await storage.retrieveAuthProxyKeyID?() 339 - #expect(retrieved == "test-key") 340 - } 341 - 342 318 @Test("ATProtoAuthStorage accepts session-scoped auth proxy key ID closures") 343 319 func testStorageWithSessionScopedProxyKeyID() async throws { 344 320 actor SessionKeyIDStore { ··· 368 344 storeLogin: { _ in }, 369 345 retrievePrivateKey: { nil }, 370 346 storePrivateKey: { _ in }, 371 - retrieveAuthProxyKeyIDForLogin: { login in 347 + retrieveAuthProxyKeyID: { login in 372 348 await sessionStore.retrieve(for: login) 373 349 }, 374 - storeAuthProxyKeyIDForLogin: { login, keyID in 350 + storeAuthProxyKeyID: { login, keyID in 375 351 await sessionStore.store(login: login, keyID: keyID) 376 352 }, 377 - clearAuthProxyKeyIDForLogin: { login in 353 + clearAuthProxyKeyID: { login in 378 354 await sessionStore.clear(for: login) 379 355 } 380 356 ) 381 357 382 - #expect(storage.retrieveAuthProxyKeyIDForLogin != nil) 383 - #expect(storage.storeAuthProxyKeyIDForLogin != nil) 384 - #expect(storage.clearAuthProxyKeyIDForLogin != nil) 358 + #expect(storage.retrieveAuthProxyKeyID != nil) 359 + #expect(storage.storeAuthProxyKeyID != nil) 360 + #expect(storage.clearAuthProxyKeyID != nil) 385 361 386 - let initial = try await storage.retrieveAuthProxyKeyIDForLogin?(login) 362 + let initial = try await storage.retrieveAuthProxyKeyID?(login) 387 363 #expect(initial == nil) 388 364 389 - try await storage.storeAuthProxyKeyIDForLogin?(login, "proxy-key") 390 - let stored = try await storage.retrieveAuthProxyKeyIDForLogin?(login) 365 + try await storage.storeAuthProxyKeyID?(login, "proxy-key") 366 + let stored = try await storage.retrieveAuthProxyKeyID?(login) 391 367 #expect(stored == "proxy-key") 392 368 393 - try await storage.clearAuthProxyKeyIDForLogin?(login) 394 - let cleared = try await storage.retrieveAuthProxyKeyIDForLogin?(login) 369 + try await storage.clearAuthProxyKeyID?(login) 370 + let cleared = try await storage.retrieveAuthProxyKeyID?(login) 395 371 #expect(cleared == nil) 396 372 } 397 373 ··· 407 383 #expect(storage.retrieveAuthProxyKeyID == nil) 408 384 #expect(storage.storeAuthProxyKeyID == nil) 409 385 #expect(storage.clearAuthProxyKeyID == nil) 410 - #expect(storage.retrieveAuthProxyKeyIDForLogin == nil) 411 - #expect(storage.storeAuthProxyKeyIDForLogin == nil) 412 - #expect(storage.clearAuthProxyKeyIDForLogin == nil) 413 386 } 414 387 } 415 388