void.cat/VoidCat/Services/Users/Auth/OAuthFactory.cs

33 lines
878 B
C#
Raw Normal View History

2022-09-08 09:41:31 +00:00
using VoidCat.Services.Abstractions;
namespace VoidCat.Services.Users.Auth;
/// <summary>
/// Factory class to access specific OAuth providers
/// </summary>
public sealed class OAuthFactory
{
private readonly IEnumerable<IOAuthProvider> _providers;
public OAuthFactory(IEnumerable<IOAuthProvider> providers)
{
_providers = providers;
}
/// <summary>
/// Get an OAuth provider by id
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public IOAuthProvider GetProvider(string id)
{
var provider = _providers.FirstOrDefault(a => a.Id.Equals(id, StringComparison.InvariantCultureIgnoreCase));
if (provider == default)
{
throw new Exception($"OAuth provider not found: {id}");
}
return provider;
}
}