public async Task <List <DailyForecast> > GetWeekForecast(
            String cityName)
        {
            try
            {
                ForecastResponse response =
                    await _client.Forecast.GetByName(
                        cityName, false, MetricSystem.Metric);

                return(response.Forecast.GroupBy(f => f.From.Date)
                       .Select(grp => new DailyForecast()
                {
                    Date = grp.Key,
                    Forecasts = grp.Select(ft => new TimeSpanForecast
                    {
                        FromTime = ft.From,
                        ToTime = ft.To,
                        Temperature = ft.Temperature.Value,
                        TemperatureFrom = ft.Temperature.Min,
                        TemperatureTo = ft.Temperature.Max,
                        ImagePath = BuildImagePath(ft.Symbol.Var)
                    }).ToList()
                }).ToList());
            }
            catch (Exception)
            {
                return(null);
            }
        }
Пример #2
0
        public void ctrlSearch_Click(object sender, EventArgs e)
        {
            WeatherStationClient weather = new WeatherStationClient();

            string search = ctrlYourCityName.Text;
            Dictionary <string, string> dic = new Dictionary <string, string>();

            dic.Add("lang", "en");
            dic.Add("units", "metric");
            dic.Add("mode", "json");
            dic.Add("q", search);

            WeatherResponse  res      = weather.GetWeather(dic);
            ForecastResponse Forecast = weather.GetForecast(dic);

            loWeatherInCity.Text = "Weather in: " + Forecast.City.Name + ", " + Forecast.City.Country;

            SetUIValues(res);
            SetNext24Hours(Forecast);
            DegreesSetup(res);
            WindSpeedSetup(res);
            PictureSetup(res, weather);
            NextFiveDays(Forecast.Analysis);
            //SunriseSetup(res.SysInfo.Sunrise);
            //SunsetSetup(res.SysInfo.Sunset);
            ctrlSunrise.Text = DateSetup(res.SysInfo.Sunrise);
            ctrlSunset.Text  = DateSetup(res.SysInfo.Sunset);
        }
        public static ForecastResponse GetForecast(long id)
        {
            var user = UserExistCommand.GetUser(id);

            if (user.Latitude is null || user.Longitude is null)
            {
                return(null);
            }

            string response;
            var    url = "https://api.openweathermap.org/data/2.5/forecast?lat=" +
                         Convert.ToString(user.Latitude) + "&lon=" + Convert.ToString(user.Longitude) +
                         "&units=metric&appid=" + Bot.ReadTokenOWM(@"[path].json");

            if (!Bot.CheckUrl(url))
            {
                return(null);
            }

            HttpWebRequest  httpWebRequest  = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

            using (StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream()))
            {
                response = streamReader.ReadToEnd();
            }

            ForecastResponse forecastResponse = JsonConvert.DeserializeObject <ForecastResponse>(response);

            return(forecastResponse);
        }
Пример #4
0
        public static async Task <ForecastResponse> GetCurrentAsync(double latitude, double longitude, UserCredentials credentials)
        {
            var token = await GetToken(credentials);

            var URL = $"{ApiURL}{latitude.ToString(CultureInfo.InvariantCulture)},{longitude.ToString(CultureInfo.InvariantCulture)}/forecasts";
            ForecastResponse forecast = null;

            try
            {
                forecast = await URL
                           .WithOAuthBearerToken(token)
                           .SetQueryParams(new
                {
                    conditionsType = "standard",
                    blockSize      = "1",
                    limit          = "1"
                })
                           .GetJsonAsync <ForecastResponse>();
            }
            catch (Exception e)
            {
                Crashes.TrackError(e);
            }
            return(forecast);
        }
Пример #5
0
 public ForecastViewModel(ForecastResponse forecast)
 {
     Cod     = forecast.Cod;
     Message = forecast.Message;
     Cnt     = forecast.Cnt;
     List    = new ObservableCollection <List>(forecast.List);
     City    = forecast.City;
 }
        public override async Task <ForecastResponse> GetWeatherForecasts(Empty request, ServerCallContext context)
        {
            var response = new ForecastResponse();

            await FD.GetForecastData();

            response.Data = Google.Protobuf.ByteString.CopyFrom(FD.ForecastBytes);

            return(response);
        }
        public static async void Execute(object sender, Telegram.Bot.Args.MessageEventArgs e)
        {
            if (!keyboardButton.Contains(e.Message.Text))
            {
                return;
            }

            ForecastResponse response = null;
            var count = 0;

            switch (e?.Message?.Text)
            {
            case "Сейчас":
                response = GetForecast(e.Message.Chat.Id);
                count    = 0;
                break;

            case "На 12 часов":
                response = GetForecast(e.Message.Chat.Id);
                count    = 4;
                break;

            case "На день":
                response = GetForecast(e.Message.Chat.Id);
                count    = 8;
                break;

            case "На три дня":
                response = GetForecast(e.Message.Chat.Id);
                count    = 24;
                break;
            }

            if (response is null)
            {
                SetLocation(e.Message.From.Id);
                return;
            }

            Func <WeatherInfo, string> answer = delegate(WeatherInfo data)
            {
                return($"{data.Dt_txt}: <em>температура</em> <b>{data.Main.Temp} ℃</b>, " +
                       $"<em>скорость ветра:</em> <b>{data.Wind.Speed}м/с</b>, " +
                       $"<em>облачность:</em> <b>{data.Clouds.All}%</b>\n\n");
            };

            string forecast = null;

            for (var i = 0; i <= count; i++)
            {
                forecast += answer(response.List[i]);
            }

            await Bot.client.SendTextMessageAsync(e?.Message?.Chat?.Id, forecast, ParseMode.Html);
        }
 private Forecast GetTestForecast()
 {
     // Available values:
     // 30.07.2019 21:00
     // 31.07.2019 00:00
     return(ForecastResponse.FromJson(TestData.Forecast).Forecasts.Where(forecast =>
     {
         return forecast.MeasureTime.Equals(new DateTime(2019, 7, 30, 21, 0, 0));
     })
            .Single());
 }
Пример #9
0
 public void SetNext24Hours(ForecastResponse Forecast)
 {
     ctrlForecast1.Text = ParseAnalysisObject(Forecast.Analysis[0]);
     ctrlForecast2.Text = ParseAnalysisObject(Forecast.Analysis[1]);
     ctrlForecast3.Text = ParseAnalysisObject(Forecast.Analysis[2]);
     ctrlForecast4.Text = ParseAnalysisObject(Forecast.Analysis[3]);
     ctrlForecast5.Text = ParseAnalysisObject(Forecast.Analysis[4]);
     ctrlForecast6.Text = ParseAnalysisObject(Forecast.Analysis[5]);
     ctrlForecast7.Text = ParseAnalysisObject(Forecast.Analysis[6]);
     ctrlForecast8.Text = ParseAnalysisObject(Forecast.Analysis[7]);
 }
Пример #10
0
 public void TestAllProperties(ForecastResponse response)
 {
     Assert.IsNotNull(response);
     Assert.IsNotNull(response.Location);
     Assert.IsNotNull(response.Location.CityLocation);
     Assert.IsNotNull(response.Location.TimeZone);
     Assert.IsNotNull(response.Location.Type);
     Assert.IsNotNull(response.Meta);
     Assert.IsNotNull(response.Sun);
     Assert.IsNotNull(response.Forecast);
     Assert.IsTrue(response.Forecast.Any());
 }
Пример #11
0
        public async Task <ForecastResponse> GetForecastByZipCode(string zipCode)
        {
            var data = new ForecastResponse();

            if (!int.TryParse(zipCode, out _))
            {
                data.StatusMessage = "Zip Code not provided.";
                data.StatusCode    = 400;
                return(data);
            }
            var response = await _handler.GetForecastByZipAsync(zipCode.Trim());

            return(ForecastResponse(data, response));
        }
Пример #12
0
        public async Task <ForecastResponse> GetForecastByCity(string city)
        {
            var data = new ForecastResponse();

            if (string.IsNullOrEmpty(city))
            {
                data.StatusMessage = "City Name not provided.";
                data.StatusCode    = 400;
                return(data);
            }
            var response = await _handler.GetForecastByCityAsync(city.Trim());

            return(ForecastResponse(data, response));
        }
Пример #13
0
        public void GetReturnsEmptyObjectWhenApiResponseIsEmptyJson()
        {
            IForecastProxy forecastProxy = MockRepository.GenerateMock <IForecastProxy>();

            int cityId = 12345;
            ForecastResponse apiresponse = new ForecastResponse("{\"cod\":\"0\"}");

            forecastProxy.Expect(x => x.GetForecastByCityId(cityId)).Return(apiresponse);

            WeatherController controller = new WeatherController(forecastProxy);
            var response = controller.Get(cityId);

            Assert.IsNotNull(response);
            Assert.AreEqual(response, apiresponse);
        }
Пример #14
0
        public void GetCapturesAllForecastsWhenApiResponseContainsMultipleForecasts()
        {
            IForecastProxy forecastProxy = MockRepository.GenerateMock <IForecastProxy>();

            int cityId = 2643743;
            ForecastResponse apiresponse = new ForecastResponse(GetJson());

            forecastProxy.Expect(x => x.GetForecastByCityId(cityId)).Return(apiresponse);

            WeatherController controller = new WeatherController(forecastProxy);
            var response = controller.Get(cityId);

            Assert.IsNotNull(response);
            Assert.AreEqual(response, apiresponse);
            Assert.AreEqual(7, response.Forecasts.Count);
        }
        /// <summary>
        /// Gets the weather forecast for a given latitude and longitude
        /// </summary>
        /// <param name="lat">Latitude</param>
        /// <param name="lng">Longitude</param>
        /// <returns>A ForecastResponse containing forecast data for the given latitude and longitude</returns>
        public async Task <ForecastResponse> GetForecastAsync(decimal lat, decimal lng)
        {
            //Get the gridpoint information for the given latitude and longitude.
            var redirectResponseText = await webClient.GetAsync($"https://api.weather.gov/points/{ lat.ToString("0.####") },{ lng.ToString("0.####") }");

            //Parse the json response
            dynamic json = JObject.Parse(redirectResponseText);

            //Get the forecast Url from the response
            var forecastUrl = (string)json.properties.forecast;

            //Load the forecast Url
            var forecastResponseText = await webClient.GetAsync(forecastUrl);

            //Parse the json response
            dynamic json2 = JObject.Parse(forecastResponseText);

            //Instantiate a new ForecastResponse object and fill it with the data received
            var response = new ForecastResponse()
            {
                Periods           = new List <ForecastPeriod>(),
                ElevationInMeters = json2.properties.elevation.value,
                LastUpdatedDate   = json2.properties.updated,
                Latitude          = lat,
                Longitude         = lng
            };

            foreach (dynamic p in json2.properties.periods)
            {
                response.Periods.Add(new ForecastPeriod()
                {
                    Name      = p.name,
                    StartTime = p.startTime,
                    EndTime   = p.endTime,
                    IsDayTime = p.isDaytime,
                    TemperatureInFahrenheit = p.temperature,
                    WindSpeed     = p.windSpeed,
                    WindDirection = p.windDirection,
                    ForecastShort = p.shortForecast,
                    ForecastLong  = p.detailedForecast
                });
            }

            response.RawData = forecastResponseText;

            return(response);
        }
Пример #16
0
        public void GetWeatherDescriptionWhenApiResponseContainsDescription()
        {
            IForecastProxy forecastProxy = MockRepository.GenerateMock <IForecastProxy>();

            int cityId = 2643743;
            ForecastResponse apiresponse = new ForecastResponse(GetJson());

            forecastProxy.Expect(x => x.GetForecastByCityId(cityId)).Return(apiresponse);

            WeatherController controller = new WeatherController(forecastProxy);
            var response = controller.Get(cityId);

            Assert.IsNotNull(response);
            Assert.AreEqual(response, apiresponse);
            Assert.AreEqual("Rain", response.Forecasts[0].WeatherList[0].Summary);
            Assert.AreEqual("light rain", response.Forecasts[0].WeatherList[0].Description);
            Assert.AreEqual("10d", response.Forecasts[0].WeatherList[0].Icon);
        }
Пример #17
0
        public static List <WeatherForecast> GetForecastsFromApiResponse(ForecastResponse forecastResponse)
        {
            List <WeatherForecast> forecasts = new List <WeatherForecast>();

            if (forecastResponse == null)
            {
                return(forecasts);
            }

            foreach (var forecastResponseItem in forecastResponse.Forecasts)
            {
                foreach (var forecastDay in forecastResponseItem.Forecast)
                {
                    forecasts.Add(GetForecastFromApiResponse(forecastDay));
                }
            }

            return(forecasts);
        }
        public async Task ReturnEmptyIEnumerableWhenNoMatchFound()
        {
            string location   = "Karlsruhe,de";
            var    urlBuilder = CreateFluentUrlProviderWithReturnUrl();
            var    client     = CreateClient(new List <Helper.Maybe <ForecastResponse> >()
            {
                new Helper.Maybe <ForecastResponse>(ForecastResponse.FromJson(TestData.ForecastResponseKarlsruhe))
            });
            var mockQuery = CreateQuery(location);

            mockQuery.Setup(query => query.IsSatisfiedBy(It.IsAny <Forecast>()))
            .Returns((Forecast forecast) => false);

            var serviceUnderTest = new OpenWeatherService(client.Object, urlBuilder.Object);

            var result = await serviceUnderTest.GetForecasts(mockQuery.Object);

            Assert.False(result.Any());
        }
        public async Task ReturnsIEnumerableForGetForecast()
        {
            string location   = "Karlsruhe,de";
            var    urlBuilder = CreateFluentUrlProviderWithReturnUrl();
            var    client     = CreateClient(new List <Helper.Maybe <ForecastResponse> >()
            {
                new Helper.Maybe <ForecastResponse>(ForecastResponse.FromJson(TestData.ForecastResponseKarlsruhe))
            });
            var mockQuery = CreateQuery(location);

            mockQuery.Setup(query => query.IsSatisfiedBy(It.IsAny <Forecast>()))
            .Returns((Forecast forecast) => forecast.MeasureTime.Equals(new DateTimeOffset(2019, 7, 30, 21, 0, 0, new TimeSpan())));

            var serviceUnderTest = new OpenWeatherService(client.Object, urlBuilder.Object);

            var result = await serviceUnderTest.GetForecasts(mockQuery.Object);

            Assert.IsAssignableFrom <IEnumerable <ForecastResult> >(result);
        }
Пример #20
0
        public async Task <IActionResult> ByName(string cityName, int days)
        {
            if (cityName == null || days <= 0)
            {
                return(BadRequest("Invalid Data Entered"));
            }

            try
            {
                var apicall = ApiCall.CallAsync <ForecastResponse>($"http://api.weatherapi.com/v1/forecast.json?key={Secret.weatherapikey}&q={HttpUtility.UrlEncode(cityName)}&days={HttpUtility.UrlEncode(days.ToString())}");

                ForecastResponse apiresponse = (ForecastResponse)apicall.Result;

                return(Ok(apiresponse));
            } catch (Exception)
            {
                return(NotFound());
            }
        }
Пример #21
0
        public void GetReturnsCityObjectWhenApiResponseContainsCityJson()
        {
            IForecastProxy forecastProxy = MockRepository.GenerateMock <IForecastProxy>();

            int cityId = 2643743;
            ForecastResponse apiresponse = new ForecastResponse(GetJson());

            forecastProxy.Expect(x => x.GetForecastByCityId(cityId)).Return(apiresponse);

            WeatherController controller = new WeatherController(forecastProxy);
            var response = controller.Get(cityId);

            Assert.IsNotNull(response);
            Assert.AreEqual(response, apiresponse);
            Assert.AreEqual(2643743, response.City.Id);
            Assert.AreEqual("London", response.City.Name);
            Assert.AreEqual("GB", response.City.CountryCode);
            Assert.AreEqual(51.5085, response.City.Latitude);
            Assert.AreEqual(-0.1258, response.City.Longitude);
        }
Пример #22
0
        public void GetTempratureForTheDayWhenApiResponseContainsDailyTempratureForecast()
        {
            IForecastProxy forecastProxy = MockRepository.GenerateMock <IForecastProxy>();

            int cityId = 2643743;
            ForecastResponse apiresponse = new ForecastResponse(GetJson());

            forecastProxy.Expect(x => x.GetForecastByCityId(cityId)).Return(apiresponse);

            WeatherController controller = new WeatherController(forecastProxy);
            var response = controller.Get(cityId);

            Assert.IsNotNull(response);
            Assert.AreEqual(response, apiresponse);
            Assert.AreEqual(17.6, response.Forecasts[0].Temperature.Day);
            Assert.AreEqual(17.6, response.Forecasts[0].Temperature.Evening);
            Assert.AreEqual(17.6, response.Forecasts[0].Temperature.Max);
            Assert.AreEqual(17.6, response.Forecasts[0].Temperature.Max);
            Assert.AreEqual(14.16, response.Forecasts[0].Temperature.Night);
            Assert.AreEqual(17.6, response.Forecasts[0].Temperature.Morning);
        }
Пример #23
0
        private static ForecastResponse ForecastResponse(ForecastResponse data, OpenWeatherMapResponse response)
        {
            if (response.StatusCode >= 200 && response.StatusCode < 300)
            {
                data.City    = response.OpenWeatherMapForecast.City.Name;
                data.Country = response.OpenWeatherMapForecast.City.Country;

                IEqualityComparer <ForecastResponse.Data> comparer = KeyEqualityComparer <ForecastResponse.Data> .Using(date => date.Date);

                data.Forecasts = response.OpenWeatherMapForecast.Forecasts
                                 .GroupBy(g => new ForecastResponse.Data {
                    Temperature = g.Main.Temp,
                    WindSpeed   = g.Wind.Speed,
                    Humidity    = g.Main.Humidity,
                    Weather     = g.Weather[0].Main,
                    WeatherIcon = g.Weather[0].Icon,
                    Date        = g.Dt.ToLongDateString()
                }, comparer)
                                 .Select(forecast =>
                                         new ForecastResponse.Data {
                    Temperature = forecast.Key.Temperature,
                    WindSpeed   = forecast.Key.WindSpeed,
                    Humidity    = forecast.Key.Humidity,
                    Weather     = forecast.Key.Weather,
                    WeatherIcon = forecast.Key.WeatherIcon,
                    Date        = forecast.Key.Date
                }
                                         )
                                 .ToArray();

                data.StatusCode    = response.OpenWeatherMapForecast.Cod;
                data.StatusMessage = "Success";

                return(data);
            }

            data.StatusMessage = response.Message;
            data.StatusCode    = response.StatusCode;
            return(data);
        }
Пример #24
0
    private LocationForecast MapForecastResponse(ForecastResponse openWeatherApiResponse)
    {
        var locationForecast = new LocationForecast()
        {
            Success      = true,
            ErrorMessage = String.Empty,
            Location     = new ForecastLocation()
            {
                Name      = openWeatherApiResponse.Location.Name,
                Latitude  = openWeatherApiResponse.Location.Coordinates.Latitude,
                Longitude = openWeatherApiResponse.Location.Coordinates.Longitude
            },
            FetchTime = DateTime.Now
        };

        foreach (var openWeatherForecast in openWeatherApiResponse.ForecastPoints)
        {
            WeatherForecast forecast = new()
            {
                Conditions            = openWeatherForecast.Conditions.FirstOrDefault()?.main,
                ConditionsDescription = openWeatherForecast.Conditions.FirstOrDefault()?.description,
                Temperature           = openWeatherForecast.WeatherData.Temperature,
                Humidity             = openWeatherForecast.WeatherData.Humidity,
                Pressure             = openWeatherForecast.WeatherData.pressure * 0.0295301, // Pressure always comes back in millibars, even when imperial requested,
                ForecastTime         = DateTimeOffset.FromUnixTimeSeconds(openWeatherForecast.Date + openWeatherApiResponse.Location.TimezoneOffset).DateTime,
                CloudCover           = openWeatherForecast.Clouds.CloudCover,
                WindSpeed            = openWeatherForecast.Wind.WindSpeed,
                WindDirectionDegrees = openWeatherForecast.Wind.WindDirectionDegrees,
                WindDirection        = CompassDirection.GetDirection(openWeatherForecast.Wind.WindDirectionDegrees),
                ExpectedRainfall     = (openWeatherForecast.Rain?.RainfallThreeHours ?? 0.0) * 0.03937008,
                ExpectedSnowfall     = (openWeatherForecast.Snow?.SnowfallThreeHours ?? 0.0) * 0.03937008
            };

            locationForecast.Forecasts.Add(forecast);
        }

        return(locationForecast);
    }
Пример #25
0
        /// <summary>
        /// Requests the five day forecast. This will retrieve data for the next five days.
        /// </summary>
        private void RequestFiveDayForecast()
        {
            rest_request = new RestRequest(string.Format("forecast?lat={0}&lon={1}&APPID={2}", strLatitude, strLongitude, API_KEY));

            var response = rest_client.Execute(rest_request);

            if (string.IsNullOrWhiteSpace(response.Content) || response.StatusCode != System.Net.HttpStatusCode.OK)
            {
                LoadLocalSingleDay();
            }
            else
            {
                try
                {
                    objForecastRestResponse = JsonConvert.DeserializeObject <ForecastResponse>(response.Content);
                }
                catch (Exception ex)
                {
                    error_logger.LogError("RequestFiveDayForecast", ex.GetType().FullName, ex.Message, "Failed to load five day forecast.", 004);
                    LoadLocalForecast();
                }
            }
        }
        public async Task OneQueryWithOneLocationAndTwoHitsReturnsOneForecastResultWithTwoElements()
        {
            string location   = "Karlsruhe,de";
            var    urlBuilder = CreateFluentUrlProviderWithReturnUrl();
            var    client     = CreateClient(new List <Helper.Maybe <ForecastResponse> >()
            {
                new Helper.Maybe <ForecastResponse>(ForecastResponse.FromJson(TestData.ForecastResponseKarlsruhe))
            });
            var mockQuery = CreateQuery(location);

            mockQuery.Setup(query => query.IsSatisfiedBy(It.IsAny <Forecast>()))
            .Returns((Forecast forecast) =>
            {
                return(forecast.MeasureTime.Equals(new DateTime(2019, 7, 30, 21, 0, 0)) ||
                       forecast.MeasureTime.Equals(new DateTime(2019, 7, 31, 9, 0, 0)));
            });

            var serviceUnderTest = new OpenWeatherService(client.Object, urlBuilder.Object);

            var result = await serviceUnderTest.GetForecasts(mockQuery.Object);

            Assert.True(result.First().ForecastData.Count == 2);
        }
        public async Task ReturnTwoForecastResultsWhenGivenTwoLocationsInQuery()
        {
            string firstLocation  = "Karlsruhe,de";
            string secondLocation = "Stuttgart,de";
            var    urlBuilder     = CreateFluentUrlProviderWithReturnUrl();
            var    client         = CreateClient(new List <Helper.Maybe <ForecastResponse> >()
            {
                new Helper.Maybe <ForecastResponse>(ForecastResponse.FromJson(TestData.ForecastResponseKarlsruhe)),
                new Helper.Maybe <ForecastResponse>(ForecastResponse.FromJson(TestData.ForecastResponseStuttgart))
            });
            var mockQuery = CreateQuery(new List <string>()
            {
                firstLocation, secondLocation
            });

            mockQuery.Setup(query => query.IsSatisfiedBy(It.IsAny <Forecast>()))
            .Returns((Forecast forecast) => forecast.MeasureTime.Equals(new DateTime(2019, 7, 30, 21, 0, 0)));

            var serviceUnderTest = new OpenWeatherService(client.Object, urlBuilder.Object);

            var result = await serviceUnderTest.GetForecasts(mockQuery.Object);

            Assert.True(result.Count() == 2);
        }
Пример #28
0
        async Task <Maybe <ForecastResponse> > IClient.GetForecastAsync(string url)
        {
            try
            {
                var response = await base.GetAsync(url).ConfigureAwait(false);

                if (response.StatusCode != System.Net.HttpStatusCode.OK)
                {
                    return(new Maybe <ForecastResponse>());
                }

                var deserializedResponse = ForecastResponse.FromJson(await response.Content.ReadAsStringAsync().ConfigureAwait(false));
                return(new Maybe <ForecastResponse>(deserializedResponse));
            }
            catch (HttpRequestException ex)
            {
                return(new Maybe <ForecastResponse>()
                {
                    ErrorMessage = $"{ex.GetType().Name}: {ex.Message}"
                });
            }
            catch (InvalidOperationException ex)
            {
                return(new Maybe <ForecastResponse>()
                {
                    ErrorMessage = $"{ex.GetType().Name}: {ex.Message}"
                });
            }
            catch (Newtonsoft.Json.JsonSerializationException ex)
            {
                return(new Maybe <ForecastResponse>()
                {
                    ErrorMessage = $"{ex.GetType().Name}: {ex.Message}"
                });
            }
        }
 public void TestAllProperties(ForecastResponse response)
 {
     Assert.IsNotNull(response);
     Assert.IsNotNull(response.Location);
     Assert.IsNotNull(response.Location.CityLocation);
     Assert.IsNotNull(response.Location.TimeZone);
     Assert.IsNotNull(response.Location.Type);
     Assert.IsNotNull(response.Meta);
     Assert.IsNotNull(response.Sun);
     Assert.IsNotNull(response.Forecast);
     Assert.IsTrue(response.Forecast.Any());
 }
Пример #30
0
        public void SaveNewForecast(ForecastResponse forecast)
        {
            ForecastDTO forecastDTO = forecast.ConvertToDTO();

            sqLiteConnection.Insert(forecastDTO);
        }
Пример #31
0
        private async void LoadWeather()
        {
            OpenWeatherMapClient client = null;

            try
            {
                client = new OpenWeatherMapClient("c6b82ccf5c40a3479dff0d236e06bc53");

                if (client != null)
                {
                    //string m_Location = "Lahore,PK";
                    //int m_LocationID = 1172451;

                    //string m_Location = "Rawalpindi,PK";
                    //int m_LocationID = 1166993;

                    string m_Location   = "Sargodha,PK";
                    int    m_LocationID = 1166000;

                    //string m_Location = "Pattoki, PK";
                    //int m_LocationID = 1168226;

                    //string m_Location = "Islamabad, PK";
                    //int m_LocationID = 1176615;

                    //string m_Location = "Kot Momin, PK";
                    //int m_LocationID = 1182787;

                    bool m_Degree = true;


                    CurrentWeatherResponse currentWeather = null;

                    if (!m_Degree)
                    {
                        currentWeather = await client.CurrentWeather.GetByCityId(m_LocationID, MetricSystem.Imperial);
                    }
                    else
                    {
                        currentWeather = await client.CurrentWeather.GetByCityId(m_LocationID, MetricSystem.Metric);
                    }

                    //set city
                    v_City.Text = currentWeather.City.Name;
                    lstWeatherData.Clear();
                    lstWeatherData.Add(LoadWeatherData(currentWeather.Weather.Icon, currentWeather.Temperature, false, System.DateTime.Now));

                    int forecastDays = 4;

                    if (forecastDays > 1)
                    {
                        ForecastResponse forecast = null;

                        if (!m_Degree)
                        {
                            forecast = await client.Forecast.GetByCityId(m_LocationID, true, MetricSystem.Imperial, OpenWeatherMapLanguage.EN, forecastDays);
                        }
                        else
                        {
                            forecast = await client.Forecast.GetByCityId(m_LocationID, true, MetricSystem.Metric, OpenWeatherMapLanguage.EN, forecastDays);
                        }

                        foreach (ForecastTime forecastTime in forecast.Forecast)
                        {
                            if (forecastTime.Day.Date != System.DateTime.Now.Date)
                            {
                                lstWeatherData.Add(LoadWeatherData(forecastTime.Symbol.Var, forecastTime.Temperature, true, forecastTime.Day));
                            }
                        }
                    }

                    WeatherList.ItemsSource = lstWeatherData;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Weather exception " + ex.Message);
            }
        }