// // MessageFetcher.swift // JuickNext // // Created by Vitaly Takmazov on 10.12.2019. // Copyright © 2019 com.juick. All rights reserved. // import Foundation import Combine class MessageFetcher: ObservableObject { @Published var state: Result? = nil init(url: String) { guard let apiUrl = URL(string: url) else { state = .failure(.error("Malformed API URL.")) return } URLSession.shared.dataTask(with: apiUrl) { [weak self] (data, _, error) in if let error = error { self?.state = .failure(.error(error.localizedDescription)) return } guard let data = data else { self?.state = .failure(.error("Malformed response data")) return } let root = try! JSONDecoder().decode(Root.self, from: data) DispatchQueue.main.async { [weak self] in self?.state = .success(root) } }.resume() } }