@@ -16,6 +16,10 @@ public protocol NetworkService {
1616 @available ( iOS 16 , * )
1717 @available ( macOS 10 . 15 , * )
1818 func request( endpoint: any RequestableEndpoint ) async -> TaskType
19+ @available ( iOS 16 , * )
20+ @available ( macOS 10 . 15 , * )
21+ func request( endpoint: any RequestableEndpoint ) async throws -> Data
22+
1923}
2024
2125//MARK: Concrete Implementation
@@ -65,24 +69,30 @@ public final class DefaultNetworkService {
6569 @available ( iOS 16 , * )
6670 private func request( request: URLRequest ) async throws -> TaskType {
6771 let task = TaskType {
68- do {
69- let ( data, response) = try await sessionManagerType. sessionManager. request ( request) . value
70-
71- if let response = response as? HTTPURLResponse , !( 200 ... 300 ) . contains ( response. statusCode) {
72- let error : NetworkError = . error( statusCode: response. statusCode, data: data)
73- self . loggerType. logger. log ( error: error)
74- throw error
75- }
72+ try await self . request ( request: request)
73+ }
74+
75+ return task
76+ }
7677
77- self . loggerType. logger. log ( responseData: data, response: response)
78- return data
79- } catch {
78+ @available ( macOS 10 . 15 , * )
79+ @available ( iOS 16 , * )
80+ private func request( request: URLRequest ) async throws -> Data {
81+ do {
82+ let ( data, response) = try await sessionManagerType. sessionManager. request ( request) . value
83+
84+ if let response = response as? HTTPURLResponse , !( 200 ... 300 ) . contains ( response. statusCode) {
85+ let error : NetworkError = . error( statusCode: response. statusCode, data: data)
8086 self . loggerType. logger. log ( error: error)
81- throw self . resolve ( error: error )
87+ throw error
8288 }
89+
90+ self . loggerType. logger. log ( responseData: data, response: response)
91+ return data
92+ } catch {
93+ self . loggerType. logger. log ( error: error)
94+ throw self . resolve ( error: error)
8395 }
84-
85- return task
8696 }
8797
8898 private func resolve( error: Error ) -> NetworkError {
@@ -118,6 +128,19 @@ extension DefaultNetworkService: NetworkService {
118128 return task
119129 }
120130
131+ @available ( macOS 10 . 15 , * )
132+ @available ( iOS 16 , * )
133+ public func request( endpoint: any RequestableEndpoint ) async throws -> Data {
134+ do {
135+ let request = try endpoint. urlRequest ( with: networkConfig)
136+ return try await self . request ( request: request)
137+ } catch let error as NetworkError {
138+ throw error
139+ } catch {
140+ throw NetworkError . urlGeneration
141+ }
142+ }
143+
121144 public func request( endpoint: any RequestableEndpoint , completion: @escaping CompletionHandler ) -> ( any CancellableHttpRequest ) ? {
122145 do {
123146 let request = try endpoint. urlRequest ( with: networkConfig)
0 commit comments