CommandLineToolkit

Форк
0
66 строк · 2.2 Кб
1
/*
2
 * Copyright (c) Avito Tech LLC
3
 */
4

5
import Foundation
6
#if canImport(FoundationNetworking)
7
import FoundationNetworking
8
#endif
9

10
public final class FakeURLSession: URLSession {
11
    let session = URLSession.shared
12
    
13
    public var providedDownloadTasks = [FakeDownloadTask]()
14
    
15
    override public func downloadTask(with request: URLRequest, completionHandler: @escaping (URL?, URLResponse?, Error?) -> ()) -> URLSessionDownloadTask {
16
        let task = FakeDownloadTask(
17
            originalTask: session.downloadTask(with: request, completionHandler: completionHandler),
18
            completionHandler: completionHandler
19
        )
20
        providedDownloadTasks.append(task)
21
        return task
22
    }
23
    
24
    public var providedDataTasks = [FakeDataTask]()
25

26
    override public func dataTask(with request: URLRequest, completionHandler: @escaping (Data?, URLResponse?, Error?) -> ()) -> URLSessionDataTask {
27
        let task = FakeDataTask(
28
            originalTask: session.dataTask(with: request, completionHandler: completionHandler),
29
            completionHandler: completionHandler
30
        )
31
        providedDataTasks.append(task)
32
        return task
33
    }
34
}
35

36
public class FakeDownloadTask: URLSessionDownloadTask {
37
    public var originalTask: URLSessionTask
38
    public var completionHandler: (URL?, URLResponse?, Error?) -> ()
39
    
40
    public init(originalTask: URLSessionTask, completionHandler: @escaping (URL?, URLResponse?, Error?) -> ()) {
41
        self.originalTask = originalTask
42
        self.completionHandler = completionHandler
43
    }
44
    
45
#if os(macOS)
46
    @objc private func _onqueue_resume() {
47
        originalTask.perform(#selector(self._onqueue_resume))
48
    }
49
#endif
50
}
51

52
public class FakeDataTask: URLSessionDataTask {
53
    public var originalTask: URLSessionTask
54
    public var completionHandler: (Data?, URLResponse?, Error?) -> ()
55
    
56
    public init(originalTask: URLSessionTask, completionHandler: @escaping (Data?, URLResponse?, Error?) -> ()) {
57
        self.originalTask = originalTask
58
        self.completionHandler = completionHandler
59
    }
60
    
61
#if os(macOS)
62
    @objc private func _onqueue_resume() {
63
        originalTask.perform(#selector(self._onqueue_resume))
64
    }
65
#endif
66
}
67

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.