diff --git a/server/RdtClient.Data/Data/TorrentData.cs b/server/RdtClient.Data/Data/TorrentData.cs index c8ffbc1..ac594ed 100644 --- a/server/RdtClient.Data/Data/TorrentData.cs +++ b/server/RdtClient.Data/Data/TorrentData.cs @@ -46,38 +46,42 @@ namespace RdtClient.Data.Data public async Task GetById(Guid id) { - var results = await _dataContext.Torrents - .AsNoTracking() - .Include(m => m.Downloads) - .FirstOrDefaultAsync(m => m.TorrentId == id); + var dbTorrent = await _dataContext.Torrents + .AsNoTracking() + .Include(m => m.Downloads) + .FirstOrDefaultAsync(m => m.TorrentId == id); - if (results != null) + if (dbTorrent == null) { - foreach (var file in results.Downloads) - { - file.Torrent = null; - } + return null; } - return results; + foreach (var file in dbTorrent.Downloads) + { + file.Torrent = null; + } + + return dbTorrent; } public async Task GetByHash(String hash) { - var results = await _dataContext.Torrents - .AsNoTracking() - .Include(m => m.Downloads) - .FirstOrDefaultAsync(m => m.Hash.ToLower() == hash.ToLower()); + var dbTorrent = await _dataContext.Torrents + .AsNoTracking() + .Include(m => m.Downloads) + .FirstOrDefaultAsync(m => m.Hash.ToLower() == hash.ToLower()); - if (results != null) + if (dbTorrent == null) { - foreach (var file in results.Downloads) - { - file.Torrent = null; - } + return null; } - return results; + foreach (var file in dbTorrent.Downloads) + { + file.Torrent = null; + } + + return dbTorrent; } public async Task Add(String realDebridId, String hash, Boolean autoDownload, Boolean autoDelete) @@ -103,6 +107,11 @@ namespace RdtClient.Data.Data { var dbTorrent = await _dataContext.Torrents.FirstOrDefaultAsync(m => m.TorrentId == torrent.TorrentId); + if (dbTorrent == null) + { + return; + } + dbTorrent.RdName = torrent.RdName; dbTorrent.RdSize = torrent.RdSize; dbTorrent.RdHost = torrent.RdHost; @@ -126,6 +135,11 @@ namespace RdtClient.Data.Data { var dbTorrent = await _dataContext.Torrents.FirstOrDefaultAsync(m => m.TorrentId == torrentId); + if (dbTorrent == null) + { + return; + } + dbTorrent.Status = status; await _dataContext.SaveChangesAsync(); @@ -135,6 +149,11 @@ namespace RdtClient.Data.Data { var dbTorrent = await _dataContext.Torrents.FirstOrDefaultAsync(m => m.TorrentId == torrentId); + if (dbTorrent == null) + { + return; + } + dbTorrent.Category = category; await _dataContext.SaveChangesAsync(); @@ -144,6 +163,11 @@ namespace RdtClient.Data.Data { var dbTorrent = await _dataContext.Torrents.FirstOrDefaultAsync(m => m.TorrentId == id); + if (dbTorrent == null) + { + return; + } + _dataContext.Torrents.Remove(dbTorrent); await _dataContext.SaveChangesAsync(); diff --git a/server/RdtClient.Service/Services/DownloadManager.cs b/server/RdtClient.Service/Services/DownloadManager.cs index cef813f..f90af0d 100644 --- a/server/RdtClient.Service/Services/DownloadManager.cs +++ b/server/RdtClient.Service/Services/DownloadManager.cs @@ -140,15 +140,13 @@ namespace RdtClient.Service.Services var extractPath = destinationFolderPath; - if (!entries.Any(m => m.Key.StartsWith(torrentName))) + if (!entries.Any(m => m.Key.StartsWith(torrentName + @"\")) && !entries.Any(m => m.Key.StartsWith(torrentName + @"/"))) { extractPath = Path.Combine(destinationFolderPath, torrentName); } foreach (var entry in entries) { - - _rarCurrentEntry = entry; entry.WriteToDirectory(extractPath,