Skip to content

Commit

Permalink
fix: optional message publisher
Browse files Browse the repository at this point in the history
  • Loading branch information
andrej-jasso committed Mar 5, 2024
1 parent 1cce094 commit f78904b
Showing 1 changed file with 25 additions and 17 deletions.
42 changes: 25 additions & 17 deletions Sources/GoodNetworking/Session/Logger/LoggingEventMonitor.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ public class LoggingEventMonitor: EventMonitor {
public static var maxVerboseLogSizeBytes: Int = 100_000

private var messages: PassthroughSubject<String, Never>?
public lazy var messagesPublisher = messages?.eraseToAnyPublisher()

public let queue = DispatchQueue(label: C.queueLabel, qos: .background)

Expand All @@ -26,16 +25,23 @@ public class LoggingEventMonitor: EventMonitor {

}

private var logger: (any SessionLogger)?
private var logger: any SessionLogger

public init(logger: (any SessionLogger)?) {
public init(logger: any SessionLogger) {
self.logger = logger
}

public func subscribeToMessages() -> AnyPublisher<String, Never> {
let messages = PassthroughSubject<String, Never>()
self.messages = messages
return messages.eraseToAnyPublisher()
}

public func request<T>(_ request: DataRequest, didParseResponse response: DataResponse<T, AFError>) {
let requestInfoMessage = parseRequestInfo(response: response)
let requestInfoMessage = parseRequestInfo(request: response.request)
let metricsMessage = parse(metrics: response.metrics)
let requestBodyMessage = parse(data: request.request?.httpBody, error: response.error as NSError?, prefix: "⬆️ Request body:")
let responseStatusMessage = parseResponseStatus(response: response.response)
let errorMessage: String? = if let afError = response.error {
"🚨 Error:\n\(afError)"
} else {
Expand All @@ -48,48 +54,47 @@ public class LoggingEventMonitor: EventMonitor {
"❓❓❓ Response MIME type not whitelisted (\(response.response?.mimeType ?? "")). You can try adding it to whitelist using logMimeType(_ mimeType:)."
}

let logMessage = [
let logMessaage = [
requestInfoMessage,
metricsMessage,
requestBodyMessage,
responseStatusMessage,
errorMessage,
responseBodyMessage
].compactMap { $0 }.joined(separator: "\n")

if let messages {
messages.send(logMessage)
messages.send(logMessaage)
}

switch response.result {
case .success:
logger?.log(level: .debug, message: logMessage)
logger.log(level: .debug, message: logMessaage)
case .failure:
logger?.log(level: .fault, message: logMessage)
logger.log(level: .fault, message: logMessaage)
}
}

}

private extension LoggingEventMonitor {

func parseRequestInfo<T>(response: DataResponse<T, AFError>) -> String? {
guard let request = response.request,
func parseRequestInfo(request: URLRequest?) -> String? {
guard let request = request,
let url = request.url?.absoluteString.removingPercentEncoding,
let method = request.httpMethod,
let response = response.response
else {
let method = request.httpMethod else {
return nil
}
guard Self.verbose else {
return "🚀 \(method)|\(parseResponseStatus(response: response))|\(url)"
return "🚀 \(method) \(url)"
}

if let headers = request.allHTTPHeaderFields,
!headers.isEmpty,
let headersData = try? JSONSerialization.data(withJSONObject: headers, options: [.prettyPrinted]),
let headersPrettyMessage = parse(data: headersData, error: nil, prefix: "🏷 Headers:") {

return "🚀 \(method)|\(parseResponseStatus(response: response))|\(url)\n" + headersPrettyMessage
return "🚀 \(method) \(url)\n" + headersPrettyMessage
} else {
let headers = if let allHTTPHeaderFields = request.allHTTPHeaderFields, !allHTTPHeaderFields.isEmpty {
allHTTPHeaderFields.description
Expand Down Expand Up @@ -136,8 +141,11 @@ private extension LoggingEventMonitor {
}


func parseResponseStatus(response: HTTPURLResponse) -> String {
let statusCode = response.statusCode
func parseResponseStatus(response: HTTPURLResponse?) -> String? {
guard let statusCode = response?.statusCode else {
return nil
}

let logMessage = (200 ..< 300).contains(statusCode) ? "\(statusCode)" : "\(statusCode)"
return logMessage
}
Expand Down

0 comments on commit f78904b

Please sign in to comment.