using System.Text.Json.Serialization; namespace CFCoreAPI.Endpoints.Files.Responses { public struct FileResponse { [JsonConstructor] public FileResponse( List data ) { this.Data = data; } public IReadOnlyList Data { get; } public struct DataModel { [JsonConstructor] public DataModel( int id, int gameId, int modId, bool isAvailable, string displayName, string fileName, int releaseType, int fileStatus, List hashes, DateTime fileDate, int fileLength, int downloadCount, string downloadUrl, List gameVersions, List sortableGameVersions, List dependencies, bool exposeAsAlternative, int parentProjectFileId, int alternateFileId, bool isServerPack, int serverPackFileId, int fileFingerprint, List modules ) { this.Id = id; this.GameId = gameId; this.ModId = modId; this.IsAvailable = isAvailable; this.DisplayName = displayName; this.FileName = fileName; this.ReleaseType = releaseType; this.FileStatus = fileStatus; this.Hashes = hashes; this.FileDate = fileDate; this.FileLength = fileLength; this.DownloadCount = downloadCount; this.DownloadUrl = downloadUrl; this.GameVersions = gameVersions; this.SortableGameVersions = sortableGameVersions; this.Dependencies = dependencies; this.ExposeAsAlternative = exposeAsAlternative; this.ParentProjectFileId = parentProjectFileId; this.AlternateFileId = alternateFileId; this.IsServerPack = isServerPack; this.ServerPackFileId = serverPackFileId; this.FileFingerprint = fileFingerprint; this.Modules = modules; } public int Id { get; } public int GameId { get; } public int ModId { get; } public bool IsAvailable { get; } public string DisplayName { get; } public string FileName { get; } public int ReleaseType { get; } public int FileStatus { get; } public IReadOnlyList Hashes { get; } public DateTime FileDate { get; } public int FileLength { get; } public int DownloadCount { get; } public string DownloadUrl { get; } public IReadOnlyList GameVersions { get; } public IReadOnlyList SortableGameVersions { get; } public IReadOnlyList Dependencies { get; } public bool ExposeAsAlternative { get; } public int ParentProjectFileId { get; } public int AlternateFileId { get; } public bool IsServerPack { get; } public int ServerPackFileId { get; } public int FileFingerprint { get; } public IReadOnlyList Modules { get; } } public struct DependencyModel { [JsonConstructor] public DependencyModel( int modId, int relationType ) { this.ModId = modId; this.RelationType = relationType; } public int ModId { get; } public int RelationType { get; } } public struct HashModel { [JsonConstructor] public HashModel( string value, int algo ) { this.Value = value; this.Algo = algo; } public string Value { get; } public int Algo { get; } } public struct ModuleModel { [JsonConstructor] public ModuleModel( string name, int fingerprint ) { this.Name = name; this.Fingerprint = fingerprint; } public string Name { get; } public int Fingerprint { get; } } public struct SortableGameVersion { [JsonConstructor] public SortableGameVersion( string gameVersionName, string gameVersionPadded, string gameVersion, DateTime gameVersionReleaseDate, int gameVersionTypeId ) { this.GameVersionName = gameVersionName; this.GameVersionPadded = gameVersionPadded; this.GameVersion = gameVersion; this.GameVersionReleaseDate = gameVersionReleaseDate; this.GameVersionTypeId = gameVersionTypeId; } public string GameVersionName { get; } public string GameVersionPadded { get; } public string GameVersion { get; } public DateTime GameVersionReleaseDate { get; } public int GameVersionTypeId { get; } } } }