Mercurial > public > lazybear
annotate Functions/Price.swift @ 0:668fd7e0d121
first commit
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Tue, 05 Jan 2021 16:43:09 +0000 |
parents | |
children |
rev | line source |
---|---|
0
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
1 // |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
2 // RequestPrices.swift |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
3 // LazyBear |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
4 // |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 3/1/21. |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
6 // |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
7 |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
8 import SwiftUI |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
9 |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
10 class Price: ObservableObject { |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
11 @Published var result = [PriceModel]() |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
12 @Published var showingView = false |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
13 @Published var showingAlert = false |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
14 |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
15 func request(symbol: String) { |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
16 guard let url = URL(string: priceUrl(symbol: symbol, sandbox: true)) else { // Change sandbox when production |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
17 print("Invalid URL") |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
18 return |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
19 } |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
20 let request = URLRequest(url: url) |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
21 URLSession.shared.dataTask(with: request) { data, response, error in |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
22 if let data = data { |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
23 if let decodedResponse = try? JSONDecoder().decode([PriceModel].self, from: data) { |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
24 // we have good data – go back to the main thread |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
25 DispatchQueue.main.async { |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
26 // update our UI |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
27 self.result = decodedResponse |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
28 print("API request ok") |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
29 |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
30 // Check if data is empty |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
31 if self.result.isEmpty || self.result.count <= 1 { |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
32 print("Data is empty") |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
33 self.showingView = false |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
34 self.showingAlert = true |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
35 } else { |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
36 print("Showing view...") |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
37 self.showingView = true |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
38 } |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
39 |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
40 } |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
41 |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
42 // everything is good, so we can exit |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
43 return |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
44 } |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
45 } |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
46 |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
47 // if we're still here it means there was a problem |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
48 print("Fetch failed: \(error?.localizedDescription ?? "Unknown error")") |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
49 }.resume() |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
50 } |
668fd7e0d121
first commit
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
51 } |