Files

77 lines
1.8 KiB
Swift

//
// 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()
}
}