Skip to content

Commit a968206

Browse files
authored
Merge pull request #2 from galbernator/steve/fix-infinite-loop
Update method signatures
2 parents b424fb7 + 12862f6 commit a968206

3 files changed

Lines changed: 8 additions & 8 deletions

File tree

Sources/ObservableNetworking/NetworkManager.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public final class NetworkManager: Network {
9797
return Fail(error: error).eraseToAnyPublisher()
9898
}
9999

100-
let taskPublisher: AnyPublisher<Data, NetworkError> = session.dataTaskPublisher(for: request)
100+
let taskPublisher: AnyPublisher<Data, NetworkError> = session.dataTaskPublisher(for: request as NSURLRequest)
101101
return taskPublisher
102102
.mapError { .failure(message: $0.localizedDescription) }
103103
.flatMap(maxPublishers: .max(1)) { CurrentValueSubject<Data, NetworkError>($0) }

Sources/ObservableNetworking/Protocols/Session.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@ public protocol Session {
1414
func dataTask(with request: NSURLRequest, completionHandler: @escaping DataTaskResult) -> DataTask
1515

1616
@available(iOS 13.0, *)
17-
func dataTaskPublisher<T: TaskPublisher>(for request: URLRequest) -> T
17+
func dataTaskPublisher<T: TaskPublisher>(for request: NSURLRequest) -> T
1818
}
1919

2020
// Make URLSession connform to Session protocol
2121
extension URLSession: Session {
2222
public func dataTask(with request: NSURLRequest, completionHandler: @escaping DataTaskResult) -> DataTask {
23-
return dataTask(with: request, completionHandler: completionHandler) as DataTask
23+
dataTask(with: request as URLRequest, completionHandler: completionHandler) as DataTask
2424
}
2525

2626
@available(iOS 13.0, *)
27-
public func dataTaskPublisher<T: TaskPublisher>(for request: URLRequest) -> T {
28-
return dataTaskPublisher(for: request) as T
27+
public func dataTaskPublisher<T: TaskPublisher>(for request: NSURLRequest) -> T {
28+
dataTaskPublisher(for: request as URLRequest) as! T
2929
}
3030
}
3131

@@ -39,12 +39,12 @@ extension URLSessionDataTask: DataTask {}
3939

4040
/// Protocol that allows dependecy injection for the express purpose of mocking `URLSession` during testing. This should not be used elsewhere
4141
@available(iOS 13.0, *)
42-
public protocol TaskPublisher: Publisher {
43-
}
42+
public protocol TaskPublisher: Publisher {}
4443

4544
// Make DataTaskPublisher conform to TaskPublisher protocol
4645
@available(iOS 13.0, *)
4746
extension URLSession.DataTaskPublisher: TaskPublisher {}
4847

48+
// Make AnyPublisher conform to TaskPublisher protocol
4949
@available(iOS 13.0, *)
5050
extension AnyPublisher: TaskPublisher {}

Tests/ObservableNetworkingTests/MockURLSession.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class MockURLSession: Session {
4747
}
4848

4949
@available(iOS 13.0, *)
50-
func dataTaskPublisher<T>(for request: URLRequest) -> T where T : TaskPublisher {
50+
func dataTaskPublisher<T>(for request: NSURLRequest) -> T where T : TaskPublisher {
5151
lastURL = request.url
5252
return MockDataTaskPublisher().eraseToAnyPublisher() as! T
5353
}

0 commit comments

Comments
 (0)