/// <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)); }
/// <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); }