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); }
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); }