Ready to test Windows Project
This commit is contained in:
52
Shared/Models/NginxFileSystem.cs
Normal file
52
Shared/Models/NginxFileSystem.cs
Normal file
@ -0,0 +1,52 @@
|
||||
using System.Globalization;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace View_by_Distance.Shared.Models;
|
||||
|
||||
public record NginxFileSystem([property: JsonPropertyName("name")] string Name,
|
||||
DateTime? LastModified,
|
||||
[property: JsonPropertyName("mtime")] string MTime,
|
||||
Uri? URI,
|
||||
[property: JsonPropertyName("type")] string Type,
|
||||
[property: JsonPropertyName("size")] float? Length)
|
||||
{
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
string result = JsonSerializer.Serialize(this, NginxFileSystemSourceGenerationContext.Default.NginxFileSystem);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static NginxFileSystem Get(string format, TimeZoneInfo timeZoneInfo, string name, string mTime, Uri uri, string type, float? size)
|
||||
{
|
||||
NginxFileSystem result;
|
||||
DateTime dateTime;
|
||||
DateTime? nullableDateTime;
|
||||
if (mTime.Length != format.Length + 4 || !DateTime.TryParseExact(mTime[..format.Length], format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime))
|
||||
nullableDateTime = null;
|
||||
else
|
||||
nullableDateTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(dateTime, mTime[(format.Length + 1)..], timeZoneInfo.Id);
|
||||
result = new(name, nullableDateTime, mTime, new($"{uri.OriginalString}/{name}"), type, size);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string GetFormat() =>
|
||||
"ddd, dd MMM yyyy HH:mm:ss";
|
||||
|
||||
public static NginxFileSystem Get(string format, TimeZoneInfo timeZoneInfo, Uri uri, NginxFileSystem nginxFileSystem) =>
|
||||
Get(format, timeZoneInfo, nginxFileSystem.Name, nginxFileSystem.MTime, uri, nginxFileSystem.Type, nginxFileSystem.Length);
|
||||
|
||||
}
|
||||
|
||||
[JsonSourceGenerationOptions(WriteIndented = true, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
[JsonSerializable(typeof(NginxFileSystem))]
|
||||
public partial class NginxFileSystemSourceGenerationContext : JsonSerializerContext
|
||||
{
|
||||
}
|
||||
|
||||
[JsonSourceGenerationOptions(WriteIndented = true, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
[JsonSerializable(typeof(NginxFileSystem[]))]
|
||||
public partial class NginxFileSystemCollectionSourceGenerationContext : JsonSerializerContext
|
||||
{
|
||||
}
|
Reference in New Issue
Block a user