• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

supabase / supabase-swift / 17321717294

29 Aug 2025 10:44AM UTC coverage: 78.634% (+1.2%) from 77.386%
17321717294

Pull #781

github

web-flow
Merge 80b20054e into e4d8c3718
Pull Request #781: RFC: Migrate HTTP networking from URLSession to Alamofire

1027 of 1123 new or added lines in 27 files covered. (91.45%)

27 existing lines in 8 files now uncovered.

5156 of 6557 relevant lines covered (78.63%)

29.27 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/Sources/Helpers/NetworkingConfig.swift
1
import Alamofire
2
import Foundation
3

4
package struct SupabaseNetworkingConfig: Sendable {
5
  package let session: Alamofire.Session
6
  package let logger: (any SupabaseLogger)?
7
  
8
  package init(
9
    session: Alamofire.Session = .default,
10
    logger: (any SupabaseLogger)? = nil
NEW
11
  ) {
×
NEW
12
    self.session = session
×
NEW
13
    self.logger = logger
×
NEW
14
  }
×
15
}
16

17
package struct SupabaseCredential: AuthenticationCredential, Sendable {
18
  package let accessToken: String
19
  
NEW
20
  package init(accessToken: String) {
×
NEW
21
    self.accessToken = accessToken
×
NEW
22
  }
×
23
  
NEW
24
  package var requiresRefresh: Bool { false }
×
25
}
26

27
package final class SupabaseAuthenticator: Authenticator, @unchecked Sendable {
28
  package typealias Credential = SupabaseCredential
29
  
30
  private let getAccessToken: @Sendable () async throws -> String?
31
  
NEW
32
  package init(getAccessToken: @escaping @Sendable () async throws -> String?) {
×
NEW
33
    self.getAccessToken = getAccessToken
×
NEW
34
  }
×
35
  
NEW
36
  package func apply(_ credential: SupabaseCredential, to urlRequest: inout URLRequest) {
×
NEW
37
    urlRequest.setValue("Bearer \(credential.accessToken)", forHTTPHeaderField: "Authorization")
×
NEW
38
  }
×
39
  
40
  package func refresh(
41
    _ credential: SupabaseCredential,
42
    for session: Alamofire.Session,
43
    completion: @escaping (Result<SupabaseCredential, any Error>) -> Void
NEW
44
  ) {
×
NEW
45
    Task {
×
NEW
46
      do {
×
NEW
47
        let token = try await getAccessToken()
×
NEW
48
        if let token = token {
×
NEW
49
          completion(.success(SupabaseCredential(accessToken: token)))
×
NEW
50
        } else {
×
NEW
51
          completion(.success(credential))
×
NEW
52
        }
×
NEW
53
      } catch {
×
NEW
54
        completion(.failure(error))
×
NEW
55
      }
×
NEW
56
    }
×
NEW
57
  }
×
58
  
59
  package func didRequest(
60
    _ urlRequest: URLRequest,
61
    with response: HTTPURLResponse,
62
    failDueToAuthenticationError error: any Error
NEW
63
  ) -> Bool {
×
NEW
64
    response.statusCode == 401
×
NEW
65
  }
×
66
  
NEW
67
  package func isRequest(_ urlRequest: URLRequest, authenticatedWith credential: SupabaseCredential) -> Bool {
×
NEW
68
    urlRequest.value(forHTTPHeaderField: "Authorization") == "Bearer \(credential.accessToken)"
×
NEW
69
  }
×
70
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc