コード例 #1
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);
        }
コード例 #2
0
        /// <summary>
        /// Proxies requests for airport-data.com data.
        /// </summary>
        /// <param name="server"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        protected override bool DoHandleRequest(Interface.WebServer.IWebServer server, Interface.WebServer.RequestReceivedEventArgs args)
        {
            var result = false;

            if (args.PathAndFile.Equals("/AirportDataThumbnails.json", StringComparison.OrdinalIgnoreCase))
            {
                result = true;

                var icao          = QueryIcao(args, "icao");
                var registration  = QueryString(args, "reg", true);
                var maxThumbnails = QueryInt(args, "numThumbs", 1);

                AirportDataThumbnailsJson json;
                if (icao == null)
                {
                    json = new AirportDataThumbnailsJson()
                    {
                        Error = "Invalid ICAO"
                    }
                }
                ;
                else
                {
                    try {
                        var response = _AirportDataApi.GetThumbnails(icao, registration, maxThumbnails);
                        if (response.Result == null)
                        {
                            json = new AirportDataThumbnailsJson()
                            {
                                Status = (int)response.HttpStatusCode, Error = "Could not retrieve thumbnails",
                            }
                        }
                        ;
                        else
                        {
                            json = response.Result;
                        }
                    } catch (Exception ex) {
                        json = new AirportDataThumbnailsJson()
                        {
                            Status = 500, Error = String.Format("Exception caught while fetching thumbnails: {0}", ex.Message),
                        };
                    }
                }

                Responder.SendJson(args.Request, args.Response, json, null, null);
            }

            return(result);
        }