33 lines
1.0 KiB
C#
33 lines
1.0 KiB
C#
using SWAD.API.Consts.Enums;
|
|
using SWAD.API.Models.Config.ApiServices.Structure;
|
|
|
|
namespace SWAD.API.Services.MusicAPI.Auth;
|
|
|
|
public abstract class AbstractAuthService
|
|
{
|
|
public MusicService ServiceType { get; protected init; }
|
|
|
|
// ReSharper disable once NullableWarningSuppressionIsUsed
|
|
protected ApiServiceData Data { get; init; } = null!;
|
|
public abstract Task<IAuthResponse?> GetToken();
|
|
|
|
/// <summary>
|
|
/// Get all implemented Auth Services
|
|
/// </summary>
|
|
/// <returns>API Services types</returns>
|
|
public static IEnumerable<Type> GetAllImplementations()
|
|
{
|
|
var type = typeof(AbstractAuthService);
|
|
var types = AppDomain.CurrentDomain.GetAssemblies()
|
|
.SelectMany(s => s.GetTypes())
|
|
.Where(p => type.IsAssignableFrom(p) && !p.IsInterface && !p.IsAbstract);
|
|
return types;
|
|
}
|
|
}
|
|
|
|
public interface IAuthResponse
|
|
{
|
|
public string Token { get; set; }
|
|
public int? ExpireTime { get; set; }
|
|
public DateTime? ExpireAt { get; }
|
|
} |