Tranga-Website/Tranga/Publication.cs

65 lines
2.2 KiB
C#
Raw Normal View History

2023-05-18 20:26:47 +02:00
using System.Text.Json;
using System.Text.Json.Serialization;
namespace Tranga;
public struct Publication
{
public string sortName { get; }
2023-05-18 15:47:05 +02:00
public string[,] altTitles { get; }
public string? description { get; }
public string[] tags { get; }
2023-05-18 18:55:11 +02:00
public string? posterUrl { get; }
2023-05-18 17:21:22 +02:00
public string[,]? links { get; }
2023-05-18 15:47:05 +02:00
public int? year { get; }
public string? originalLanguage { get; }
public string status { get; }
2023-05-18 19:54:40 +02:00
public string folderName { get; }
2023-05-18 15:47:05 +02:00
public Connector connector { get; }
public string downloadUrl { get; }
2023-05-18 17:21:22 +02:00
public Publication(string sortName, string? description, string[,] altTitles, string[] tags, string? posterUrl, string[,]? links, int? year, string? originalLanguage, string status, Connector connector, string downloadUrl)
{
this.sortName = sortName;
this.description = description;
2023-05-18 15:47:05 +02:00
this.altTitles = altTitles;
this.tags = tags;
this.posterUrl = posterUrl;
2023-05-18 15:47:05 +02:00
this.links = links;
this.year = year;
this.originalLanguage = originalLanguage;
this.status = status;
this.connector = connector;
this.downloadUrl = downloadUrl;
2023-05-18 19:54:40 +02:00
this.folderName = string.Concat(sortName.Split(Path.GetInvalidPathChars()));
}
2023-05-18 20:26:47 +02:00
public string GetSeriesInfo()
{
SeriesInfo si = new (new Metadata(this.sortName, this.year.ToString() ?? string.Empty, this.status, this.description ?? ""));
return JsonSerializer.Serialize(si, JsonSerializerOptions.Default);
}
internal struct SeriesInfo
{
[JsonInclude]public Metadata metadata { get; }
public SeriesInfo(Metadata metadata) => this.metadata = metadata;
}
internal struct Metadata
{
[JsonInclude]public string name { get; }
[JsonInclude]public string year { get; }
[JsonInclude]public string status { get; }
// ReSharper disable twice InconsistentNaming
[JsonInclude]public string description_text { get; }
public Metadata(string name, string year, string status, string description_text)
{
this.name = name;
this.year = year;
this.status = status;
this.description_text = description_text;
}
}
}