49 lines
1.9 KiB
C#
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;
|
|
//}
|
|
}
|
|
}
|