77 lines
1.8 KiB
Swift
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()
|
|
}
|
|
|
|
}
|