From 7abe4f9f2ec8dcf67657c6347e6c535839af5ba0 Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Fri, 19 Aug 2022 11:37:31 +0200 Subject: [PATCH] update server to api 11 --- MareAPI | 2 +- .../Hubs/MareHub.Files.cs | 62 ++++++++++--------- .../MareSynchronosServer/Hubs/MareHub.User.cs | 38 ++++++------ 3 files changed, 53 insertions(+), 49 deletions(-) diff --git a/MareAPI b/MareAPI index 21fe024..374cc31 160000 --- a/MareAPI +++ b/MareAPI @@ -1 +1 @@ -Subproject commit 21fe024dfb8cecad466dfc8ceef15040300ad342 +Subproject commit 374cc31babec9ac37aa21104d7fc02e41cd0d38e diff --git a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Files.cs b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Files.cs index 26caad0..bc5027b 100644 --- a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Files.cs +++ b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Files.cs @@ -54,41 +54,47 @@ namespace MareSynchronosServer.Hubs } [Authorize(AuthenticationSchemes = SecretKeyAuthenticationHandler.AuthScheme)] - [HubMethodName(Api.InvokeFileGetFileSize)] - public async Task GetFileSize(string hash) + [HubMethodName(Api.InvokeGetFilesSizes)] + public async Task> GetFilesSizes(List hashes) { - var file = await _dbContext.Files.AsNoTracking().SingleOrDefaultAsync(f => f.Hash == hash); - var forbidden = _dbContext.ForbiddenUploadEntries.AsNoTracking(). - SingleOrDefault(f => f.Hash == hash); - var fileInfo = new FileInfo(Path.Combine(BasePath, hash)); - long fileSize = 0; - try + var allFiles = await _dbContext.Files.Where(f => hashes.Contains(f.Hash)).ToListAsync(); + var forbiddenFiles = await _dbContext.ForbiddenUploadEntries. + Where(f => hashes.Contains(f.Hash)).ToListAsync(); + List response = new(); + foreach (var hash in hashes) { - fileSize = fileInfo.Length; - } - catch - { - // file doesn't exist anymore - } + var fileInfo = new FileInfo(Path.Combine(BasePath, hash)); + long fileSize = 0; + try + { + fileSize = fileInfo.Length; + } + catch + { + // file doesn't exist anymore + } - var response = new DownloadFileDto - { - FileExists = fileInfo.Exists, - ForbiddenBy = forbidden?.ForbiddenBy ?? string.Empty, - IsForbidden = forbidden != null, - Hash = hash, - Size = fileSize, - Url = _configuration["CdnFullUrl"] + hash.ToUpperInvariant() - }; + var forbiddenFile = forbiddenFiles.SingleOrDefault(f => f.Hash == hash); + var downloadFile = allFiles.SingleOrDefault(f => f.Hash == hash); - if (!fileInfo.Exists && file != null) - { - _dbContext.Files.Remove(file); - await _dbContext.SaveChangesAsync(); + response.Add(new DownloadFileDto + { + FileExists = fileInfo.Exists, + ForbiddenBy = forbiddenFile?.ForbiddenBy ?? string.Empty, + IsForbidden = forbiddenFile != null, + Hash = hash, + Size = fileSize, + Url = _configuration["CdnFullUrl"] + hash.ToUpperInvariant() + }); + + if (!fileInfo.Exists && downloadFile != null) + { + _dbContext.Files.Remove(downloadFile); + await _dbContext.SaveChangesAsync(); + } } return response; - } [Authorize(AuthenticationSchemes = SecretKeyAuthenticationHandler.AuthScheme)] diff --git a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.User.cs b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.User.cs index bed451a..6cee8d8 100644 --- a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.User.cs +++ b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.User.cs @@ -205,39 +205,37 @@ namespace MareSynchronosServer.Hubs [Authorize(AuthenticationSchemes = SecretKeyAuthenticationHandler.AuthScheme)] [HubMethodName(Api.SendUserPairedClientPauseChange)] - public async Task SendPairedClientPauseChange(string uid, bool isPaused) + public async Task SendPairedClientPauseChange(string otherUserUid, bool isPaused) { - if (uid == AuthenticatedUserId) return; - var user = await _dbContext.Users.AsNoTracking() - .SingleAsync(u => u.UID == AuthenticatedUserId); - var otherUser = await _dbContext.Users.AsNoTracking() - .SingleOrDefaultAsync(u => u.UID == uid); - if (otherUser == null) return; - _logger.LogInformation("User " + AuthenticatedUserId + " changed pause status with " + uid + " to " + isPaused); - ClientPair wl = - await _dbContext.ClientPairs.SingleOrDefaultAsync(w => w.User == user && w.OtherUser == otherUser); - wl.IsPaused = isPaused; - _dbContext.Update(wl); - await _dbContext.SaveChangesAsync(); - var otherEntry = OppositeEntry(uid); + if (otherUserUid == AuthenticatedUserId) return; + ClientPair pair = await _dbContext.ClientPairs.SingleOrDefaultAsync(w => w.UserUID == AuthenticatedUserId && w.OtherUserUID == otherUserUid); + if (pair == null) return; - await Clients.User(user.UID) + _logger.LogInformation("User " + AuthenticatedUserId + " changed pause status with " + otherUserUid + " to " + isPaused); + pair.IsPaused = isPaused; + _dbContext.Update(pair); + await _dbContext.SaveChangesAsync(); + var selfCharaIdent = (await _dbContext.Users.SingleAsync(u => u.UID == AuthenticatedUserId)).CharacterIdentification; + var otherCharaIdent = (await _dbContext.Users.SingleAsync(u => u.UID == otherUserUid)).CharacterIdentification; + var otherEntry = OppositeEntry(otherUserUid); + + await Clients.User(AuthenticatedUserId) .SendAsync(Api.OnUserUpdateClientPairs, new ClientPairDto() { - OtherUID = otherUser.UID, + OtherUID = otherUserUid, IsPaused = isPaused, IsPausedFromOthers = otherEntry?.IsPaused ?? false, IsSynced = otherEntry != null - }, otherUser.CharacterIdentification); + }, otherCharaIdent); if (otherEntry != null) { - await Clients.User(uid).SendAsync(Api.OnUserUpdateClientPairs, new ClientPairDto() + await Clients.User(otherUserUid).SendAsync(Api.OnUserUpdateClientPairs, new ClientPairDto() { - OtherUID = user.UID, + OtherUID = AuthenticatedUserId, IsPaused = otherEntry.IsPaused, IsPausedFromOthers = isPaused, IsSynced = true - }, user.CharacterIdentification); + }, selfCharaIdent); } if (isPaused)