File tree Expand file tree Collapse file tree 1 file changed +27
-2
lines changed
src/Projects/BKNetwork/Sources/Provider Expand file tree Collapse file tree 1 file changed +27
-2
lines changed Original file line number Diff line number Diff line change 11// Copyright © 2025 Booket. All rights reserved
22
3- import Foundation
43import BKData
4+ import Foundation
5+
6+ public protocol NetworkRequestable {
7+ func data( for request: URLRequest ) async throws -> ( Data , URLResponse )
8+ }
59
610public struct DefaultNetworkProvider : NetworkProvider {
11+ private let requestor : NetworkRequestable
12+
13+ init ( requestor: NetworkRequestable ) {
14+ self . requestor = requestor
15+ }
16+
717 @discardableResult
818 public func request< T: Decodable > (
919 target: RequestTarget ,
1020 type: T . Type
1121 ) async throws -> T {
12-
22+ let request = try target. makeURLRequest ( )
23+ let ( data, response) = try await requestor. data ( for: request)
24+
25+ guard let httpResponse = response as? HTTPURLResponse else {
26+ throw NetworkError . invalidResponse
27+ }
28+
29+ guard let responseDTO = try ? JSONDecoder ( ) . decode ( T . self, from: data) else {
30+ switch httpResponse. statusCode {
31+ case 401 : throw NetworkError . unauthorized
32+ case 500 ... 599 : throw NetworkError . internalServerError
33+ default : throw NetworkError . invalidResponse
34+ }
35+ }
36+
37+ return responseDTO
1338 }
1439}
You can’t perform that action at this time.
0 commit comments