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 GetToken(); /// /// Get all implemented Auth Services /// /// API Services types public static IEnumerable 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; } }