private IMessageActivity MakeWeatherCards(IDialogContext context, TenDayForecastResult weather, Weather givenVals) { var resultMessage = context.MakeMessage(); resultMessage.AttachmentLayout = AttachmentLayoutTypes.Carousel; resultMessage.Attachments = new List <Attachment>(); // Find the correct date returned from the API and make the card var result = weather.forecast.simpleforecast.forecastday.Where(f => f.date.day == givenVals.Date.Day).FirstOrDefault(); HeroCard heroCard = new HeroCard() { Title = "WEATHER IN " + givenVals.Location.ToUpper(), Text = String.Format("The high for {0}/{1} is {2} degrees F and the low is {3} degrees F. Overall conditions are {4}.", result.date.month, result.date.day, result.high.fahrenheit, result.low.fahrenheit, result.conditions.ToLower()), }; resultMessage.Attachments.Add(heroCard.ToAttachment()); return(resultMessage); }
private async Task <object> CallWeatherAPI(string location, DateTime date) { // Format the location var formatLoc = location.ToLower(); formatLoc = formatLoc.Replace(" ", "_"); // Decide which API to call string type; var uri = "http://api.wunderground.com/api/99739e85768e55e2/"; var futureDate = DateTime.UtcNow.AddDays(10); if (date <= futureDate) { uri += String.Format("forecast10day/q/CA/{0}.json", formatLoc); type = "10day"; } else { // Determine month1 and day1 format var month1 = date.Month.ToString(); var day1 = date.Day.ToString(); if (date.Month < 10) { month1 = "0" + month1; } if (date.Day < 10) { day1 = "0" + day1; } // Determine month2 and day2 format var date2 = date.AddDays(29); var month2 = date2.Month.ToString(); var day2 = date2.Day.ToString(); if (date2.Month < 10) { month2 = "0" + month2; } if (date2.Day < 10) { day2 = "0" + day2; } // Determine date range var range = String.Format("{0}{1}{2}{3}", month1, day1, month2, day2); uri += String.Format("planner_{0}/q/CA/{1}.json", range, formatLoc); type = "average"; } var client = new HttpClient(); var response = await client.GetAsync(uri); HttpContent resultContent = response.Content; var result = await resultContent.ReadAsStringAsync(); if (type == "10day") { TenDayForecastResult forecast = new TenDayForecastResult(); JsonConvert.PopulateObject(result, forecast); return(forecast); } else { AverageForecastResult forecast = new AverageForecastResult(); JsonConvert.PopulateObject(result, forecast); return(forecast); } }