public async Task <SymbolData> GetSymbol(string stockSymbol) { if (!TokenExists) { Logger.Instance.LogMessage(TracingLevel.WARN, "GetSymbol was called without a valid token"); return(null); } var kvp = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("token", TokenManager.Instance.Token.StockToken), new KeyValuePair <string, string>("symbols", stockSymbol), new KeyValuePair <string, string>("types", "quote"), // Remove chart as of now //kvp.Add(new KeyValuePair<string, string>("types", "quote,chart")); new KeyValuePair <string, string>("range", "dynamic") }; //kvp.Add(new KeyValuePair<string, string>("chartLast", DEFAULT_CHART_POINTS.ToString())); HttpResponseMessage response = await StockQuery(STOCK_BATCH_CHART_QUOTE, kvp); if (response.IsSuccessStatusCode) { string body = await response.Content.ReadAsStringAsync(); var obj = JObject.Parse(body); // Invalid Stock Symbol if (obj.Count == 0) { Logger.Instance.LogMessage(TracingLevel.ERROR, $"GetSymbol invalid symbol: {stockSymbol}"); return(null); } var jp = obj.Properties().First(); StockQuote quote = jp.Value["quote"].ToObject <StockQuote>(); ChartBase[] chart = null; /* Not used at this point * if (jp.Value["chart"]["range"].ToString() == CHART_DAILY) * { * chart = GetDailyChart(jp.Value["chart"]["data"]); * } * else * { * chart = GetMinuteChart(jp.Value["chart"]["data"]); * } */ return(new SymbolData(quote.Symbol, quote, chart)); } else { Logger.Instance.LogMessage(TracingLevel.ERROR, $"GetSymbol invalid response: {response.StatusCode}"); if (response.StatusCode == System.Net.HttpStatusCode.Forbidden) { TokenManager.Instance.SetTokenFailed(); } } return(null); }
public SymbolData(string symbol, StockQuote quote, ChartBase[] chart) { SymbolName = symbol; Quote = quote; Chart = chart; }