// Copyright © 2025 VOID Software SA. All rights reserved. import Foundation import Alamofire /// Request interceptor for handling authentication and token refresh class AuthorizationInterceptor: RequestInterceptor { private var accessToken: String? private let lock = NSLock() func setAccessToken(_ token: String?) { lock.lock() defer { lock.unlock() } accessToken = token } func getAccessToken() -> String? { lock.lock() defer { lock.unlock() } return accessToken } // MARK: - RequestAdapter func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (Result) -> Void) { var urlRequest = urlRequest /* if let token = KeychainManager.shared.getDeviceToken() { urlRequest.setValue(token, forHTTPHeaderField: "Authorization") } */ urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") urlRequest.setValue("application/json", forHTTPHeaderField: "Accept") completion(.success(urlRequest)) } // MARK: - RequestRetrier func retry(_ request: Request, for session: Session, dueTo error: Error, completion: @escaping (RetryResult) -> Void) { completion(.doNotRetry) /* guard let response = request.task?.response as? HTTPURLResponse else { completion(.doNotRetry) return } // Retry on 401 (implement token refresh logic here) if response.statusCode == 401 { // TODO: Implement token refresh logic // For now, just don't retry completion(.doNotRetry) } else if response.statusCode >= 500 { // Retry server errors with delay completion(.retryWithDelay(2.0)) } else { completion(.doNotRetry) } */ } }