Beispiel #1
0
        public static NasaNeoItemsForDate GetNasaNeoFromJson(DateTime date, dynamic neosForDate)
        {
            var util = new Utils();

            var result = new NasaNeoItemsForDate()
            {
                Date     = date,
                NeoItems = new List <NasaNeoItem>(neosForDate.Count)
            };

            foreach (var item in neosForDate)
            {
                var neo = new NasaNeoItem()
                {
                    Links = new NasaNeoLinks()
                    {
                        Self = item.links.self,
                    },
                    ReferenceId        = item.neo_reference_id,
                    Name               = item.name,
                    NasaJplUrl         = item.nasa_jpl_url,
                    AbsoluteMagnitudeH = item.absolute_magnitude_h,
                    EstimatedDiameter  = new NasaNeoEstimatedDiameter()
                    {
                        KilometersEstimatedMin = util.RoundWholeNumber((float)item.estimated_diameter.kilometers.estimated_diameter_min),
                        KilometersEstimatedMax = util.RoundWholeNumber((float)item.estimated_diameter.kilometers.estimated_diameter_max),
                        MetersEstimatedMin     = util.RoundWholeNumber((float)item.estimated_diameter.meters.estimated_diameter_min),
                        MetersEstimatedMax     = util.RoundWholeNumber((float)item.estimated_diameter.meters.estimated_diameter_max),
                        MilesEstimatedMin      = util.RoundWholeNumber((float)item.estimated_diameter.miles.estimated_diameter_min),
                        MilesEstimatedMax      = util.RoundWholeNumber((float)item.estimated_diameter.miles.estimated_diameter_max),
                        FeetEstimatedMin       = util.RoundWholeNumber((float)item.estimated_diameter.feet.estimated_diameter_min),
                        FeetEstimatedMax       = util.RoundWholeNumber((float)item.estimated_diameter.feet.estimated_diameter_max),
                    },
                    IsPotentiallyHazardous = item.is_potentially_hazardous_asteroid,
                    CloseApproachDate      = DateTime.Parse(item.close_approach_data[0].close_approach_date.Value),
                    RelativeVelocity       = new NasaNeoRelativeVelocity()
                    {
                        KilometersPerSecond = util.RoundWholeNumber((float)item.close_approach_data[0].relative_velocity.kilometers_per_second),
                        KilometersPerHour   = util.RoundWholeNumber((float)item.close_approach_data[0].relative_velocity.kilometers_per_hour),
                        MilesPerHour        = util.RoundWholeNumber((float)item.close_approach_data[0].relative_velocity.miles_per_hour),
                    },
                    MissDistance = new NasaNeoMissDistance()
                    {
                        Astronomical = util.RoundWholeNumber((float)item.close_approach_data[0].miss_distance.astronomical),
                        Lunar        = util.RoundWholeNumber((float)item.close_approach_data[0].miss_distance.lunar),
                        Kilometers   = util.RoundWholeNumber((float)item.close_approach_data[0].miss_distance.kilometers),
                        Miles        = util.RoundWholeNumber((float)item.close_approach_data[0].miss_distance.miles),
                    },
                };

                result.NeoItems.Add(neo);
            }

            return(result);
        }
        private string GetSSMLResponseForNeo(NasaNeoItem neo)
        {
            var result = new StringBuilder();

            result.Append($"<p>Object {neo.Name}");
            result.Append($" is between {Math.Round(neo.EstimatedDiameter.FeetEstimatedMin, 0)} and {Math.Round(neo.EstimatedDiameter.FeetEstimatedMax, 0)} feet in diameter.");
            result.Append($" It is hurtling towards us at approximately {Math.Round(neo.RelativeVelocity.MilesPerHour, 0)} miles per hour");
            result.Append($" and it will miss us by a mere {Math.Round(neo.MissDistance.Miles, 0)} miles <break strength=\"weak\" /><emphasis level=\"strong\">{_util.GetRandomMessage(Globals.SSML.Wow)}</emphasis></p>");

            return(result.ToString());
        }
        //TODO: Make the responses more interesting -vary, add ssml effects or something
        private string GetTextResponseForNeo(NasaNeoItem neo)
        {
            var result = new StringBuilder();

            result.Append($"\n\nObject {neo.Name}.");
            result.Append($" Diameter: between {Math.Round(neo.EstimatedDiameter.FeetEstimatedMin, 0)} - {Math.Round(neo.EstimatedDiameter.FeetEstimatedMax, 0)} feet.");
            result.Append($" Velocity: {Math.Round(neo.RelativeVelocity.MilesPerHour, 0)} miles  per hour.");
            result.Append($" It will miss us by: {Math.Round(neo.MissDistance.Miles, 0)} miles.");
            //result.Append($" Here is the Nasa JPL link for more information: {neo.NasaJplUrl}.");

            return(result.ToString());
        }