Exemplo n.º 1
0
        /// <summary>
        /// Get the combined json file including conditions, forecast and astronomy data and deserialise into
        /// customised weather data classes using a specific pws station id ("ICANTERB275"), executed as an asynchronous operation.
        /// </summary>
        /// <param name="stationID"></param>
        /// <returns></returns>
        public async Task <WeatherData> GetCombinedDataAsync(string stationID)
        {
            UriProvider uriProvider = new UriProvider();
            Uri         pwsUri      = uriProvider.CreateCombinedDataUriFromPwsStationID(stationID);

            return(await CombinedWeatherDataAsync(pwsUri));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Get the combined json file including conditions, forecast and astronomy data and deserialise into
        /// customised weather data classes using your double coordinates, executed as an asynchronous operation.
        /// </summary>
        /// <param name="latitude"></param>
        /// <param name="longitude"></param>
        /// <returns></returns>
        public async Task <WeatherData> GetCombinedDataAsync(double latitude, double longitude)
        {
            UriProvider uriProvider = new UriProvider();
            Uri         pwsUri      = uriProvider.CreateCombinedDataUriFromCoordinates(latitude, longitude);

            return(await CombinedWeatherDataAsync(pwsUri));
        }
        /// <summary>
        /// Generic method for getting the data features of your choosing as an asynchronous operation.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="location"></param>
        /// <param name="dataFeatures"></param>
        /// <returns></returns>
        public async Task <T> GetDataAsync <T>(PwsGeographicLocation location, WunDataFeatures dataFeatures) where T : IWunData
        {
            UriProvider  uriProvider   = new UriProvider();
            string       pwsIdentifier = GetPwsIdentifier(location);
            Uri          pwsUri        = uriProvider.CreateWunUri(dataFeatures, pwsIdentifier);
            JsonProvider jsonProvider  = new JsonProvider();
            string       jsonData      = await jsonProvider.DownloadJsonStringAsync(pwsUri);

            return(await Task.Factory.StartNew(() => JsonConvert.DeserializeObject <T>(jsonData)));
        }
        /// <summary>
        /// Generic method for getting the data features of your choosing as a synchronous operation.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="location"></param>
        /// <param name="dataFeatures"></param>
        /// <returns></returns>
        public T GetData <T>(PwsGeographicLocation location, WunDataFeatures dataFeatures) where T : IWunData
        {
            UriProvider  uriProvider   = new UriProvider();
            string       pwsIdentifier = GetPwsIdentifier(location);
            Uri          pwsUri        = uriProvider.CreateWunUri(dataFeatures, pwsIdentifier);
            JsonProvider jsonProvider  = new JsonProvider();
            string       jsonData      = jsonProvider.DownloadJsonString(pwsUri);

            return(JsonConvert.DeserializeObject <T>(jsonData));
        }
        public void GivenValidUri_WhenCallingDownloadJsonString_ThenStringFileReturned()
        {
            // Arrange
            bool actualResultValue = false;
            UriProvider uriProvider = new UriProvider();
            Uri testUri = uriProvider.CreateWunUri(WunDataFeatures.astronomy, "INORTHLA43");
            JsonProvider jsonProvider = new JsonProvider();

            //Act
            string jsonData = jsonProvider.DownloadJsonString(testUri);
            if (string.IsNullOrEmpty(jsonData) == true)
            {
                actualResultValue = false;
            }
            else
            {
                actualResultValue = true;
            }

            //Assert
            Assert.IsTrue(actualResultValue);
        }
 /// <summary>
 /// Get the combined json file including conditions, forecast and astronomy data and deserialise into 
 /// customised weather data classes using a specific pws station id ("ICANTERB275"), executed as an asynchronous operation.
 /// </summary>
 /// <param name="stationID"></param>
 /// <returns></returns>
 public async Task<WeatherData> GetCombinedDataAsync(string stationID)
 {
     UriProvider uriProvider = new UriProvider();
     Uri pwsUri = uriProvider.CreateCombinedDataUriFromPwsStationID(stationID);
     return await CombinedWeatherDataAsync(pwsUri);
 }
 /// <summary>
 /// Get the combined json file including conditions, forecast and astronomy data and deserialise into 
 /// customised weather data classes using your double coordinates, executed as an asynchronous operation.
 /// </summary>
 /// <param name="latitude"></param>
 /// <param name="longitude"></param>
 /// <returns></returns>
 public async Task<WeatherData> GetCombinedDataAsync(double latitude, double longitude)
 {
     UriProvider uriProvider = new UriProvider();
     Uri pwsUri = uriProvider.CreateCombinedDataUriFromCoordinates(latitude, longitude);
     return await CombinedWeatherDataAsync(pwsUri);
 }