public RiverLevelMeasurement GetRiverLevel(string stationId) { try { Trace.TraceInformation("EARiverLevelScraper:GetRiverLevel() - {0}", stationId); using (WebClient client = new WebClient()) { string response = client.DownloadString( $"http://environment.data.gov.uk/flood-monitoring/id/stations/{stationId}/readings?_sorted&_limit=2"); if (string.IsNullOrWhiteSpace(response) == false) { var json = JsonConvert.DeserializeObject <dynamic>(response); RiverLevelMeasurement level = new RiverLevelMeasurement() { Measurement = Convert.ToDouble(json["items"][0]["value"].ToString()), LastMeasurement = Convert.ToDouble(json["items"][1]["value"].ToString()), MeasurementDateTime = DateTime.Parse(json["items"][0]["dateTime"].ToString()) }; // grab extra station details string stationDetails = client.DownloadString( $"http://environment.data.gov.uk/flood-monitoring/id/stations/{stationId}.json"); if (string.IsNullOrWhiteSpace(stationDetails) == false) { var stationJson = JsonConvert.DeserializeObject <dynamic>(stationDetails); level.StationName = stationJson["items"]["label"].ToString(); level.StationRLOIid = stationJson["items"]["RLOIid"].ToString(); } return(level); } else { Trace.TraceError("EAApiRiverLevelScraper:GetRiverLevel() - response was null"); return(null); } } } catch (Exception Ex) { Trace.TraceError("EAApiRiverLevelScraper:GetRiverLevel() - Error. Ex {0}. {1}", Ex.Message, Ex.StackTrace); return(null); } }
public List <RiverLevelMeasurement> GetRiverLevels(string stationId, int count = 10) { try { List <RiverLevelMeasurement> levels = new List <RiverLevelMeasurement>(); Trace.TraceInformation("EARiverLevelScraper:GetRiverLevels() - {0}", stationId); using (WebClient client = new WebClient()) { string response = client.DownloadString( $"http://environment.data.gov.uk/flood-monitoring/id/stations/{stationId}/readings?_sorted&_limit={count}"); if (string.IsNullOrWhiteSpace(response) == false) { var json = JsonConvert.DeserializeObject <dynamic>(response); foreach (var item in json["items"]) { RiverLevelMeasurement level = new RiverLevelMeasurement() { Measurement = Convert.ToDouble(item["value"].ToString()), MeasurementDateTime = DateTime.Parse(item["dateTime"].ToString()) }; levels.Add(level); } return(levels); } else { Trace.TraceError("EAApiRiverLevelScraper:GetRiverLevels() - response was null"); return(null); } } } catch (Exception Ex) { Trace.TraceError("EAApiRiverLevelScraper:GetRiverLevels() - Error. Ex {0}. {1}", Ex.Message, Ex.StackTrace); return(null); } }