public async Task <List <SLStation> > GetSLStations() { var url = CreateUrl(); var handler = new WebServiceHandler(); string json = await handler.GetResultFromAPIAsync(url); List <SLStation> slStations = new List <SLStation>(); try { var wrapper = new { LocationList = new { StopLocation = new List <SLStation>() } }; var deserializedResult = JsonConvert.DeserializeAnonymousType(json, wrapper); if (deserializedResult.LocationList.StopLocation != null) { slStations = deserializedResult.LocationList.StopLocation; } else { var wrapperSingleStation = new { LocationList = new { StopLocation = new SLStation() } }; var deserializedSingleStationResult = JsonConvert.DeserializeAnonymousType(json, wrapperSingleStation); if (deserializedSingleStationResult.LocationList.StopLocation != null) { slStations.Add(deserializedSingleStationResult.LocationList.StopLocation); } } } catch (Exception) { } var result = slStations .GroupBy(x => x.Id.ToString().Substring(x.Id.ToString().Length - 4, 4)) .Select(g => g.First()) .ToList(); return(result); }
public async Task <List <SLDisturbance> > GetSLDisturbances() { var result = new List <SLDisturbance>(); var url = CreateUrl(); var handler = new WebServiceHandler(); string json = await handler.GetResultFromAPIAsync(url); try { var wrapper = new { ResponseData = new List <SLDisturbance>() }; var deserializedResult = JsonConvert.DeserializeAnonymousType(json, wrapper); result = deserializedResult.ResponseData; } catch (Exception) { //POKÉMON! } return(result); }
public async Task <SMHIWarning> GetWarningsAsync(string latitude, string longitude) { Latitude = latitude; Longitude = longitude; string district = GetDistrictIdSMHI(); var handler = new WebServiceHandler(); var requestResult = await handler.GetResultFromAPIAsync(url); var smhiWarning = new SMHIWarning(); //TEST PURPOSE USING MOCK TEST DATA if (false) { #region testJsonstring requestResult = @"{ ""alert"": [ { ""identifier"": ""smhi-bpm-1480440396515"", ""sender"": ""*****@*****.**"", ""sent"": ""2016-11-29T18:30:12+01:00"", ""status"": ""Actual"", ""msgType"": ""Alert"", ""scope"": ""Public"", ""code"": [ ""system_affiliation 5"", ""latest_update 2016-11-30T02:47:05+01:00"", ""system_version 2"", ""system_alert_category warning"" ], ""info"": { ""language"": ""sv-SE"", ""category"": ""Met"", ""event"": ""average wind speed at sea"", ""urgency"": ""Immediate"", ""severity"": ""Extreme"", ""certainty"": ""Likely"", ""eventCode"": [ { ""valueName"": ""system_event_level"", ""value"": ""Warning class 1 moderate gale"" }, { ""valueName"": ""system_event_sv-SE"", ""value"": ""Medelvind till havs"" }, { ""valueName"": ""system_event_priority"", ""value"": 1 }, { ""valueName"": ""system_event_level_sv-SE"", ""value"": ""Meteorregn"" }, { ""valueName"": ""system_event_level_color"", ""value"": ""#fdeb1b"" }, { ""valueName"": ""system_event_level_id"", ""value"": 1 } ], ""effective"": ""2016-11-29T18:30:12+01:00"", ""onset"": ""2016-11-29T18:30:12+01:00"", ""expires"": ""2017-11-29T18:26:36+01:00"", ""senderName"": ""SMHI, Swedish Meteorological and Hydrological Institute"", ""headline"": ""Bottenviken"", ""description"": ""Från onsdag förmiddag nordväst 15 m/s. Natt mot torsdag avtagande."", ""web"": ""http://www.smhi.se/vadret/vadret-i-sverige/Varningar"", ""parameter"": [ { ""valueName"": ""system_position"", ""value"": 1 }, { ""valueName"": ""system_history"", ""value"": ""{\""history\"":[{\""date\"":\""2016-11-29T18:30:12\"",\""node\"":\""description\"",\""label\"":\""Områdesbeskrivning (Sv)\"",\""value\"":\""Från onsdag middag nordväst 15 m/s.\""},{\""date\"":\""2016-11-30T02:44:24\"",\""node\"":\""description\"",\""label\"":\""Områdesbeskrivning (Sv)\"",\""value\"":\""Från onsdag förmiddag nordväst 15 m/s. Natt mot torsdag avtagande.\""}]}"" }, { ""valueName"": ""system_navtex"", ""value"": ""{\""status\"":\""active\"",\""svdescription\"":\""FRÅN ONSDAG FÖRMIDDAG NORDVÄST 15 M/S. NATT MOT TORSDAG AVTAGANDE.\"",\""endescription\"":\""FROM WEDNESDAY MORNING NW 15 M/S. NIGHT TOWARDS THURSDAY DECR.\""}"" }, { ""valueName"": ""system_eng_headline"", ""value"": ""No English headline available"" }, { ""valueName"": ""system_eng_description"", ""value"": ""No English description available"" } ], ""area"": { ""areaDesc"": ""025"" } } }]" ; #endregion // testJsonstring } try { var wrapper = new { alert = new List <SingleWarning>() }; var alerts = JsonConvert.DeserializeAnonymousType(requestResult, wrapper); foreach (var alert in alerts.alert) { if (alert.info.Area["areaDesc"] == district) { smhiWarning.WarningClass = GetWarningClass(alert.info.Severity); smhiWarning.WeatherWarningMessage = alert.info.EventCode[3]["value"]; } } } catch (Exception ex) { var error = ex.Message; } return(smhiWarning); //var allTheJson = JsonConvert.DeserializeObject // <List< // Dictionary< // string, Dictionary< // string, List< // Dictionary< // string, string>>>>>> // (requestResult); }