volatilegg/sauron
An iOS library to check and share network log easier, can be embedded into your iOS app easily
Installation
Swift Package Manager
To integrate Sauron into your Xcode using Swift Package Manager, add it to the dependencies of Package.swift
dependencies: [
.package(url: "https://github.com/volatilegg/Sauron.git", .upToNextMajor(from: "1.0"))
]Cocoapods
To integrate Sauron into your Xcode using Cocoapod, add it to your Podfile
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '13.0'
use_frameworks!
target '<Your Target Name>' do
pod 'Sauron', '~> 1.0.0'
endUsage
1. Network configuration
Default network config
Using Reqres.defaultSessionConfiguration as URLSession.configuration
let url = URL(string: "https://pokeapi.co/api/v2/pokemon/108")!
let urlSessionConfig = Reqres.defaultSessionConfiguration(
additionalHeaders: ["Content-Type":"application/json; charset=UTF-8"],
additionalHeaders: 40,
timeoutIntervalForResource: 40,
requestCachePolicy: .useProtocolCachePolicy
)
let urlSession = URLSession(configuration: config, delegate: nil, delegateQueue: nil)
urlSession.dataTask(
with: url,
completionHandler: { (data, response, error) in
// handling response callback
}
)Alamofire/Moya
Inject Reqres.defaultSessionConfiguration into Alamofire.Session(configuration:{{configuration}})
let urlSessionConfig = Reqres.defaultSessionConfiguration(
additionalHeaders: ["Content-Type":"application/json; charset=UTF-8"],
additionalHeaders: 40,
timeoutIntervalForResource: 40,
requestCachePolicy: .useProtocolCachePolicy
)
// Usage for Alamofire
let sessionManager = Alamofire.Session(configuration: urlSessionConfig)
// Usage for Moya
var provider = MoyaProvider<PokemonAPI>(
endpointClosure: endpointClosure,
session: sessionManager,
plugins: []
)
provider.request(target) { result in
// handling response callback
}2. Configure log mode
Note default mode is disabled and should be the mode to use in prodution
Using this snippet to control the mode
// Display all network information
Sauron.shared.logMode = .enable
// Remove all network information
Sauron.shared.logMode = .disable
// Display network information without request's headers
Sauron.shared.logMode = .disableHeader3. Configure log UI
SwiftUI
Open this view RequestListPresentView() to see the whole log UI
NavigationLink(destination: RequestListPresentView()) {
Text("Open Log")
}UIKit
Open this view RequestsListViewController to see the whole log UI
viewController.show(RequestsListViewController.makeViewController())Package Metadata
Repository: volatilegg/sauron
Default branch: main
README: README.md