Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extension APIEndpoint {
- @discardableResult
- public static func getChartData(symbol: String, resolution: String, fromDate: Date, toDate: Date, success: RequestSuccess<BarData>? = nil, error: RequestError? = nil) -> Request? {
- var url = PRICE_HISTORY_URL + "/TChart/history?symbol=\(symbol)&resolution=\(resolution)"
- let fromInterval = lround(fromDate.timeIntervalSince1970)
- let toInterval = lround(toDate.timeIntervalSince1970)
- url = url + "&from=\(fromInterval)&to=\(toInterval)"
- return get(url, success: success, error: error, parser: { (response: AnyObject) -> BarData in
- // Parse response
- guard let responseData = response as? [String: AnyObject] else {
- throw ParserError.invalidResponseData
- }
- print(responseData)
- return BarData(data: responseData)
- })
- }
- }
- //=============
- import Foundation
- public class BarData {
- var bars: [AnyObject] = [AnyObject]()
- init(data: [AnyHashable: Any]) {
- guard let closeData = data["c"] as? [Double],
- let highData = data["h"] as? [Double],
- let lowData = data["l"] as? [Double],
- let openData = data["o"] as? [Double],
- let timeData = data["t"] as? [Int],
- let volData = data["v"] as? [Double] else {
- return
- }
- bars = [AnyObject]()
- for i in 0..<closeData.count {
- var barData = [AnyObject]()
- if timeData.count > i && openData.count > i && highData.count > i && lowData.count > i && volData.count > i {
- barData.append(timeData[i] as AnyObject)
- barData.append(Float(openData[i]) as AnyObject)
- barData.append(Float(highData[i]) as AnyObject)
- barData.append(Float(lowData[i]) as AnyObject)
- barData.append(Float(closeData[i]) as AnyObject)
- barData.append(Float(volData[i]) as AnyObject)
- bars.append(barData as AnyObject)
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement