mirror of
https://github.com/kean/Pulse.git
synced 2026-05-30 21:07:33 +00:00
61 lines
1.8 KiB
Swift
61 lines
1.8 KiB
Swift
//
|
|
// AlamofireIntegration.swift
|
|
// Pulse
|
|
//
|
|
// Created by Bagus andinata on 21/08/21.
|
|
// Copyright © 2021 kean. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import Alamofire
|
|
import PulseLogHandler
|
|
|
|
typealias Session = Alamofire.Session
|
|
|
|
// MARK: - Example Provider
|
|
|
|
final class ExampleProvider {
|
|
private let eventMonitors: [EventMonitor]
|
|
private let logger: NetworkLogger
|
|
private let session: Session
|
|
|
|
init() {
|
|
logger = NetworkLogger()
|
|
eventMonitors = [NetworkLoggerEventMonitor(logger: logger)]
|
|
session = Alamofire.Session(eventMonitors: eventMonitors)
|
|
}
|
|
|
|
func request(_ request: URLRequestConvertible) -> DataRequest {
|
|
return session.request(request)
|
|
}
|
|
}
|
|
|
|
// MARK: - LOGGER EVENT
|
|
|
|
struct NetworkLoggerEventMonitor: EventMonitor {
|
|
let logger: NetworkLogger
|
|
|
|
func request(_ request: Request, didCreateTask task: URLSessionTask) {
|
|
logger.logTaskCreated(task)
|
|
}
|
|
|
|
func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
|
|
logger.logDataTask(dataTask, didReceive: data)
|
|
|
|
guard let response = dataTask.response else { return }
|
|
logger.logDataTask(dataTask, didReceive: response)
|
|
}
|
|
|
|
func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
|
|
logger.logTask(task, didFinishCollecting: metrics)
|
|
}
|
|
|
|
func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
|
|
logger.logTask(task, didCompleteWithError: error)
|
|
}
|
|
|
|
func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, willCacheResponse proposedResponse: CachedURLResponse) {
|
|
logger.logDataTask(dataTask, didReceive: proposedResponse.response)
|
|
}
|
|
}
|