using System.Text.Json.Serialization; namespace CFCoreAPI.Endpoints.Files.Responses { public struct ModFilesResponse { [JsonConstructor] public ModFilesResponse( List data, PaginationModel pagination ) { this.Data = data; this.Pagination = pagination; } public IReadOnlyList Data { get; } public PaginationModel Pagination { 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 PaginationModel { [JsonConstructor] public PaginationModel( int index, int pageSize, int resultCount, int totalCount ) { this.Index = index; this.PageSize = pageSize; this.ResultCount = resultCount; this.TotalCount = totalCount; } public int Index { get; } public int PageSize { get; } public int ResultCount { get; } public int TotalCount { get; } } public struct SortableGameVersionModel { [JsonConstructor] public SortableGameVersionModel( 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; } } } }