Skip to content

Commit c5c7c1d

Browse files
Merge pull request #93 from dbsystel/feature/remove-deprecated-code
Preparation for 2.0
2 parents a89d606 + 2a48097 commit c5c7c1d

17 files changed

+71
-177
lines changed

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ matrix:
1717
script:
1818
- swift test --verbose
1919
- os: osx
20-
osx_image: xcode10.3
20+
osx_image: xcode11
2121
env: "macOS"
2222
skip-cleanup: true
2323
before_install:
@@ -26,7 +26,7 @@ matrix:
2626
- set -o pipefail && xcodebuild -scheme DBNetworkStack -destination "platform=macOS" test | xcpretty
2727
- set -o pipefail && xcodebuild -scheme DBNetworkStack -destination "platform=tvOS Simulator,name=Apple TV" test | xcpretty
2828
- set -o pipefail && xcodebuild -scheme DBNetworkStack -destination "platform=watchOS Simulator,name=Apple Watch - 38mm" build | xcpretty
29-
- set -o pipefail && xcodebuild -scheme DBNetworkStack -destination "platform=iOS Simulator,name=iPhone SE" test | xcpretty
29+
- set -o pipefail && xcodebuild -scheme DBNetworkStack -destination "platform=iOS Simulator,name=iPhone 8" test | xcpretty
3030
- swift test & pod spec lint --allow-warnings & carthage build --no-skip-current
3131
- jazzy --clean --author "DBSystel" --github_url https://github.com/dbsystel/DBNetworkStack --module DBNetworkStack --output docs
3232
after_success:

DBNetworkStack.xcodeproj/project.pbxproj

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
C61E77891E49A57A00D55BB2 /* NetworkServiceMockTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C61E77881E49A57A00D55BB2 /* NetworkServiceMockTest.swift */; };
2525
C61E778B1E49B53700D55BB2 /* RetryNetworkserviceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C61E778A1E49B53700D55BB2 /* RetryNetworkserviceTest.swift */; };
2626
C61E778C1E49D8A900D55BB2 /* NetworkTaskMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C40B9FD1D9D66A600620563 /* NetworkTaskMock.swift */; };
27-
C622A7961E5C7F6500BB3D17 /* URLRequestConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = C622A7951E5C7F6500BB3D17 /* URLRequestConvertible.swift */; };
27+
C622A7961E5C7F6500BB3D17 /* URLRequest+Init.swift in Sources */ = {isa = PBXBuildFile; fileRef = C622A7951E5C7F6500BB3D17 /* URLRequest+Init.swift */; };
2828
C62925AE1FC5900000607AEA /* URLRequestConvertible+Modifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = C62925AD1FC5900000607AEA /* URLRequestConvertible+Modifications.swift */; };
2929
C6363D8F1F4ED1500052E9BD /* URLSession+NetworkAccessTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6363D8D1F4ED13C0052E9BD /* URLSession+NetworkAccessTest.swift */; };
3030
C6363D901F4ED1950052E9BD /* URLSessionMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6363D8B1F4ED0840052E9BD /* URLSessionMock.swift */; };
@@ -81,7 +81,7 @@
8181
C60FF0F11E5C94AC00818031 /* URLRequestConvertibleTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLRequestConvertibleTest.swift; sourceTree = "<group>"; };
8282
C61E77881E49A57A00D55BB2 /* NetworkServiceMockTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkServiceMockTest.swift; sourceTree = "<group>"; };
8383
C61E778A1E49B53700D55BB2 /* RetryNetworkserviceTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RetryNetworkserviceTest.swift; sourceTree = "<group>"; };
84-
C622A7951E5C7F6500BB3D17 /* URLRequestConvertible.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLRequestConvertible.swift; sourceTree = "<group>"; };
84+
C622A7951E5C7F6500BB3D17 /* URLRequest+Init.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URLRequest+Init.swift"; sourceTree = "<group>"; };
8585
C62925AD1FC5900000607AEA /* URLRequestConvertible+Modifications.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URLRequestConvertible+Modifications.swift"; sourceTree = "<group>"; };
8686
C6363D8B1F4ED0840052E9BD /* URLSessionMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLSessionMock.swift; sourceTree = "<group>"; };
8787
C6363D8D1F4ED13C0052E9BD /* URLSession+NetworkAccessTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URLSession+NetworkAccessTest.swift"; sourceTree = "<group>"; };
@@ -168,8 +168,8 @@
168168
children = (
169169
C6A5DED81D76A05300BC38B1 /* Helpers */,
170170
C6A5DED21D760C9E00BC38B1 /* Mocks */,
171-
C6E5A4D51E2FBDDD00F966DB /* NetworkServiceTests */,
172-
C6E5A4D61E2FBE0000F966DB /* RessourceTests */,
171+
C6E5A4D51E2FBDDD00F966DB /* NetworkService */,
172+
C6E5A4D61E2FBE0000F966DB /* Ressource */,
173173
C6F7E30E1E49DC4900FA625F /* NetworkTaskMockTests.swift */,
174174
C699E0761D917501006FE7C6 /* NetworkErrorTest.swift */,
175175
7C653BC81E09325500199993 /* NetworkResponseProcessorTest.swift */,
@@ -227,7 +227,7 @@
227227
C6E5A4D21E2FBD2B00F966DB /* NetworkRequest */ = {
228228
isa = PBXGroup;
229229
children = (
230-
C622A7951E5C7F6500BB3D17 /* URLRequestConvertible.swift */,
230+
C622A7951E5C7F6500BB3D17 /* URLRequest+Init.swift */,
231231
C62925AD1FC5900000607AEA /* URLRequestConvertible+Modifications.swift */,
232232
C6F3A3FE211D665300BF0086 /* URL+StaticStringInit.swift */,
233233
);
@@ -254,26 +254,26 @@
254254
name = NetworkAccess;
255255
sourceTree = "<group>";
256256
};
257-
C6E5A4D51E2FBDDD00F966DB /* NetworkServiceTests */ = {
257+
C6E5A4D51E2FBDDD00F966DB /* NetworkService */ = {
258258
isa = PBXGroup;
259259
children = (
260260
C61E77881E49A57A00D55BB2 /* NetworkServiceMockTest.swift */,
261261
C61E778A1E49B53700D55BB2 /* RetryNetworkserviceTest.swift */,
262262
C60BE6A01D6B3807006B0364 /* NetworkServiceTest.swift */,
263263
C6C395951E0422AF00413AD2 /* ModifyRequestNetworkService.swift */,
264264
);
265-
name = NetworkServiceTests;
265+
name = NetworkService;
266266
sourceTree = "<group>";
267267
};
268-
C6E5A4D61E2FBE0000F966DB /* RessourceTests */ = {
268+
C6E5A4D61E2FBE0000F966DB /* Ressource */ = {
269269
isa = PBXGroup;
270270
children = (
271271
C65AA9A321187234007529BF /* ContainerNetworkTaskTest.swift */,
272272
C69188681EE688F700BAD320 /* DecodableResoureTest.swift */,
273273
C60425121D7803CA00FD3B38 /* ResourceTest.swift */,
274274
C66C7B971FE96EA8009B8C78 /* ResourceInspectTest.swift */,
275275
);
276-
name = RessourceTests;
276+
name = Ressource;
277277
sourceTree = "<group>";
278278
};
279279
/* End PBXGroup section */
@@ -352,6 +352,7 @@
352352
developmentRegion = English;
353353
hasScannedForEncodings = 0;
354354
knownRegions = (
355+
English,
355356
Base,
356357
);
357358
mainGroup = C60BE6511D6B2BF3006B0364;
@@ -407,7 +408,7 @@
407408
C62925AE1FC5900000607AEA /* URLRequestConvertible+Modifications.swift in Sources */,
408409
C66C7B961FE96CD0009B8C78 /* Resource+Inspect.swift in Sources */,
409410
C6C395941E04212F00413AD2 /* ModifyRequestNetworkService.swift in Sources */,
410-
C622A7961E5C7F6500BB3D17 /* URLRequestConvertible.swift in Sources */,
411+
C622A7961E5C7F6500BB3D17 /* URLRequest+Init.swift in Sources */,
411412
C60BE6901D6B2C46006B0364 /* Resource.swift in Sources */,
412413
C6461F021E01678100E0B081 /* RetryNetworkService.swift in Sources */,
413414
C61E778C1E49D8A900D55BB2 /* NetworkTaskMock.swift in Sources */,

README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ The following table shows all the protocols and their default implementations.
8787
| -------------------------------- | ---------------------- |
8888
| ```NetworkAccess``` | ```URLSession``` |
8989
| ```NetworkService``` | ```BasicNetworkService``` |
90-
| ```URLRequestConvertible``` | ```URLRequest``` |
9190
| ```NetworkTask``` | ```URLSessionTask``` |
9291

9392
## Composable Features
@@ -100,8 +99,8 @@ The following table shows all the protocols and their default implementations.
10099
## Requirements
101100

102101
- iOS 9.0+ / macOS 10.10+ / tvOS 9.0+ / watchOS 2.0+
103-
- Xcode 9.0+
104-
- Swift 3.2/Swift4.0
102+
- Xcode 10.2+
103+
- Swift5.0
105104

106105
## Installation
107106

Source/BasicNetworkService.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public final class BasicNetworkService: NetworkService {
7777
@discardableResult
7878
public func request<Result>(queue: DispatchQueue, resource: Resource<Result>, onCompletionWithResponse: @escaping (Result, HTTPURLResponse) -> Void,
7979
onError: @escaping (NetworkError) -> Void) -> NetworkTask {
80-
let request = resource.request.asURLRequest()
80+
let request = resource.request
8181
let dataTask = networkAccess.load(request: request, callback: { data, response, error in
8282
self.networkResponseProcessor.processAsyncResponse(queue: queue, response: response, resource: resource, data: data,
8383
error: error, onCompletion: onCompletionWithResponse, onError: onError)

Source/ContainerNetworkTask.swift

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -61,18 +61,6 @@ public final class ContainerNetworkTask: NetworkTask {
6161
underlyingTask?.suspend()
6262
}
6363

64-
/**
65-
Contains the current progress of a running task.
66-
*/
67-
@available(*, deprecated, message: "Progress is no longer supported and will be removed in version 2.0")
68-
@available(iOS 11.0, OSX 10.13, watchOS 4.0, tvOS 11.0, *)
69-
public var progress: Progress {
70-
guard let task = underlyingTask else {
71-
fatalError("OrginalTask has to be set")
72-
}
73-
return task.progress
74-
}
75-
7664
// MARK: - Public
7765

7866
/// The underlying task

Source/ModifyRequestNetworkService.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,15 @@ import Dispatch
4141
*/
4242
public final class ModifyRequestNetworkService: NetworkService {
4343

44-
private let requestModifications: Array<(URLRequestConvertible) -> URLRequestConvertible>
44+
private let requestModifications: [(URLRequest) -> URLRequest]
4545
private let networkService: NetworkService
4646

4747
/// Creates an insatcne of `ModifyRequestNetworkService`.
4848
///
4949
/// - Parameters:
5050
/// - networkService: a networkservice.
5151
/// - requestModifications: array of modifications to modify requests.
52-
public init(networkService: NetworkService, requestModifications: Array<(URLRequestConvertible) -> URLRequestConvertible>) {
52+
public init(networkService: NetworkService, requestModifications: [(URLRequest) -> URLRequest]) {
5353
self.networkService = networkService
5454
self.requestModifications = requestModifications
5555
}

Source/NetworkServiceMock.swift

Lines changed: 14 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,9 @@ import Dispatch
2626

2727
struct NetworkServiceMockCallback {
2828
let onErrorCallback: ((NetworkError) -> Void)?
29-
let onSuccess: ((Data, HTTPURLResponse) -> Void)?
3029
let onTypedSuccess: ((Any, HTTPURLResponse) -> Void)?
3130

3231
init<Result>(resource: Resource<Result>, onCompletionWithResponse: @escaping (Result, HTTPURLResponse) -> Void, onError: @escaping (NetworkError) -> Void) {
33-
onSuccess = { data, response in
34-
guard let result = try? resource.parse(data) else {
35-
fatalError("Could not parse data into matching result type")
36-
}
37-
onCompletionWithResponse(result, response)
38-
}
3932
onTypedSuccess = { anyResult, response in
4033
guard let typedResult = anyResult as? Result else {
4134
fatalError("Extected type of \(Result.self) but got \(anyResult.self)")
@@ -104,10 +97,20 @@ struct NetworkServiceMockCallback {
10497
- seealso: `NetworkService`
10598
*/
10699
public final class NetworkServiceMock: NetworkService {
100+
107101
/// Count of all started requests
108-
public var requestCount: Int = 0
102+
public var requestCount: Int {
103+
return lastRequests.count
104+
}
105+
109106
/// Last executed request
110-
public var lastRequest: URLRequestConvertible?
107+
public var lastRequest: URLRequest? {
108+
return lastRequests.last
109+
}
110+
111+
/// All executed requests.
112+
public private(set) var lastRequests: [URLRequest] = []
113+
111114
/// Set this to hava a custom networktask returned by the mock
112115
public var nextNetworkTask: NetworkTask?
113116

@@ -144,9 +147,7 @@ public final class NetworkServiceMock: NetworkService {
144147
@discardableResult
145148
public func request<Result>(queue: DispatchQueue, resource: Resource<Result>, onCompletionWithResponse: @escaping (Result, HTTPURLResponse) -> Void,
146149
onError: @escaping (NetworkError) -> Void) -> NetworkTask {
147-
148-
lastRequest = resource.request
149-
requestCount += 1
150+
lastRequests.append(resource.request)
150151
callbacks.append(NetworkServiceMockCallback(
151152
resource: resource,
152153
onCompletionWithResponse: onCompletionWithResponse,
@@ -164,42 +165,6 @@ public final class NetworkServiceMock: NetworkService {
164165
callbacks.removeFirst().onErrorCallback?(error)
165166
}
166167

167-
/// Will return an error to the current waiting request.
168-
///
169-
/// - Parameters:
170-
/// - error: the error which gets passed to the caller
171-
/// - count: the count, how often the error occours.
172-
@available(*, deprecated, message: "Use returnError without count parameter instead. Multiple calls can be done manually.")
173-
public func returnError(with error: NetworkError, count: Int) {
174-
(0..<count).forEach { _ in
175-
precondition(!callbacks.isEmpty, "There is no request left to return an error for.")
176-
returnError(with: error)
177-
}
178-
}
179-
180-
/// Will return a successful request, by using the given data as a server response.
181-
///
182-
/// - Parameters:
183-
/// - data: the mock response from the server.
184-
/// - httpResponse: the mock `HTTPURLResponse` from the server. `HTTPURLResponse()` by default
185-
public func returnSuccess(with data: Data, httpResponse: HTTPURLResponse = HTTPURLResponse()) {
186-
callbacks.removeFirst().onSuccess?(data, httpResponse)
187-
}
188-
189-
/// Will return a successful request, by using the given data as a server response.
190-
///
191-
/// - Parameters:
192-
/// - data: the mock response from the server. `Data()` by default
193-
/// - httpResponse: the mock `HTTPURLResponse` from the server. `HTTPURLResponse()` by default
194-
/// - count: the count how often the response gets triggerd.
195-
@available(*, deprecated, message: "Use returnSuccess without count parameter instead. Multiple calls can be done manually.")
196-
public func returnSuccess(with data: Data = Data(), httpResponse: HTTPURLResponse = HTTPURLResponse(), count: Int = 1) {
197-
(0..<count).forEach { _ in
198-
precondition(!callbacks.isEmpty, "There is no request left to return a success for.")
199-
returnSuccess(with: data, httpResponse: httpResponse)
200-
}
201-
}
202-
203168
/// Will return a successful request, by using the given type `T` as serialized result of a request.
204169
///
205170
/// **Warning:** This will crash if type `T` does not match your expected ResponseType of your current request
@@ -210,21 +175,5 @@ public final class NetworkServiceMock: NetworkService {
210175
public func returnSuccess<T>(with serializedResponse: T, httpResponse: HTTPURLResponse = HTTPURLResponse()) {
211176
callbacks.removeFirst().onTypedSuccess?(serializedResponse, httpResponse)
212177
}
213-
214-
/// Will return a successful request, by using the given type `T` as serialized result of a request.
215-
///
216-
/// **Warning:** This will crash if type `T` does not match your expected ResponseType of your current request
217-
///
218-
/// - Parameters:
219-
/// - data: the mock response from the server. `Data()` by default
220-
/// - httpResponse: the mock `HTTPURLResponse` from the server. `HTTPURLResponse()` by default
221-
/// - count: the count how often the response gets triggerd.
222-
@available(*, deprecated, message: "Use returnSuccess without count parameter instead. Multiple calls can be done manually.")
223-
public func returnSuccess<T>(with serializedResponse: T, httpResponse: HTTPURLResponse = HTTPURLResponse(), count: Int) {
224-
(0..<count).forEach { _ in
225-
precondition(!callbacks.isEmpty, "There is no request left to return a typed success for.")
226-
returnSuccess(with: serializedResponse, httpResponse: httpResponse)
227-
}
228-
}
229-
178+
230179
}

Source/NetworkTask.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,4 @@ public protocol NetworkTask: class {
4141
Suspends a task.
4242
*/
4343
func suspend()
44-
45-
/**
46-
Contains the current progress of a running task.
47-
*/
48-
@available(*, deprecated, message: "Progress is no longer supported and will be removed in version 2.0")
49-
@available(iOS 11.0, OSX 10.13, watchOS 4.0, tvOS 11.0, *)
50-
var progress: Progress { get }
5144
}

Source/NetworkTaskMock.swift

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,4 @@ public class NetworkTaskMock: NetworkTask {
5151
public func suspend() {
5252
state = .suspended
5353
}
54-
55-
/// Mock progress with constant value `0`
56-
@available(*, deprecated, message: "Progress is no longer supported and will be removed in version 2.0")
57-
public var progress: Progress {
58-
return Progress(totalUnitCount: 0)
59-
}
6054
}

Source/Resource+Decodable.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ extension Resource where Model: Decodable {
3131
/// - Parameters:
3232
/// - request: The request to get the remote data payload
3333
/// - decoder: a decoder which can decode the payload into the model type
34-
public init(request: URLRequestConvertible, decoder: JSONDecoder) {
34+
public init(request: URLRequest, decoder: JSONDecoder) {
3535
self.init(request: request, parse: { try decoder.decode(Model.self, from: $0) })
3636
}
3737
}

0 commit comments

Comments
 (0)