public async Task <FinancialData> GetQuarterlyFinancialData(string symbolId, int year, EntityModel periodEntity) { var queryString = new Dictionary <string, string>() { { "period", "quarter" } }; var periods = new Dictionary <int, string[]>() { { 1, new string[] { "1st", "first", "I" } }, { 2, new string[] { "2nd", "second", "II" } }, { 3, new string[] { "3rd", "third", "III" } }, { 4, new string[] { "4th", "fourth", "IV" } }, }; int period = 1; foreach (KeyValuePair <int, string[]> entry in periods) { if (entry.Value.Contains(periodEntity.Entity)) { period = entry.Key; } } var requestUri = QueryHelpers.AddQueryString("financials/income-statement/" + symbolId, queryString); var request = new HttpRequestMessage(HttpMethod.Get, requestUri); request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var response = await _httpClient.SendAsync(request); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync(); IncomeStatementModel incomeModel = JsonConvert.DeserializeObject <IncomeStatementModel>(content); var financial = incomeModel.Financials.Find(financialData => DateTime.Parse(financialData.Date).Year == year && GetQuarter(DateTime.Parse(financialData.Date).Month) == period); if (financial == null && year == DateTime.Now.Year) { return(incomeModel.Financials.Find(financialData => DateTime.Parse(financialData.Date).Year == year - 1 && GetQuarter(DateTime.Parse(financialData.Date).Month) == period)); } else { return(financial); } }
public async Task <FinancialData> GetAnnualFinancialData(string symbolId, int year) { var request = new HttpRequestMessage(HttpMethod.Get, "financials/income-statement/" + symbolId); request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var response = await _httpClient.SendAsync(request); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync(); IncomeStatementModel incomeModel = JsonConvert.DeserializeObject <IncomeStatementModel>(content); var financial = incomeModel.Financials.Find(financialData => DateTime.Parse(financialData.Date).Year == year); if (financial == null && year == DateTime.Now.Year) { return(incomeModel.Financials.Find(financialData => DateTime.Parse(financialData.Date).Year == year - 1)); } else { return(financial); } }