public static async Task <WeatherData> GetWeather(double latitude, double longitude) { var weatherData = new WeatherData(); if (Reachability.IsHostReachable(DarkSky_API.WebApi())) { string queryString = DarkSky_API.AuthenticatedBaseURL() + latitude.ToString() + "," + longitude.ToString(); var response = await GetDataFromService(queryString).ConfigureAwait(false); weatherData.Time = Conversions.ConvertFromUnixTimeToLocalTime(response.currently.time); TimeZoneInfo timezone; try { timezone = TimeZoneInfo.FindSystemTimeZoneById(response.timezone); weatherData.TimezoneTime = Conversions.ConvertFromUnixTimeToTimeZoneTime(response.currently.time, timezone); weatherData.TimezoneIsValid = true; } catch (Exception ex) { Debug.WriteLine("Exception {0}", ex); Debug.WriteLine(String.Format("Failed to find timezone {0}.", response.timezone)); weatherData.TimezoneIsValid = false; } weatherData.Summary = response.currently.summary; weatherData.Latitude = response.latitude; weatherData.Longitude = response.longitude; weatherData.WindSpeed = response.currently.windSpeed; weatherData.Temperature = response.currently.temperature; weatherData.Humidity = (int)(response.currently.humidity * 100.0); weatherData.Icon = response.currently.icon; weatherData.TimeZone = response.timezone; weatherData.UnixTime = response.currently.time; var dailyWeatherForecast = response.daily.data; var weatherDayDataList = new List <WeatherDayData>(); foreach (var item in dailyWeatherForecast) { WeatherDayData weatherDayData = new WeatherDayData(); weatherDayData.Time = Conversions.ConvertFromUnixTimeToLocalTime(item.time); weatherDayData.Icon = item.icon; weatherDayData.WindSpeed = item.windSpeed; weatherDayData.TemperatureMin = item.temperatureMin; weatherDayData.TemperatureMax = item.temperatureMax; weatherDayData.Humidity = (int)(item.humidity * 100.0); weatherDayDataList.Add(weatherDayData); } weatherData.DailyData = weatherDayDataList; } return(weatherData); }
private void AttemptToRequestLocation() { if (AppDelegate.Current.IsLocationServicesEnabled()) { if (!AppDelegate.Current.IsLocationAuthorized()) { // request permission - either always or when in use AppDelegate.Current.RequestWhenInUseAuthorization(); } else { //this is only requires, if constantly updating location //AppDelegate.Current.StartCoreLocationUpdates(); if (Reachability.IsHostReachable(DarkSky_API.WebApi())) { //one-off request AppDelegate.Current.RequestLocation(); } else { //Display Alert var okAlertController = UIAlertController.Create("Not connected to internet.", "Please try again later.", UIAlertControllerStyle.Alert); okAlertController.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null)); PresentViewController(okAlertController, true, null); } } } else { //Display Alert var okAlertController = UIAlertController.Create("Please enable", "Location Services", UIAlertControllerStyle.Alert); okAlertController.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null)); PresentViewController(okAlertController, true, null); } }