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

supabase / supabase-swift / 17238365990

26 Aug 2025 12:38PM UTC coverage: 48.936% (-28.5%) from 77.386%
17238365990

Pull #781

github

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

287 of 986 new or added lines in 26 files covered. (29.11%)

1397 existing lines in 30 files now uncovered.

3448 of 7046 relevant lines covered (48.94%)

5.24 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
import HTTPTypes
4

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

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

28
package final class SupabaseAuthenticator: Authenticator, @unchecked Sendable {
29
  package typealias Credential = SupabaseCredential
30
  
31
  private let getAccessToken: @Sendable () async throws -> String?
32
  
NEW
33
  package init(getAccessToken: @escaping @Sendable () async throws -> String?) {
×
NEW
34
    self.getAccessToken = getAccessToken
×
NEW
35
  }
×
36
  
NEW
37
  package func apply(_ credential: SupabaseCredential, to urlRequest: inout URLRequest) {
×
NEW
38
    urlRequest.setValue("Bearer \(credential.accessToken)", forHTTPHeaderField: "Authorization")
×
NEW
39
  }
×
40
  
41
  package func refresh(
42
    _ credential: SupabaseCredential,
43
    for session: Alamofire.Session,
44
    completion: @escaping (Result<SupabaseCredential, any Error>) -> Void
NEW
45
  ) {
×
NEW
46
    Task {
×
NEW
47
      do {
×
NEW
48
        let token = try await getAccessToken()
×
NEW
49
        if let token = token {
×
NEW
50
          completion(.success(SupabaseCredential(accessToken: token)))
×
NEW
51
        } else {
×
NEW
52
          completion(.success(credential))
×
NEW
53
        }
×
NEW
54
      } catch {
×
NEW
55
        completion(.failure(error))
×
NEW
56
      }
×
NEW
57
    }
×
NEW
58
  }
×
59
  
60
  package func didRequest(
61
    _ urlRequest: URLRequest,
62
    with response: HTTPURLResponse,
63
    failDueToAuthenticationError error: any Error
NEW
64
  ) -> Bool {
×
NEW
65
    response.statusCode == 401
×
NEW
66
  }
×
67
  
NEW
68
  package func isRequest(_ urlRequest: URLRequest, authenticatedWith credential: SupabaseCredential) -> Bool {
×
NEW
69
    urlRequest.value(forHTTPHeaderField: "Authorization") == "Bearer \(credential.accessToken)"
×
NEW
70
  }
×
71
}
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