Skip to content

Commit 516e1a4

Browse files
Merge pull request #112 from dbsystel/release/4.0
Release/4.0
2 parents e204e62 + 498cca1 commit 516e1a4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+863
-2166
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Build
33
jobs:
44
test:
55
name: Build
6-
runs-on: macOS-latest
6+
runs-on: macos-15
77
steps:
88
- name: Checkout
99
uses: actions/checkout@v2

.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version:5.5
1+
// swift-tools-version:5.9
22
//
33
// Package.swift
44
//
@@ -30,10 +30,12 @@ import PackageDescription
3030
let package = Package(
3131
name: "DBNetworkStack",
3232
platforms: [
33-
.iOS(.v9),
34-
.tvOS(.v9),
35-
.watchOS(.v2),
36-
.macOS(.v10_10)
33+
.iOS(.v13),
34+
.tvOS(.v13),
35+
.watchOS(.v6),
36+
.macOS(.v10_15),
37+
.visionOS(.v1),
38+
.macCatalyst(.v14)
3739
],
3840
products: [
3941
.library(
@@ -44,7 +46,11 @@ let package = Package(
4446
.target(
4547
name: "DBNetworkStack",
4648
dependencies: [],
47-
path: "Source"),
49+
path: "Source",
50+
swiftSettings: [
51+
.enableExperimentalFeature("StrictConcurrency")
52+
]
53+
),
4854
.testTarget(
4955
name: "DBNetworkStackTests",
5056
dependencies: ["DBNetworkStack"],

Source/ContainerNetworkTask.swift

Lines changed: 0 additions & 72 deletions
This file was deleted.

Source/HTTPMethod.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import Foundation
2929

3030
See [IETF document](https://tools.ietf.org/html/rfc7231#section-4.3)
3131
*/
32-
public enum HTTPMethod: String {
32+
public enum HTTPMethod: String, Sendable {
3333
case GET
3434
case POST
3535
case PUT

Source/NetworkAccess.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@
2424
import Foundation
2525

2626
/// `NetworkAccess` provides access to the network.
27-
public protocol NetworkAccess {
27+
public protocol NetworkAccess: Sendable {
2828

2929
/// Fetches a request asynchrony from remote location.
3030
///
3131
/// - Parameters:
3232
/// - request: The request one wants to fetch.
3333
/// - callback: Callback which gets called when the request finishes.
3434
/// - Returns: the running network task
35-
func load(request: URLRequest, callback: @escaping (Data?, HTTPURLResponse?, Error?) -> Void) -> NetworkTask
35+
func load(request: URLRequest) async throws -> (Data, URLResponse)
3636

3737
}

Source/NetworkError.swift

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import Foundation
2525

2626
/// `NetworkError` provides a collection of error types which can occur during execution.
27-
public enum NetworkError: Error {
27+
public enum NetworkError: Error, Sendable {
2828
/// The error is unkonw
2929
case unknownError
3030
/// The request was cancelled before it finished
@@ -36,15 +36,11 @@ public enum NetworkError: Error {
3636
/// Error on the server (HTTP Error 500...511)
3737
case serverError(response: HTTPURLResponse?, data: Data?)
3838
/// Parsing the body into expected type failed.
39-
case serializationError(error: Error, data: Data?)
39+
case serializationError(error: Error, response: HTTPURLResponse, data: Data?)
4040
/// Complete request failed.
4141
case requestError(error: Error)
4242

43-
public init?(response: HTTPURLResponse?, data: Data?) {
44-
guard let response = response else {
45-
return nil
46-
}
47-
43+
public init?(response: HTTPURLResponse, data: Data) {
4844
switch response.statusCode {
4945
case 200..<300: return nil
5046
case 401:
@@ -79,22 +75,30 @@ extension NetworkError: CustomDebugStringConvertible {
7975
case .cancelled:
8076
return "Request cancelled"
8177
case .unauthorized(let response, let data):
82-
return "Authorization error: \(response), response: ".appendingContentsOf(data: data)
78+
return "Authorization error, response headers: \(response), response body: ".appendingContentsOf(data: data)
8379
case .clientError(let response, let data):
8480
if let response = response {
85-
return "Client error: \((response)), response: ".appendingContentsOf(data: data)
81+
return "Client error, response headers: \((response)), response body: ".appendingContentsOf(data: data)
8682
}
87-
return "Client error, response: ".appendingContentsOf(data: data)
88-
case .serializationError(let description, let data):
89-
return "Serialization error: \(description), response: ".appendingContentsOf(data: data)
83+
return "Client error, response headers: nil, response body: ".appendingContentsOf(data: data)
84+
case .serializationError(let error, let response, let data):
85+
return "Serialization error: \(error), response headers: \(response), response body: ".appendingContentsOf(data: data)
9086
case .requestError(let error):
9187
return "Request error: \(error)"
9288
case .serverError(let response, let data):
93-
if let response = response {
94-
return "Server error: \(String(describing: response)), response: ".appendingContentsOf(data: data)
89+
if let response {
90+
return "Server error, response headers: \(String(describing: response)), response body: ".appendingContentsOf(data: data)
9591
} else {
96-
return "Server error: nil, response: ".appendingContentsOf(data: data)
92+
return "Server error: nil, response body: ".appendingContentsOf(data: data)
9793
}
9894
}
9995
}
10096
}
97+
98+
extension NetworkError: NetworkErrorConvertible {
99+
100+
public init(networkError: NetworkError) {
101+
self = networkError
102+
}
103+
104+
}

Source/NetworkErrorConvertible.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//
2+
// File.swift
3+
//
4+
//
5+
// Created by Lukas Schmidt on 13.10.23.
6+
//
7+
8+
import Foundation
9+
10+
public protocol NetworkErrorConvertible: Error {
11+
12+
init(networkError: NetworkError)
13+
14+
}

Source/NetworkResponseProcessor.swift

Lines changed: 0 additions & 95 deletions
This file was deleted.

0 commit comments

Comments
 (0)