banking-bot/BankingBot/ActionManagers/LoginManagers/LoginManager.cs
2017-01-25 20:02:01 +00:00

49 lines
1.9 KiB
C#

using System;
using System.Linq;
using BankingBot.Attributes;
using BankingBot.Contracts;
namespace BankingBot.ActionManagers.LoginManagers
{
public class LoginManager : ActionManager, ILoginManager
{
public LoginManager(IBrowserBot browserBot)
: base(browserBot)
{ }
public void Login(ILoginCredentials credentials)
{
//var provLoginManagerType = GetProviderLoginManagerType(credentials);
//var provLoginManager = (IProviderLoginManager)Activator.CreateInstance(provLoginManagerType, BrowserBot);
//provLoginManager.Login(credentials);
var provLoginManagerType = GetActionTypeFromInterface(credentials, typeof(IProviderLoginManager));
var provLoginManager = (IProviderLoginManager)Activator.CreateInstance(provLoginManagerType, BrowserBot);
provLoginManager.Login(credentials);
}
//private Type GetProviderLoginManagerType(ILoginCredentials credentials)
//{
// // Get all "provider login manager" classes in the assembly
// // (any class that implements IProviderLoginManager)
// var providerLoginManagerTypes = AppDomain.CurrentDomain.GetAssemblies()
// .SelectMany(s => s.GetTypes())
// .Where(p =>
// typeof(IProviderLoginManager).IsAssignableFrom(p) &&
// p != typeof(IProviderLoginManager));
// var credentialsProvider = credentials.GetProvider();
// foreach (var type in providerLoginManagerTypes)
// {
// // Get associated provider for each "provider login manager" class
// var provider = ProviderIdentifier.GetProviderFromType(type);
// if (provider == credentialsProvider)
// {
// return type;
// }
// }
// return null;
//}
}
}