Example #1
0
        protected void AppendBasicHeader(BasicAuthenticationModel authModel, HttpClient client)
        {
            var byteArray    = System.Text.Encoding.UTF8.GetBytes(authModel.Name + ":" + authModel.Password);
            var base64String = Convert.ToBase64String(byteArray);

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", base64String);
        }
Example #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);
        }