27 lines
No EOL
884 B
C#
27 lines
No EOL
884 B
C#
using System.Globalization;
|
|
using System.Reflection;
|
|
|
|
namespace CatalogLite;
|
|
|
|
internal static class ExpirationGuard
|
|
{
|
|
private const string MetadataKey = "CatalogLiteExpirationDate";
|
|
|
|
public static bool IsExpired(out DateOnly? expirationDate)
|
|
{
|
|
expirationDate = TryReadExpirationDate();
|
|
return expirationDate is null || DateOnly.FromDateTime(DateTime.Today) > expirationDate.Value;
|
|
}
|
|
|
|
private static DateOnly? TryReadExpirationDate()
|
|
{
|
|
var value = typeof(Program).Assembly
|
|
.GetCustomAttributes<AssemblyMetadataAttribute>()
|
|
.FirstOrDefault(attribute => string.Equals(attribute.Key, MetadataKey, StringComparison.Ordinal))
|
|
?.Value;
|
|
|
|
return DateOnly.TryParseExact(value, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var date)
|
|
? date
|
|
: null;
|
|
}
|
|
} |