private string ExtractTaxOfficeNumber(HtmlDocument doc, InfoAccumulator info) { const string sBaseXPath = "//dl[contains(@class, 'known-facts')]"; HtmlNodeCollection dataLists = doc.DocumentNode.SelectNodes(sBaseXPath); if (dataLists == null) { Log.Warn("No suitable location for Tax Office Number found."); return(null); } // if foreach (HtmlNode dl in dataLists) { HtmlNode dt = dl.SelectSingleNode("./dt"); if (dt == null) { continue; } if (dt.InnerText != "Tax Office Number:") { continue; } HtmlNode dd = dl.SelectSingleNode("./dd"); if (dd == null) { info.AddError("Tax Office Number not found."); return(null); } var taxOfficeNumber = dd.InnerText.Trim().Replace(" ", ""); if (taxOfficeNumber == string.Empty) { info.AddError("Tax Office Number not specified."); return(null); } Log.InfoFormat("Tax office number is {0}.", taxOfficeNumber); return(taxOfficeNumber); } // for each data list info.AddWarning("Tax Office Number location not found."); Log.Warn("Tax Office Number location not found."); return(null); } // ExtractTaxOfficeNumber
/// <summary> /// Logins the specified user name. /// </summary> /// <param name="userName">Name of the user.</param> /// <param name="password">The password.</param> /// <returns></returns> private async Task <InfoAccumulator> Login(string userName, string password) { InfoAccumulator info = new InfoAccumulator(); if (password.Length > maxPasswordLength) { string warning = string.Format("Supplied password ({0}) is too long, truncating to {1} characters.", EncryptionUtils.Encrypt(password), maxPasswordLength); Log.Warn(warning); info.AddWarning(warning); password = password.Substring(0, maxPasswordLength); } try { //Scrap login details ScrapedLoginRequestDetails scrapedLoginDetails = await LoginDetailsScraper.ScrapLoginDetails(baseAddress, Browser); if (!IsLoginRequestDetailsScrapedAsExpected(scrapedLoginDetails)) { info.AddError("login error"); Log.Error("unexpected login page"); return(info); } Log.InfoFormat("Login URL: {0}", scrapedLoginDetails.LoginPageUrl); //try to login string loginResponse = await HttpPostLogin(scrapedLoginDetails, userName, password); if (string.IsNullOrEmpty(loginResponse) || !IsLoginSucceeded(loginResponse, userName)) { return(info); } } catch (Exception ex) { Log.Error(ex); throw; } return(info); }
/// <summary> /// Registers the warning. /// </summary> /// <param name="info">The information.</param> /// <param name="warningMessage">The warning message.</param> private void RegisterWarning(InfoAccumulator info, string warningMessage) { info.AddWarning(warningMessage); Log.Warn(warningMessage); }