Skip to content

Commit f3f4a43

Browse files
committed
Typed Throws
1 parent d9c4dc4 commit f3f4a43

File tree

2 files changed

+14
-33
lines changed

2 files changed

+14
-33
lines changed

Source/NetworkService+ResourceWithError.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ extension NetworkService {
121121
@discardableResult
122122
public func request<Success, E: Error>(
123123
_ resource: Resource<Success, E>
124-
) async throws -> Success {
124+
) async throws(E) -> Success {
125125
let resourceWithoutError = Resource<Success, NetworkError>(request: resource.request, parse: resource.parse)
126126
return try await requestResultWithResponse(for: resourceWithoutError)
127127
.mapError(resource.mapError)
@@ -130,7 +130,7 @@ extension NetworkService {
130130
}
131131

132132
@discardableResult
133-
func requestWithResponse<Success, E: Error>(for resource: Resource<Success, E>) async throws -> (Success, HTTPURLResponse) {
133+
func requestWithResponse<Success, E: Error>(for resource: Resource<Success, E>) async throws(E) -> (Success, HTTPURLResponse) {
134134
return try await requestResultWithResponse(for: resource).get()
135135
}
136136

Source/NetworkService.swift

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,12 @@ public protocol NetworkService: Sendable {
4242
let networkService: NetworkService = //
4343
let resource: Resource<String> = //
4444

45-
networkService.request(queue: .main, resource: resource, onCompletionWithResponse: { htmlText, response in
46-
print(htmlText, response)
47-
}, onError: { error in
48-
// Handle errors
49-
})
45+
let result = await networkService.requestResultWithResponse(for: resource)
5046
```
5147

52-
- parameter queue: The `DispatchQueue` to execute the completion and error block on.
5348
- parameter resource: The resource you want to fetch.
54-
- parameter onCompletionWithResponse: Callback which gets called when fetching and transforming into model succeeds.
55-
- parameter onError: Callback which gets called when fetching or transforming fails.
56-
57-
- returns: a running network task
49+
50+
- returns: a result containing either the success or a network error
5851
*/
5952
@discardableResult
6053
func requestResultWithResponse<Success>(for resource: Resource<Success, NetworkError>) async -> Result<(Success, HTTPURLResponse), NetworkError>
@@ -72,19 +65,13 @@ public extension NetworkService {
7265
```swift
7366
let networkService: NetworkService = //
7467
let resource: Resource<String> = //
75-
76-
networkService.request(resource, onCompletionWithResponse: { htmlText, httpResponse in
77-
print(htmlText, httpResponse)
78-
}, onError: { error in
79-
// Handle errors
80-
})
68+
69+
let result = await networkService.requestResult(for: resource)
8170
```
82-
71+
8372
- parameter resource: The resource you want to fetch.
84-
- parameter onCompletion: Callback which gets called when fetching and transforming into model succeeds.
85-
- parameter onError: Callback which gets called when fetching or transforming fails.
86-
87-
- returns: a running network task
73+
74+
- returns: a result containing either the success or a network error
8875
*/
8976
@discardableResult
9077
func requestResult<Success>(for resource: Resource<Success, NetworkError>) async -> Result<Success, NetworkError> {
@@ -102,26 +89,20 @@ public extension NetworkService {
10289
let networkService: NetworkService = //
10390
let resource: Resource<String> = //
10491

105-
networkService.request(resource, onCompletionWithResponse: { htmlText, httpResponse in
106-
print(htmlText, httpResponse)
107-
}, onError: { error in
108-
// Handle errors
109-
})
92+
let result = await networkService.request(resource)
11093
```
11194

11295
- parameter resource: The resource you want to fetch.
113-
- parameter onCompletion: Callback which gets called when fetching and transforming into model succeeds.
114-
- parameter onError: Callback which gets called when fetching or transforming fails.
11596

116-
- returns: a running network task
97+
- returns: a result containing either the success or a network error
11798
*/
11899
@discardableResult
119-
func request<Success>(_ resource: Resource<Success, NetworkError>) async throws -> Success {
100+
func request<Success>(_ resource: Resource<Success, NetworkError>) async throws(NetworkError) -> Success {
120101
return try await requestResultWithResponse(for: resource).get().0
121102
}
122103

123104
@discardableResult
124-
func requestWithResponse<Success>(for resource: Resource<Success, NetworkError>) async throws -> (Success, HTTPURLResponse) {
105+
func requestWithResponse<Success>(for resource: Resource<Success, NetworkError>) async throws(NetworkError) -> (Success, HTTPURLResponse) {
125106
return try await requestResultWithResponse(for: resource).get()
126107
}
127108
}

0 commit comments

Comments
 (0)