Example #1
0
        public void ProximityGadgetAircraftJson_ToModel_Returns_The_Closest_Aircraft()
        {
            var worksheet = new ExcelWorksheetData(TestContext);

            var originLatitude  = worksheet.NDouble("GadgetLat");
            var originLongitude = worksheet.NDouble("GadgetLng");

            var aircraft = CreateAircraft(2);

            for (int i = 1; i <= 2; ++i)
            {
                aircraft[i - 1].Callsign  = i.ToString();
                aircraft[i - 1].Latitude  = worksheet.NFloat(String.Format("AC{0}Lat", i));
                aircraft[i - 1].Longitude = worksheet.NFloat(String.Format("AC{0}Lng", i));
            }

            var model = ProximityGadgetAircraftJson.ToModel(aircraft, originLatitude, originLongitude);

            var closestCallsign = worksheet.String("Closest");

            if (closestCallsign == null)
            {
                Assert.IsNull(model.ClosestAircraft);
            }
            else
            {
                Assert.AreEqual(closestCallsign, model.ClosestAircraft.Callsign);
            }
        }
Example #2
0
        [Route("ClosestAircraft.json")]             // pre-version 3 route
        public void GetClosest(double?lat = null, double?lng = null)
        {
            ProximityGadgetAircraftJson result = null;

            var context = Context;
            var config  = Factory.ResolveSingleton <ISharedConfiguration>().Get();

            if (!context.IsInternet || config.InternetClientSettings.AllowInternetProximityGadgets)
            {
                var feedManager = Factory.ResolveSingleton <IFeedManager>();
                var feed        = feedManager.GetByUniqueId(config.GoogleMapSettings.ClosestAircraftReceiverId, ignoreInvisibleFeeds: true);

                if (feed?.AircraftList != null)
                {
                    var aircraftList = feed.AircraftList.TakeSnapshot(out var unused1, out var unused2);
                    result = ProximityGadgetAircraftJson.ToModel(aircraftList, lat, lng);
                }

                if (result == null)
                {
                    result = new ProximityGadgetAircraftJson()
                    {
                        WarningMessage = "Receiver is offline",
                    };
                }
            }

            _WebApiResponder.ReturnJsonObject(context, result, null, null, MimeType.Text);
        }
Example #3
0
        public void ProximityGadgetAircraftJson_Constructor_Initialises_To_Known_State_And_Properties_Work()
        {
            var json = new ProximityGadgetAircraftJson();

            TestUtilities.TestProperty(json, "ClosestAircraft", null, new ProximityGadgetClosestAircraftJson());
            TestUtilities.TestProperty(json, "WarningMessage", null, "Abc");
            Assert.AreEqual(0, json.EmergencyAircraft.Count);
        }
Example #4
0
        /// <summary>
        /// See base class.
        /// </summary>
        /// <param name="server"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        protected override bool DoHandleRequest(Interface.WebServer.IWebServer server, Interface.WebServer.RequestReceivedEventArgs args)
        {
            bool result = false;

            if ((!args.IsInternetRequest || _InternetClientCanRequestClosestAircraft) && args.PathAndFile.Equals("/ClosestAircraft.json", StringComparison.OrdinalIgnoreCase))
            {
                result = true;

                var latitude  = QueryNDouble(args, "lat");
                var longitude = QueryNDouble(args, "lng");

                var json = new ProximityGadgetAircraftJson();

                if (latitude == null || longitude == null)
                {
                    json.WarningMessage = "Position not supplied";
                }
                else
                {
                    long timeStamp, dataVersion;
                    var  aircraftList = BaseStationAircraftList.TakeSnapshot(out timeStamp, out dataVersion);

                    IAircraft closestAircraft = null;
                    double?   closestDistance = null;

                    foreach (var aircraft in aircraftList)
                    {
                        double?distance = null;
                        if (aircraft.Latitude != null && aircraft.Longitude != null)
                        {
                            distance = GreatCircleMaths.Distance(latitude, longitude, aircraft.Latitude, aircraft.Longitude);
                            if (distance != null && closestAircraft == null || distance < closestDistance)
                            {
                                closestAircraft = aircraft;
                                closestDistance = distance;
                            }
                        }

                        if (aircraft.Emergency == true)
                        {
                            json.EmergencyAircraft.Add(CreateProximityGadgetClosestAircraftJson(aircraft, distance, latitude, longitude));
                        }
                    }

                    if (closestAircraft != null)
                    {
                        var closestJsonAircraft = CreateProximityGadgetClosestAircraftJson(closestAircraft, closestDistance, latitude, longitude);
                        json.ClosestAircraft = closestJsonAircraft;
                    }
                }

                Responder.SendJson(args.Response, json, null);
                args.Classification = ContentClassification.Json;
            }

            return(result);
        }
Example #5
0
        public void ProximityGadgetAircraftJson_ToModel_Returns_List_Of_Aircraft_Transmitting_An_Emergency_Squawk()
        {
            var aircraft = CreateAircraft(2);

            var model = ProximityGadgetAircraftJson.ToModel(aircraft, 1, 1);

            Assert.AreEqual(0, model.EmergencyAircraft.Count);

            aircraft[0].Emergency = true;
            aircraft[0].Callsign  = "TEST";
            model = ProximityGadgetAircraftJson.ToModel(aircraft, 1, 1);
            Assert.AreEqual(1, model.EmergencyAircraft.Count);
            Assert.AreEqual("TEST", model.EmergencyAircraft[0].Callsign);

            aircraft[1].Emergency = true;
            model = ProximityGadgetAircraftJson.ToModel(aircraft, 1, 1);
            Assert.AreEqual(2, model.EmergencyAircraft.Count);
        }
Example #6
0
        public void ProximityGadgetAircraftJson_ToModel_Warns_If_Location_Not_Specified()
        {
            var warning  = "Position not supplied";
            var aircraft = CreateAircraft(1);

            aircraft[0].Latitude  = 1;
            aircraft[0].Longitude = 1;

            var model = ProximityGadgetAircraftJson.ToModel(aircraft, null, null);

            Assert.AreEqual(warning, model.WarningMessage);

            model = ProximityGadgetAircraftJson.ToModel(aircraft, 1, null);
            Assert.AreEqual(warning, model.WarningMessage);

            model = ProximityGadgetAircraftJson.ToModel(aircraft, null, 1);
            Assert.AreEqual(warning, model.WarningMessage);

            model = ProximityGadgetAircraftJson.ToModel(aircraft, 1, 1);
            Assert.AreEqual(null, model.WarningMessage);
        }
Example #7
0
        [Route("ClosestAircraft.json")]             // pre-version 3 route
        public HttpResponseMessage GetClosest(double?lat = null, double?lng = null)
        {
            ProximityGadgetAircraftJson result = null;

            var context = PipelineContext;
            var config  = Factory.Singleton.ResolveSingleton <ISharedConfiguration>().Get();

            if (!context.Request.IsInternet || config.InternetClientSettings.AllowInternetProximityGadgets)
            {
                var feedManager = Factory.Singleton.ResolveSingleton <IFeedManager>();
                var feed        = feedManager.GetByUniqueId(config.GoogleMapSettings.ClosestAircraftReceiverId, ignoreInvisibleFeeds: true);

                if (feed?.AircraftList != null)
                {
                    long unused1, unused2;
                    var  aircraftList = feed.AircraftList.TakeSnapshot(out unused1, out unused2);

                    result = ProximityGadgetAircraftJson.ToModel(aircraftList, lat, lng);
                }

                if (result == null)
                {
                    result = new ProximityGadgetAircraftJson()
                    {
                        WarningMessage = "Receiver is offline",
                    };
                }
            }

            var json     = JsonConvert.SerializeObject(result);
            var response = new HttpResponseMessage(HttpStatusCode.OK);

            response.Content = new StringContent(json, Encoding.UTF8, MimeType.Text);

            return(response);
        }
Example #8
0
 public void ProximityGadgetAircraftJson_ToModel_Returns_Null_If_Passed_Null()
 {
     Assert.IsNull(ProximityGadgetAircraftJson.ToModel(null, 1.0, 1.0));
 }