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
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
 /// <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);
 }