@@ -6,7 +6,7 @@ import FoundationNetworking
6
6
/// A client to consume a REST API. Uses JSON to encode/decode body data.
7
7
@available ( iOS 16 , macOS 13 , tvOS 16 , watchOS 9 , * )
8
8
public final class RESTClient : Sendable {
9
- public enum RESTClientError : Error , LocalizedError , Sendable {
9
+ public enum APIError : Error , LocalizedError , Sendable {
10
10
public typealias Context = String
11
11
12
12
case responsePluginFailed( Error , Context ? )
@@ -149,7 +149,7 @@ public final class RESTClient: Sendable {
149
149
extraHeaders: [ String : String ] = [ : ] ,
150
150
extraQueryItems: [ URLQueryItem ] = [ ] ,
151
151
errorContext: String ? = nil
152
- ) async throws ( RESTClientError ) {
152
+ ) async throws ( APIError ) {
153
153
_ = try await self . fetchData ( method: method, path: path, body: body, extraHeaders: extraHeaders, extraQueryItems: extraQueryItems)
154
154
}
155
155
@@ -160,7 +160,7 @@ public final class RESTClient: Sendable {
160
160
extraHeaders: [ String : String ] = [ : ] ,
161
161
extraQueryItems: [ URLQueryItem ] = [ ] ,
162
162
errorContext: String ? = nil
163
- ) async throws ( RESTClientError ) -> ResponseBodyType {
163
+ ) async throws ( APIError ) -> ResponseBodyType {
164
164
let responseData = try await self . fetchData ( method: method, path: path, body: body, extraHeaders: extraHeaders, extraQueryItems: extraQueryItems)
165
165
166
166
do {
@@ -177,7 +177,7 @@ public final class RESTClient: Sendable {
177
177
extraHeaders: [ String : String ] = [ : ] ,
178
178
extraQueryItems: [ URLQueryItem ] = [ ] ,
179
179
errorContext: String ? = nil
180
- ) async throws ( RESTClientError ) -> Data {
180
+ ) async throws ( APIError ) -> Data {
181
181
let url = self . baseURL
182
182
. appending ( path: path)
183
183
. appending ( queryItems: self . baseQueryItems + extraQueryItems)
@@ -193,7 +193,7 @@ public final class RESTClient: Sendable {
193
193
do {
194
194
request. httpBody = try body. httpData ( jsonEncoder: self . jsonEncoder)
195
195
} catch {
196
- throw RESTClientError . failedToEncodeBody ( error, self . errorContext ( requestContext: errorContext) )
196
+ throw APIError . failedToEncodeBody ( error, self . errorContext ( requestContext: errorContext) )
197
197
}
198
198
199
199
request. setValue ( body. contentType, forHTTPHeaderField: " Content-Type " )
@@ -215,22 +215,22 @@ public final class RESTClient: Sendable {
215
215
return context
216
216
}
217
217
218
- private func performRequest( _ request: URLRequest , errorContext: String ? ) async throws ( RESTClientError ) -> ( Data , URLResponse ) {
218
+ private func performRequest( _ request: URLRequest , errorContext: String ? ) async throws ( APIError ) -> ( Data , URLResponse ) {
219
219
self . logRequestIfDebug ( request)
220
220
221
221
let data : Data
222
222
let response : URLResponse
223
223
do {
224
224
( data, response) = try await URLSession . shared. data ( for: request)
225
225
} catch {
226
- throw RESTClientError . failedToLoadData ( error, self . errorContext ( requestContext: errorContext) )
226
+ throw APIError . failedToLoadData ( error, self . errorContext ( requestContext: errorContext) )
227
227
}
228
228
229
229
self . logResponseIfDebug ( response, data: data)
230
230
return ( data, response)
231
231
}
232
232
233
- private func handle( data: Data , response: URLResponse , for request: URLRequest , errorContext: String ? , attempt: Int = 1 ) async throws ( RESTClientError ) -> Data {
233
+ private func handle( data: Data , response: URLResponse , for request: URLRequest , errorContext: String ? , attempt: Int = 1 ) async throws ( APIError ) -> Data {
234
234
guard var httpResponse = response as? HTTPURLResponse else {
235
235
throw . unexpectedResponseType( response, self . errorContext ( requestContext: errorContext) )
236
236
}
@@ -240,7 +240,7 @@ public final class RESTClient: Sendable {
240
240
do {
241
241
try responsePlugin. apply ( to: & httpResponse, data: & data)
242
242
} catch {
243
- throw RESTClientError . responsePluginFailed ( error, self . errorContext ( requestContext: errorContext) )
243
+ throw APIError . responsePluginFailed ( error, self . errorContext ( requestContext: errorContext) )
244
244
}
245
245
}
246
246
0 commit comments