blob: b44038e7d06a5449d55eb541cbf4d763b336aff8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
//
// RESTRequestAdapter.swift
// MullvadVPN
//
// Created by pronebird on 03/12/2021.
// Copyright © 2021 Mullvad VPN AB. All rights reserved.
//
import Foundation
extension REST {
struct RequestAdapter<Success> {
typealias CompletionHandler = (Result<Success, REST.Error>) -> Void
private let block: (RetryStrategy, @escaping CompletionHandler) -> AnyCancellable
init(block: @escaping (RetryStrategy, @escaping CompletionHandler) -> AnyCancellable) {
self.block = block
}
func execute(retryStrategy: RetryStrategy = RetryStrategy.noRetry, completionHandler: @escaping CompletionHandler) -> AnyCancellable {
return self.block(retryStrategy, completionHandler)
}
func execute(retryStrategy: RetryStrategy = RetryStrategy.noRetry) -> Result<Success, REST.Error>.Promise {
return Promise { resolver in
let cancellable = self.execute(retryStrategy: retryStrategy) { result in
resolver.resolve(value: result)
}
resolver.setCancelHandler {
cancellable.cancel()
}
}
}
}
}
|