XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEToolBox

【WPF】XFE工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
using XFEToolBox.Core.Tools;
using XFEToolBox.Server.Core.Models;

namespace XFEToolBox.Server.Services;

internal static class ToolPackageContractMapper
{
    public static ToolPackageSummary ToSummary(StoredToolPackage package) => new()
    {
        Id = package.Manifest.Id,
        Name = package.Manifest.Name,
        Description = package.Manifest.Description,
        IconDataUrl = package.IconDataUrl,
        Author = package.Manifest.Author,
        Category = package.Manifest.Category,
        LatestVersion = package.Manifest.Version,
        Tags = package.Manifest.Tags,
        RequiresAdministrator = package.Manifest.RequiresAdministrator,
        UpdatedAtUtc = package.UploadedAtUtc
    };

    public static ToolPackageVersionInfo ToVersionInfo(StoredToolPackage package) => new()
    {
        ToolId = package.Manifest.Id,
        Version = package.Manifest.Version,
        Sha256 = package.Sha256,
        PackageSize = package.PackageSize,
        UploadedAtUtc = package.UploadedAtUtc,
        Published = package.Published,
        ReviewStatus = package.ReviewStatus ?? (package.Published
            ? ToolPackageReviewStatus.Approved
            : ToolPackageReviewStatus.Pending),
        SubmittedByUserId = package.SubmittedByUserId,
        SubmittedByUserName = package.SubmittedByUserName,
        ReviewedByUserName = package.ReviewedByUserName,
        ReviewedAtUtc = package.ReviewedAtUtc,
        ReviewMessage = package.ReviewMessage,
        DownloadUrl = "/api/v1/tools/download"
    };

    public static ToolPackageUploadResult ToUploadResult(StoredToolPackage package) => new()
    {
        Manifest = package.Manifest,
        Package = ToVersionInfo(package)
    };
}