@@ -22,27 +22,19 @@ public extension NetworkRequest {
22
22
/// Failed requests are to be retried `n` times, according to the `numberOfRetries` of `NetworkRequest.getter:settings`.
23
23
///
24
24
/// - Returns: `NetworkRequestResult`.
25
- func execute( ) async -> NetworkRequestResult {
25
+ func execute( attemptNumber : Int = 1 ) async -> NetworkRequestResult {
26
26
let urlRequest : URLRequest
27
27
do {
28
28
urlRequest = try request
29
29
} catch {
30
30
return . failure( . invalidRequest( error: error) )
31
31
}
32
- return await executeRetrying ( request: urlRequest)
33
- }
34
- }
35
-
36
- // MARK: - Private
37
-
38
- private extension NetworkRequest {
39
-
40
- func executeRetrying( request: URLRequest , attemptNumber: Int = 1 ) async -> NetworkRequestResult {
32
+
41
33
let result : NetworkRequestResult
42
34
#if os(macOS) || os(iOS)
43
- result = await runOnApplePlatforms ( request: request )
35
+ result = await runOnApplePlatforms ( request: urlRequest )
44
36
#elseif canImport(FoundationNetworking)
45
- result = await runOnLinux ( request: request )
37
+ result = await runOnLinux ( request: urlRequest )
46
38
#endif
47
39
switch result {
48
40
case . success:
@@ -51,12 +43,17 @@ private extension NetworkRequest {
51
43
if attemptNumber <= settings. numberOfRetries {
52
44
log ( message: " Retrying... \( attemptNumber) of \( settings. numberOfRetries) " )
53
45
try ? await Task . sleep ( nanoseconds: 1_000_000_000 * settings. delayBetweenRetries)
54
- return await executeRetrying ( request : request , attemptNumber: attemptNumber + 1 )
46
+ return await execute ( attemptNumber: attemptNumber + 1 )
55
47
} else {
56
48
return result
57
49
}
58
50
}
59
51
}
52
+ }
53
+
54
+ // MARK: - Private
55
+
56
+ private extension NetworkRequest {
60
57
61
58
#if os(macOS) || os(iOS)
62
59
/// `async/await` can be simply called on macOS and iOS platforms; no further action is needed.
0 commit comments