Exemple #1
0
        static void Main(string[] args)
        {
            try
            {
                stopwatch.Start();
                IHttpService       httpService       = new HttpService(null, new BookingComRequestBuilder());
                IBookingComService bookingComService = new BookingComService(httpService);

                var paramModel = new BookingParamModel(hotelName, checkin_monthday,
                                                       checkin_month, checkin_year, checkout_monthday, checkout_month, checkout_year, room1, no_rooms,
                                                       group_adults, group_children);
                var metaModel = new BookingComMetaModel {
                    hotelId = hotelId, endpoint = endpoint, searchUrl = searchUrl, ParamModel = paramModel
                };

                var r = bookingComService.GetHotelHTMLAsync(metaModel).Result;
                stopwatch.Stop();
                Console.WriteLine("Time elapsed: {0:hh\\:mm\\:ss}", stopwatch.Elapsed);
                if (!string.IsNullOrEmpty(r.PriceData))
                {
                    PostProcess(r.PriceData);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

            Console.ReadLine();
        }
Exemple #2
0
        public async Task <HotelData> GetHotelHTMLAsync(BookingComMetaModel metaModel)
        {
            var result     = new HotelData();
            var paramModel = metaModel.ParamModel;

            IRequestBuilder Builder    = new BookingComRequestBuilder();
            var             authModel  = new BasicAuthenticationModel("", "");
            var             queryModel = new QueryModel(metaModel.searchUrl)
            {
                AuthModel = authModel, ParamModel = paramModel
            };
            var resultHTML = await GetBookingHTMLSearchResult(queryModel);

            var linkExtractor = new BookingComLinkExtractService();

            var url = linkExtractor.GetHotelUrl(resultHTML, metaModel.hotelId, metaModel.endpoint);

            //if url is empty then there is another middle page
            if (string.IsNullOrEmpty(url))
            {
                var middleurl = linkExtractor.GetHotelUrl1(resultHTML, metaModel.hotelId, metaModel.endpoint);
                queryModel = new QueryModel(middleurl)
                {
                    AuthModel = authModel, ParamModel = new ParameterModel()
                };
                var tmpHTML = await GetBookingHTMLSearchResult(queryModel);

                url = linkExtractor.GetHotelUrl(tmpHTML, metaModel.hotelId, metaModel.endpoint);
            }

            if (string.IsNullOrEmpty(url))
            {
                result.Error = "no url can be extracted";
            }
            else
            {
                url = url.Substring(0, url.IndexOf("?"));

                queryModel            = new QueryModel(url);
                queryModel.ParamModel = paramModel;

                var html = await GetBookingHTMLSearchResult(queryModel);

                var htmlDoc   = AgilityParser.GetParser(html);
                var priceNode = htmlDoc.DocumentNode.SelectSingleNode("//div[@id='blockdisplay1']");
                if (priceNode == null)
                {
                    result.Msg = "We have no availability on our site for this property";
                }
                else
                {
                    result.PriceData = priceNode.OuterHtml;
                }
            }

            return(result);
        }
Exemple #3
0
        //example of json becing sent in
        //contenttype is application/json
        //        {
        //	"endpoint":"http://booking.com",
        //	"searchUrl": "http://www.booking.com/searchresults.en-gb.html",
        //      "hotelId": 1368239,
        //    "ParamModel":
        //     {
        //              "ss":"Rozmalas",
        //              "checkin_monthday":24,
        //              "checkin_month":9,
        //              "checkin_year":2016,
        //              "checkout_monthday":25,
        //              "checkout_month":9,
        //              "checkout_year":2016,
        //              "room1":"A,A",
        //              "no_rooms":1,
        //              "group_adults":2,
        //              "group_children":0,
        //              "ss_raw":"Rozmalas"
        //          }


        //}
        // POST api/values
        public async Task <IHttpActionResult> Post(BookingComMetaModel metaModel)
        {
            var res = new ResponseEntity();

            try
            {
                IHttpService       httpService       = new HttpService(null, new BookingComRequestBuilder());
                IBookingComService bookingComService = new BookingComService(httpService);
                res.data = await bookingComService.GetHotelHTMLAsync(metaModel);
            }
            catch (Exception e)
            {
                res.error = e.ToString();
            }

            return(Ok(res));
        }