Exemplo n.º 1
0
        public static async System.Threading.Tasks.Task <int> Main(string[] args = null)
        {
            Console.OutputEncoding = System.Text.Encoding.UTF8;
            Console.WriteLine("Welcome to FlysasClient 0.9.3");
            Console.WriteLine("SAS flight data from api.flysas.com");
            Console.WriteLine("Additional offline data (airports,airlines and routes) from openflights.org");
            Console.WriteLine("");
            var data = new OpenFlightsData.OFData();

            try
            {
                data.LoadData();
            }
            catch
            {
                Console.WriteLine("Error loading Openfligts data");
            }
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json", true);
            var     config  = builder.Build();
            Options options = new Options(config.AsEnumerable());
            var     client  = new ConsoleClient(options, data);
            await client.InputLoop();

            return(0);
        }
Exemplo n.º 2
0
        public ConsoleClient(Options options, OpenFlightsData.OFData data)
        {
            var httpClient = FlysasLib.HttpClientFactory.CreateClient();

            this.client  = new SASRestClient(httpClient);
            this.options = options;
            this.data    = data;
        }
Exemplo n.º 3
0
        public List <FlightExport> Convert(List <Transaction> transactions)
        {
            var OFData = new OpenFlightsData.OFData();

            OFData.LoadData();
            var exports = new List <FlightExport>();
            var map     = new Dictionary <string, string>()
            {
                { "KF", "SK" }
            };

            foreach (var r in transactions)
            {
                if (!r.Origin.IsNullOrEmpty() && !string.IsNullOrEmpty(r.FlightNumber))
                {
                    var o         = OFData.Airports.Where(a => a.City.Equals(r.Origin, StringComparison.OrdinalIgnoreCase)).ToList();
                    var d         = OFData.Airports.Where(a => a.City.Equals(r.Destination, StringComparison.OrdinalIgnoreCase)).ToList();
                    var tmp       = OFData.Routes.Where(route => o.Any(a => a.IATA == route.FromIATA) && d.Any(a => a.IATA == route.ToIATA)).ToList();
                    var airline   = OFData.Airlines.FirstOrDefault(a => a.IATA == r.Airline);
                    var airlineId = airline != null ? new int?(airline.ID) : new int?();
                    var matches   = tmp.Where(route => route.AirlineCode == r.Airline || map.ContainsKey(route.AirlineCode) && map[route.AirlineCode] == r.Airline).ToList();
                    if (matches.Count == 0)
                    {
                        if (o.Count == 1 && d.Count == 1)
                        {
                            exports.Add(new FlightExport(r, o.First().IATA, d.First().IATA, airlineId, 50));
                        }
                        else
                        {
                            exports.Add(new FlightExport(r, r.Origin, r.Destination, airlineId, 0));
                        }
                    }
                    if (matches.Count > 1)
                    {
                        exports.Add(new FlightExport(r, r.Origin, r.Destination, airlineId, 0));
                    }
                    if (matches.Count == 1)
                    {
                        exports.Add(new FlightExport(r, matches.First().FromIATA, matches.First().ToIATA, airlineId, 99));
                    }
                }
            }
            return(exports);
        }
Exemplo n.º 4
0
 public ConsoleClient(Options options, OpenFlightsData.OFData data)
 {
     this.options = options;
     this.data    = data;
 }
Exemplo n.º 5
0
        public static void Seed(AwardData.AwardContext ctx, Microsoft.AspNetCore.Identity.UserManager <ApplicationUser> userManager)
        {
            var routes = getRoutes();

            ctx.Routes.AddRange(routes);
            ctx.SaveChanges();
            var client = new HttpClient();

            using (HttpResponseMessage response = client.GetAsync("https://awardhacks.se/export/flights").Result)
            {
                using (HttpContent content = response.Content)
                {
                    var json   = content.ReadAsStringAsync().Result;
                    var export = Newtonsoft.Json.JsonConvert.DeserializeObject <List <AwardExport> >(json);
                    foreach (var e in export)
                    {
                        var tmp = new Crawl
                        {
                            Id         = e.Id,
                            Departure  = e.Departure,
                            Arrival    = e.Arrival,
                            Business   = e.Business,
                            Plus       = e.Plus,
                            Go         = e.Go,
                            Flight     = e.Flight,
                            TravelDate = e.Departure.Date,
                            CrawlDate  = DateTime.Now,
                            Equipment  = e.Equipment,
                            Success    = true
                        };
                        tmp.RouteId = routes.Where(r => r.To == e.Destination && r.From == e.Origin).Select(r => r.Id).FirstOrDefault();
                        if (tmp.RouteId == 0)
                        {
                            tmp.RouteId = routes.Where(r => r.To == e.Origin && r.From == e.Destination).Select(r => r.Id).FirstOrDefault();
                            tmp.Return  = true;
                        }
                        ctx.Crawls.Add(tmp);
                    }
                }
            }
            ctx.SaveChanges();
            var ofData = new OpenFlightsData.OFData();

            ofData.LoadData();
            int id = 0;

            foreach (var iata in ctx.Routes.Select(r => r.To).Union(ctx.Routes.Select(r => r.From)).Distinct())
            {
                var ap = ofData.Airports.FirstOrDefault(ap => iata.Equals(ap.IATA, StringComparison.OrdinalIgnoreCase));
                if (ap != null)
                {
                    ctx.Airports.Add(new Airport

                    {
                        Id      = ++id,
                        City    = ap.City,
                        IATA    = ap.IATA,
                        Country = ap.Country,
                        //This is not correct for Africa etc but will do for the current routes.
                        Zone = ap.Country == "United States" ? "North & Central America" : ap.Timezone > -4 && ap.Timezone < 5 ? "Europe" : "Central Asia & Far East Asia"
                    }
                                     );
                }
                ;
            }
            ctx.SaveChanges();
            userManager.CreateAsync(new ApplicationUser {
                Email = "*****@*****.**", EmailConfirmed = true, UserName = "******"
            }, "someweaktestpwd");
            ctx.SaveChanges();
        }