banking-bot/BankingBot/ActionManagers/LoginManagers/BarclaysLoginManager.cs
Aaron Yarborough f5e9908e83 Refactoring
2017-02-13 13:13:27 +00:00

104 lines
4.2 KiB
C#

using BankingBot.Attributes;
using BankingBot.Contracts;
using BankingBot.Enums;
using BankingBot.LoginCredentials;
using System.Collections.Generic;
using BankingBot.ScriptManagement;
namespace BankingBot.ActionManagers.LoginManagers
{
[ProviderIdentifier(Provider.Barclays)]
public class BarclaysLoginManager : IProviderLoginManager
{
readonly IScriptManager scriptManager;
readonly IBrowserBot browserBot;
private BarclaysLoginCredentials _credentials;
private static class Urls
{
public const string Login = "https://bank.barclays.co.uk/olb/auth/LoginLink.action";
}
public BarclaysLoginManager(
IBrowserBot browserBot,
IScriptManager scriptManager)
{
this.browserBot = browserBot;
this.scriptManager = scriptManager;
}
public void Login(ILoginCredentials credentials)
{
_credentials = credentials as BarclaysLoginCredentials;
browserBot.WebDriver.Url = Urls.Login;
browserBot.WebDriver.Navigate();
//_browserBot.WebDriver.FindElement(By.Id("surname")).SendKeys(_credentials.Surname);
//// Chosen to use membership number
//if (_credentials.MembershipNumber != null)
//{
// _browserBot.WebDriver.FindElement(By.Id("membership-radio")).Click();
// _browserBot.WebDriver.FindElement(By.Id("membership-num")).SendKeys(_credentials.MembershipNumber);
//}
//// Chosen to use card number
//else if (_credentials.CardNumber != null)
//{
// _browserBot.WebDriver.FindElement(By.Id("card-radio")).Click();
// var cardSplit = AccountHelpers.SplitCardNumber(_credentials.CardNumber);
// for (var i = 0; i < 4; i++)
// {
// var fieldId = $"debitCardSet{i + 1}";
// _browserBot.WebDriver.FindElement(By.Id(fieldId)).SendKeys(cardSplit[i]);
// }
//}
//// Chosen to use account details
//else if (_credentials.SortCode != null || _credentials.AccountNumber != null)
//{
// _browserBot.WebDriver.FindElement(By.Id("account-radio")).Click();
// var sortcodeSplit = AccountHelpers.SplitSortCode(_credentials.SortCode);
// for (var i = 0; i < 3; i++)
// {
// var fieldId = $"sortCodeSet{i + 1}";
// _browserBot.WebDriver.FindElement(By.Id(fieldId)).SendKeys(sortcodeSplit[i]);
// }
//}
//else
//{
// throw new InvalidOperationException("Could not determine login procedure from given properties.");
//}
//// Advance to stage 2
//_browserBot.WebDriver.FindElement(By.Id("forward")).Click();
//_browserBot.WebDriver.FindElement(By.Id("passcode-radio")).Click();
//_browserBot.WebDriver.FindElement(By.Id("passcode")).SendKeys(_credentials.Passcode);
//var passcodeCharElements = _browserBot.WebDriver
// .FindElement(By.ClassName("letter-select"))
// .FindElements(By.TagName("strong"));
//var passcodeChar1 = _credentials.Passcode[passcodeCharElements[0].Text.AsInteger() - 1].ToString();
//var passcodeChar2 = _credentials.Passcode[passcodeCharElements[1].Text.AsInteger() - 1].ToString();
//_browserBot.WebDriver.FindElement(By.Id("nameOne")).SendKeys(passcodeChar1);
//_browserBot.WebDriver.FindElement(By.Id("nameTwo")).SendKeys(passcodeChar1);
//_browserBot.WebDriver.FindElement(By.Id("log-in-to-online-banking2")).Click();
var scriptData = new Dictionary<string, string>
{
{ "surname", _credentials.Surname },
{ "cardNumber", _credentials.CardNumber },
{ "sortCode", _credentials.SortCode },
{ "membershipNumber", _credentials.MembershipNumber },
{ "accountNumber", _credentials.AccountNumber }
};
scriptManager.Execute("barclays-login.js", scriptData, ScriptBundles.ProviderLogin);
}
}
}