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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }