public WeatherData GetWeather(string city, string country) { GlobalWeatherSoapClient soapClient = new GlobalWeatherSoapClient(); string result = soapClient.GetWeather(city, country); XmlSerializer serializer = new XmlSerializer(typeof(CurrentWeather)); MemoryStream reader = new MemoryStream(Encoding.Unicode.GetBytes(result)); CurrentWeather weatherResult = (CurrentWeather)serializer.Deserialize(reader); var data = new WeatherData() { LocationName = weatherResult.Location, Conditions = weatherResult.SkyConditions }; string timeStamp = weatherResult.Time.Substring(weatherResult.Time.IndexOf("/") + 1) .Replace('.', '-') .Replace("UTC", "") .TrimEnd(); string formattedTime = timeStamp.Substring(0, timeStamp.Length - 2) + ":" + timeStamp.Substring(timeStamp.Length - 2); data.CurrentTime = Convert.ToDateTime(formattedTime); int length = weatherResult.Temperature.Length; string celsius = weatherResult.Temperature.Substring(weatherResult.Temperature.IndexOf("(") + 1, length - (weatherResult.Temperature.IndexOf(")") - 1)); data.Temp.AddCelsius(Convert.ToDouble(celsius)); return data; }
public ActionResult Index(WeatherData weatherData) { weatherData.AverageTemperature = string.Empty; weatherData.AverageWindSpeed = string.Empty; if (weatherData.Location == null) { ViewBag.ErrorDescription = "You must supply a location"; ModelState.Clear(); return View(weatherData); } var client = new RestClient("http://localhost:50082/api"); var request = new RestRequest("weather/" + weatherData.Location); var response = client.Execute(request); if (response.StatusCode != HttpStatusCode.OK) { ViewBag.ErrorDescription = "An error has occurred calling WeatherFinder service"; ModelState.Clear(); return View(weatherData); } var results = JsonConvert.DeserializeObject<AverageWeatherResult>(response.Content); if (results.Status != HttpStatusCode.OK) { ViewBag.ErrorDescription = "An error has occurred calling a weather provider"; ModelState.Clear(); return View(weatherData); } switch (weatherData.TemperatureUnits) { case "Celsius": weatherData.AverageTemperature = Math.Round(results.AverageTemperatureCelsius).ToString(); break; case "Fahrenheit": weatherData.AverageTemperature = Math.Round(results.AverageTemperatureFahrenheit).ToString(); break; } switch (weatherData.WindSpeedUnits) { case "Kph": weatherData.AverageWindSpeed = Math.Round(results.AverageWindSpeedKph).ToString(); break; case "Mph": weatherData.AverageWindSpeed = Math.Round(results.AverageWindSpeedMph).ToString(); break; } ViewBag.ErrorDescription = string.Empty; ModelState.Clear(); return View(weatherData); }