mirror of
https://github.com/kean/Pulse.git
synced 2026-05-30 21:07:33 +00:00
73 lines
2.3 KiB
Swift
73 lines
2.3 KiB
Swift
// The MIT License (MIT)
|
|
//
|
|
// Copyright (c) 2020-2024 Alexander Grebenyuk (github.com/kean).
|
|
|
|
import SwiftUI
|
|
import Pulse
|
|
import PulseUI
|
|
import PulseProxy
|
|
|
|
@main
|
|
struct PulseDemo_iOS: App {
|
|
@StateObject private var viewModel = AppViewModel()
|
|
|
|
var body: some Scene {
|
|
WindowGroup {
|
|
NavigationView {
|
|
ConsoleView(store: .shared)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private final class AppViewModel: ObservableObject {
|
|
init() {
|
|
// NetworkLogger.enableProxy()
|
|
|
|
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3)) {
|
|
sendRequest()
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
private func sendRequest() {
|
|
testSwiftConcurrency()
|
|
|
|
// let task = session.dataTask(with: URLRequest(url: URL(string: "https://github.com/kean/Nuke/archive/refs/tags/11.0.0.zip")!))
|
|
// task.resume()
|
|
}
|
|
|
|
private func testClosures() {
|
|
let session = URLSessionProxy(configuration: .default)
|
|
let task = session.dataTask(with: URLRequest(url: URL(string: "https://api.github.com/repos/octocat/Spoon-Knife/issues?per_page=2")!)) { data, _, _ in
|
|
NSLog("didFinish: \(data?.count ?? 0)")
|
|
}
|
|
task.resume()
|
|
}
|
|
|
|
private func testSwiftConcurrency() {
|
|
Task {
|
|
let demoDelegate = DemoSessionDelegate()
|
|
let session = URLSessionProxy(configuration: .default, delegate: demoDelegate, delegateQueue: nil)
|
|
// let session = URLSession(configuration: .default)
|
|
|
|
let (data, _) = try await session.data(from: URL(string: "https://api.github.com/repos/octocat/Spoon-Knife/issues?per_page=2")!) //, delegate: demoDelegate)
|
|
NSLog("didFinish: \(data.count)")
|
|
}
|
|
}
|
|
|
|
private final class DemoSessionDelegate: NSObject, URLSessionDelegate, URLSessionDataDelegate {
|
|
func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
|
|
NSLog("[\(dataTask.taskIdentifier)] didReceive: \(data.count)")
|
|
}
|
|
|
|
func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
|
|
NSLog("[\(task.taskIdentifier)] didFinishCollectingMetrics: \(metrics)")
|
|
}
|
|
|
|
func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: (any Error)?) {
|
|
NSLog("[\(task.taskIdentifier)] didCompleteWithError: \(String(describing: error))")
|
|
}
|
|
}
|