コード例 #1
0
        public JsonResult GetODFlightSearchData(FlightSearchRequest fsr)
        {
            //请求地址
            var urls = "http://channel.ceair.com:8849/oDShopping_ODFlightSearch.do";
            //请求参数
            string jsondata = "flightSearchRequest=" + FlightSearchRequestData(fsr);
            ////写入日志
            //Logger.WriteLog("中转预定查询请求参数:" + System.DateTime.Now + jsondata);
            //加密数据
            //string jsondata2 = Compress(jsondata);
            ////写入日志
            //Logger.WriteLog("中转预定查询加密请求参数:" + System.DateTime.Now + jsondata2);
            //请求并获得结果
            string responseData = webRequestGet(urls + "?" + jsondata, null).ToString();
            //写入日志
            //Logger.WriteLog("中转预定查询未解密数据:" + System.DateTime.Now + responseData);
            //解密数据
            string data = GZipPress(responseData);
            //写入日志
            //Logger.WriteLog("中转预定查询解密数据:" + System.DateTime.Now + data);
            //手动解析获得结果
            FlightSearchResponse model = JsonConvert.DeserializeObject <FlightSearchResponse>(data);


            return(Json(model));
        }
コード例 #2
0
        public async Task <HttpResponseMessage> PostFlightSearch(HttpRequestMessage request, FlightSearch flight)
        {
            if (!IsValid(flight))
            {
                return(request.CreateResponse(HttpStatusCode.BadRequest));
            }
            var flights  = FlightStorage.GetFlights(flight.From, flight.To, flight.DepartureDate);
            var response = new FlightSearchResponse(flights);

            return(request.CreateResponse(HttpStatusCode.OK, response));
        }
コード例 #3
0
        public FlightSearchResponse Post(FlightSearchRequest request)
        {
            return(ApiExceptionHelper.WrapException(() =>
            {
                if (request == null)
                {
                    throw new ArgumentNullException(nameof(request));
                }

                _logger.Info("Try flight search: Request='{0}'", request.ToJson());

                var response = new FlightSearchResponse
                {
                    OutboundFlights = Mapper.Map <IEnumerable <FlightSchedule>, IEnumerable <FlightScheduleViewModel> >(
                        _flightScheduleService.GetFlightSchedules(
                            request.FromAirportCode,
                            request.ToAirportCode,
                            request.StartDateTime,
                            request.AdultCount,
                            request.InfantCount,
                            request.ChildrenCount)
                        ),
                    ReturnFlights = request.EndDateTime.HasValue
                        ? Mapper.Map <IEnumerable <FlightSchedule>, IEnumerable <FlightScheduleViewModel> >(
                        _flightScheduleService
                        .GetFlightSchedules(
                            request.ToAirportCode,
                            request.FromAirportCode,
                            request.EndDateTime.Value,
                            request.AdultCount,
                            request.InfantCount,
                            request.ChildrenCount))
                        : null
                };

                response.OutboundFlights.ForEach(f => f.Price = _priceCalculator.Calculate(f));
                response.ReturnFlights?.ForEach(f => f.Price = _priceCalculator.Calculate(f));

                _logger.Info("Flight found: Response='{0}'", response.ToJson());

                return response;
            }, _logger));
        }
コード例 #4
0
        public async Task <IActionResult> Search(FlightSearchDTO model)
        {
            FlightSearchResponse availableFlights = null;
            SearchPageViewModel  vm = null;

            if (ModelState.IsValid)
            {
                //create search request object

                SearchRequestModel rm = new SearchRequestModel
                {
                    FromLocation  = model.From,
                    ToLocation    = model.To,
                    DepartureDate = model.DepartureDate.ToShortDateString(),


                    Persons = new List <Person>
                    {
                        new Person
                        {
                            PassengerType = "ADT",
                            Quantity      = 1
                        }
                    },

                    UserData = new UserData
                    {
                        Ip           = "89.134.155.92",
                        BrowserAgent = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0"
                    }
                };

                try
                {
                    rm.ReturnDate = model.ReturnDate.Value.ToShortDateString();
                }
                catch (Exception)
                {
                    rm.ReturnDate = "";
                }

                string        rmString      = JsonConvert.SerializeObject(rm);
                StringContent searchRequest = new StringContent(rmString, Encoding.UTF8, "application/json");

                try
                {
                    string responseString = string.Empty;

                    using (var client = HttpService.GetHttpClient())
                    {
                        while (responseString == string.Empty)
                        {
                            Thread.Sleep(3000);
                            var result = await client.PostAsync("https://dev.allmyles.com/v2.0/flights", searchRequest);

                            responseString = await result.Content.ReadAsStringAsync();
                        }
                    }

                    availableFlights = JsonConvert.DeserializeObject <FlightSearchResponse>(responseString);
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e.Message);
                }
            }



            if (availableFlights != null)
            {
                vm            = new SearchPageViewModel();
                vm.FirstLegs  = new List <FlightSegment>();
                vm.ReturnLegs = new List <FlightSegment>();

                foreach (var resultSet in availableFlights.flightResultSet)
                {
                    foreach (var combination in resultSet.combinations)
                    {
                        foreach (var flighSegments in combination.firstLeg.flightSegments)
                        {
                            vm.FirstLegs.Add(flighSegments);
                        }

                        foreach (var flighSegments in combination.returnLeg.flightSegments)
                        {
                            vm.ReturnLegs.Add(flighSegments);
                        }
                    }
                }
            }

            return(View(vm));
        }