// // NetworkLogger.swift // Privado // // Created by Juraldinio on 11/13/19. // Copyright © 2019 Omicronmedia. All rights reserved. // import Foundation final class NetworkLogger: NetworkCometLoggerProtocol { var type: CometLoggerType = .plain var isActive = true private enum Constants { static let tag = "NETWORK" static let request = "REQ" static let response = "RESP" } func record(request: URLRequest) { guard let url = request.url else { return } let payload: String #if PRODUCTION payload = "-" #else payload = url.absoluteString #endif self.save(tag: Constants.tag, label: Constants.request, payload: payload) } func record(response: URLResponse, data: Data?) { guard let httpResponse = response as? HTTPURLResponse else { return } let value: String #if PRODUCTION value = "-" #else if let data = data , let converted = String(data: data, encoding: .utf8) { value = converted } else { value = "" } #endif let payload = "(\(httpResponse.statusCode))\n\(value)" self.save(tag: Constants.tag, label: Constants.response, payload: payload) } // MARK: - Private private func save(tag: String, label: String, payload: String) { guard let coordinator = DatabaseAnswer.commonDB else { return } let context = coordinator.createContext() let log: LogRecord = context.create() log.uuid = UUID().uuidString log.tag = tag log.label = label log.date = Date() log.payload = payload context.save() coordinator.save() } }