Skip to content

Commit fcfd94d

Browse files
committed
Add error handling for automatic resitration
1 parent e50dce5 commit fcfd94d

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

Sources/Pulse/NetworkLogger/URLSessionProxy.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ public final class URLSessionProxy {
1919
/// - parameter logger: The network logger to be used for recording the requests.
2020
public static func enable(with logger: NetworkLogger = .init()) {
2121
guard URLSessionProxy.proxy == nil else {
22-
NSLog("Pulse.URLSessionProxy already enabled")
22+
NSLog("Error: Pulse.URLSessionProxy already enabled")
23+
return
24+
}
25+
guard sharedNetworkLogger == nil else {
26+
NSLog("Error: Pulse network request logging is already enabled")
2327
return
2428
}
2529
let proxy = URLSessionProxy(logger: logger)
@@ -34,7 +38,7 @@ public final class URLSessionProxy {
3438
swizzleDataTaskDidReceiveData(baseClass: sessionClass)
3539
swizzleDataDataDidCompleteWithError(baseClass: sessionClass)
3640
} else {
37-
NSLog("URLSessionProxy failed to initialize. Please report at https://github.com/kean/Pulse/issues.")
41+
NSLog("Pulse.URLSessionProxy failed to initialize. Please report at https://github.com/kean/Pulse/issues.")
3842
}
3943
}
4044

Sources/Pulse/NetworkLogger/URLSessionProxyDelegate+AutomaticRegistration.swift

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,21 @@ extension URLSessionProxyDelegate {
99
/// you initialize a `URLSession` using `init(configuration:delegate:delegateQueue:))` method, the
1010
/// delegate will automatically get replaced with a `URLSessionProxyDelegate` that logs all the
1111
/// needed events and forwards the methods to your original delegate.
12+
@MainActor
1213
public static func enableAutomaticRegistration(logger: NetworkLogger = .init()) {
13-
sharedLogger = logger
14+
guard sharedNetworkLogger == nil else {
15+
NSLog("Error: Puls network request logging is already enabled")
16+
return
17+
}
18+
sharedNetworkLogger = logger
1419
if let lhs = class_getClassMethod(URLSession.self, #selector(URLSession.init(configuration:delegate:delegateQueue:))),
1520
let rhs = class_getClassMethod(URLSession.self, #selector(URLSession.pulse_init(configuration:delegate:delegateQueue:))) {
1621
method_exchangeImplementations(lhs, rhs)
1722
}
1823
}
1924
}
2025

21-
private var sharedLogger: NetworkLogger? {
26+
var sharedNetworkLogger: NetworkLogger? {
2227
get { _sharedLogger.value }
2328
set { _sharedLogger.value = newValue }
2429
}
@@ -30,11 +35,11 @@ private extension URLSession {
3035
return self.pulse_init(configuration: configuration, delegate: delegate, delegateQueue: delegateQueue)
3136
}
3237
configuration.protocolClasses = [RemoteLoggerURLProtocol.self] + (configuration.protocolClasses ?? [])
33-
guard let sharedLogger else {
38+
guard let sharedNetworkLogger else {
3439
assertionFailure("Shared logger is missing")
3540
return self.pulse_init(configuration: configuration, delegate: delegate, delegateQueue: delegateQueue)
3641
}
37-
let delegate = URLSessionProxyDelegate(logger: sharedLogger, delegate: delegate)
42+
let delegate = URLSessionProxyDelegate(logger: sharedNetworkLogger, delegate: delegate)
3843
return self.pulse_init(configuration: configuration, delegate: delegate, delegateQueue: delegateQueue)
3944
}
4045
}

0 commit comments

Comments
 (0)