Пример #1
0
        private IMessageActivity MakeWeatherCards(IDialogContext context, AverageForecastResult weather, Weather givenVals)
        {
            var resultMessage = context.MakeMessage();

            resultMessage.AttachmentLayout = AttachmentLayoutTypes.Carousel;
            resultMessage.Attachments      = new List <Attachment>();
            HeroCard heroCard = new HeroCard()
            {
                Title = "WEATHER IN " + givenVals.Location.ToUpper(),
                Text  = String.Format("The average high for {0} is {1} degrees F and the average low is {2} degrees F.",
                                      weather.trip.period_of_record.date_start.date.monthname, weather.trip.temp_high.avg.F, weather.trip.temp_low.avg.F),
            };

            resultMessage.Attachments.Add(heroCard.ToAttachment());

            return(resultMessage);
        }
Пример #2
0
        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);
            }
        }