changeset 172:f4551ef913b8

Implement Company search through API
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Sat, 20 Feb 2021 13:10:50 +0100
parents 6c47d21f94ae
children c3420ae11bda
files LazyBear/Functions/ReadJson.swift LazyBear/Functions/Request.swift LazyBear/Models/CompanyModel.swift
diffstat 3 files changed, 34 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- 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<T: Decodable>(_ filename: String) -> T {
--- 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<T: Decodable>(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()
-    }
-}
--- 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?
+
 }