// returns empty list if all validations pass private List <string> ValidateRequest(DarkSky request) { var errors = new List <string>(); if (string.IsNullOrEmpty(request.Location)) { errors.Add("Please provide the location"); } // Other validations go here return(errors); }
// Assumes all validations on requets pass private string GetQueryFromRequest(DarkSky darkSkyRequest, double latitude, double longitude) { var block = darkSkyRequest.Block ?? "currently,minutely,hourly,alerts,flags"; var request = String.Format("{0}/{1},{2}", ApiKey, latitude, longitude).AddQueryParam("exclude", block); if (!string.IsNullOrEmpty(darkSkyRequest.Units)) { request = request.AddQueryParam("units", darkSkyRequest.Units); } return(request); }
public DarkSkyResponse Any(DarkSky request) { try { var errorMsgs = ValidateRequest(request); if (errorMsgs.Count > 0) { return new DarkSkyResponse { Message = string.Join(",", errorMsgs) } } ; var coordinates = geocoder.GetCoordinates(request.Location); if (coordinates.Response != null && coordinates.Response.Message != null) { return new DarkSkyResponse { Message = coordinates.Response.Message } } ; var querystring = GetQueryFromRequest(request, coordinates.Latitude, coordinates.Longitude); var url = PrepareUrlWithQuery(request.ToPostUrl(), querystring); var response = url.GetJsonFromUrl(); var darkSkyForecastResponse = response.FromJson <DarkSkyForecastResponse>(); //since data for only 5 days is requested darkSkyForecastResponse.daily.data = darkSkyForecastResponse.daily.data.Take(5).ToList(); return(new DarkSkyResponse { DarkSkyForecastResponse = darkSkyForecastResponse }); } catch (Exception ex) { return(new DarkSkyResponse { Message = "Could not retrieve results. Please fill in the required fields." }); } }