# HG changeset patch # User Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> # Date 1613823050 -3600 # Node ID f4551ef913b82af624d008cb0ee5edecddaf03c2 # Parent 6c47d21f94ae47e2f910b4e3bc10a995b3227c45 Implement Company search through API diff -r 6c47d21f94ae -r f4551ef913b8 LazyBear/Functions/ReadJson.swift --- a/LazyBear/Functions/ReadJson.swift Sat Feb 20 13:10:22 2021 +0100 +++ b/LazyBear/Functions/ReadJson.swift Sat Feb 20 13:10:50 2021 +0100 @@ -7,7 +7,6 @@ import Foundation -let companies: [CompanyModel] = load("companies.json") let themes: [ThemeModel] = load("themes.json") func load(_ filename: String) -> T { diff -r 6c47d21f94ae -r f4551ef913b8 LazyBear/Functions/Request.swift --- a/LazyBear/Functions/Request.swift Sat Feb 20 13:10:22 2021 +0100 +++ b/LazyBear/Functions/Request.swift Sat Feb 20 13:10:50 2021 +0100 @@ -5,16 +5,31 @@ // Created by Dennis Concepción Martín on 20/2/21. // -import SwiftUI +import Foundation -struct Request: View { - var body: some View { - Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) +// Network request +func request(url: String, model: T.Type, completion: @escaping (_ result: T) -> Void) { + // We take some model data T.Type + guard let url = URL(string: url) else { + print("Invalid URL") + return } + let request = URLRequest(url: url) + URLSession.shared.dataTask(with: request) { data, response, error in + if let data = data { + do { + // Decode response with the model passed + let decodedResponse = try JSONDecoder().decode(model, from: data) + DispatchQueue.main.async { + //print(decodedResponse) + completion(decodedResponse) + } + return + } catch { + print(error) + } + } + print("Fetch failed: \(error?.localizedDescription ?? "Unknown error")") + } + .resume() } - -struct Request_Previews: PreviewProvider { - static var previews: some View { - Request() - } -} diff -r 6c47d21f94ae -r f4551ef913b8 LazyBear/Models/CompanyModel.swift --- a/LazyBear/Models/CompanyModel.swift Sat Feb 20 13:10:22 2021 +0100 +++ b/LazyBear/Models/CompanyModel.swift Sat Feb 20 13:10:50 2021 +0100 @@ -7,12 +7,14 @@ import SwiftUI -struct CompanyModel: Hashable, Codable { - var symbol: String - var exchange: String - var exchangeName: String - var name: String - var region: String - var currency: String +struct CompanyModel: Codable { + var symbol: String? + var cik: String? + var securityName: String? + var securityType: String? + var region: String? + var exchange: String? + var sector: String? + }