Skip to content

Instantly share code, notes, and snippets.

@damienissa
Created December 8, 2019 16:51
Show Gist options
  • Select an option

  • Save damienissa/0ca7f5a2f8659aa64cf591662e330f40 to your computer and use it in GitHub Desktop.

Select an option

Save damienissa/0ca7f5a2f8659aa64cf591662e330f40 to your computer and use it in GitHub Desktop.
import Foundation
import Combine
extension Publisher {
@discardableResult
public func sink(receiveValue: @escaping ((Self.Output) -> Void)) -> AnyCancellable {
sink(receiveCompletion: {
switch $0 {
case let .failure(error):
Swift.print(error)
case .finished: break
}
}, receiveValue: receiveValue)
}
}
import Foundation
import Combine
extension URLSession {
@discardableResult
func dataTaskPublisher<Response: Decodable>(for request: URLRequest, type: Response.Type) -> AnyPublisher<Response, Error> {
dataTaskPublisher(for: request)
.map { $0.data }
.decode(type: Response.self, decoder: JSONDecoder())
.receive(on: DispatchQueue.main)
.eraseToAnyPublisher()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment