view LazyBear/Views/Search/Networking/SearchData.swift @ 339:e81c18164afb

Fixing backend API Requests
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Sat, 03 Apr 2021 13:02:40 +0200
parents
children d17dd5c28211
line wrap: on
line source

//
//  SearchData.swift
//  LazyBear
//
//  Created by Dennis Concepción Martín on 3/4/21.
//

import SwiftUI

class SearchData: ObservableObject {
    @Published var companies = [CompanyQuoteModel]()
    
    private let baseUrl = Bundle.main.infoDictionary?["IEX_URL"] as? String ?? "Empty url"
    private let apiKey = Bundle.main.infoDictionary?["IEX_API"] as? String ?? "Empty key"
    private let symbols = popularCompanies.map { $0.symbol }
    
    func request() {
        var url = "\(baseUrl)/stock/market/batch?symbols="
        
        // Contruct url appending symbols
        for symbol in self.symbols {
            let index = self.symbols.firstIndex(of: symbol)
            if index == 0 {
                url += symbol
            } else {
                url += ",\(symbol)"
            }
        }
        
        // Append final part of the url
        url += "&types=quote&token=\(apiKey)"

        genericRequest(url: url, model: [String:BatchCompanyQuoteModel].self) { dict in
            for key in dict.keys {
                if let company = dict[key] {
                    self.companies.append(company.quote)
                }
            }
        }
    }
}