cfcoreapi/CFCoreAPI/Endpoints/Files/Responses/ModFilesResponse.cs

197 lines
6.3 KiB
C#
Raw Normal View History

using System.Text.Json.Serialization;
namespace CFCoreAPI.Endpoints.Files.Responses
{
public struct ModFilesResponse
{
[JsonConstructor]
public ModFilesResponse(
List<DataModel> data,
PaginationModel pagination
)
{
this.Data = data;
this.Pagination = pagination;
}
public IReadOnlyList<DataModel> 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<HashModel> hashes,
DateTime fileDate,
int fileLength,
int downloadCount,
string downloadUrl,
List<string> gameVersions,
List<SortableGameVersionModel> sortableGameVersions,
List<DependencyModel> dependencies,
bool exposeAsAlternative,
int parentProjectFileId,
int alternateFileId,
bool isServerPack,
int serverPackFileId,
int fileFingerprint,
List<ModuleModel> 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<HashModel> Hashes { get; }
public DateTime FileDate { get; }
public int FileLength { get; }
public int DownloadCount { get; }
public string DownloadUrl { get; }
public IReadOnlyList<string> GameVersions { get; }
public IReadOnlyList<SortableGameVersionModel> SortableGameVersions { get; }
public IReadOnlyList<DependencyModel> 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<ModuleModel> 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; }
}
}
}