1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-20 21:54:58 -04:00
Files
Sonarr/src/Sonarr.Api.V5/Release/ReleasePushResource.cs
T
Mark McDowall 9b756df4bf Add v5 release endpoints
Towards #6960
2025-11-26 18:55:18 -08:00

71 lines
2.3 KiB
C#

using NzbDrone.Core.Indexers;
using NzbDrone.Core.Parser.Model;
using Sonarr.Http.REST;
namespace Sonarr.Api.V5.Release;
public class ReleasePushResource : RestResource
{
public string? Guid { get; set; }
public long Size { get; set; }
public int IndexerId { get; set; }
public string? Indexer { get; set; }
public string? Title { get; set; }
public int TvdbId { get; set; }
public int TvRageId { get; set; }
public string? ImdbId { get; set; }
public IEnumerable<string> Rejections { get; set; } = [];
public DateTime PublishDate { get; set; }
public string? CommentUrl { get; set; }
public string? DownloadUrl { get; set; }
public string? InfoUrl { get; set; }
public string? MagnetUrl { get; set; }
public string? InfoHash { get; set; }
public int? Seeders { get; set; }
public int? Leechers { get; set; }
public DownloadProtocol Protocol { get; set; }
public int IndexerFlags { get; set; }
public int? DownloadClientId { get; set; }
public string? DownloadClientName { get; set; }
}
public static class ReleasePushResourceMapper
{
public static ReleaseInfo ToModel(this ReleasePushResource resource)
{
ReleaseInfo model;
if (resource.Protocol == DownloadProtocol.Torrent)
{
model = new TorrentInfo
{
MagnetUrl = resource.MagnetUrl,
InfoHash = resource.InfoHash,
Seeders = resource.Seeders,
Peers = (resource.Seeders.HasValue && resource.Leechers.HasValue) ? (resource.Seeders + resource.Leechers) : null,
};
}
else
{
model = new ReleaseInfo();
}
model.Guid = resource.Guid;
model.Title = resource.Title;
model.Size = resource.Size;
model.DownloadUrl = resource.DownloadUrl;
model.InfoUrl = resource.InfoUrl;
model.CommentUrl = resource.CommentUrl;
model.IndexerId = resource.IndexerId;
model.Indexer = resource.Indexer;
model.DownloadProtocol = resource.Protocol;
model.TvdbId = resource.TvdbId;
model.TvRageId = resource.TvRageId;
model.ImdbId = resource.ImdbId;
model.PublishDate = resource.PublishDate.ToUniversalTime();
model.IndexerFlags = (IndexerFlags)resource.IndexerFlags;
return model;
}
}