private void OnSyncFilesRequest(SyncFilesRequest fileAction, SyncFilesBodyRequest bodyRequest, HttpRequestEventArgs e) { var login = _connectionStateManager.GetLoginByToken(fileAction.Token); if (string.IsNullOrEmpty(login)) { ApiController.SetErrorResponse(e); return; } var folders = _userTableDataBase.GetAvailableFolders(login); var databaseFiles = _syncTableDataBase.GetSyncStates(login); var serverFiles = new List <FileInfoModel>(); foreach (var folder in folders) { var rootFiles = _fileManager.GetFiles(folder); serverFiles.AddRange(rootFiles); } var deviceFiles = bodyRequest.Files.Select(Convert).ToList(); var resultServerRemoveFiles = _serverRemoveFiles.Get(databaseFiles, deviceFiles, serverFiles); var response = new SyncFilesResponse(); var resultClientRemoveFiles = _clientRemoveFiles.Get(databaseFiles, deviceFiles, serverFiles); AddFilesRemoveResponse(resultClientRemoveFiles, response); var resultServerAddFiles = _serverAddFiles.Get(databaseFiles, deviceFiles, serverFiles); AddUploadRequest(resultServerAddFiles, response); var resultClientAddFiles = _clientAddFiles.Get(databaseFiles, deviceFiles, serverFiles); AddFilesAddResponse(resultClientAddFiles, response); var resultClientUpdateFiles = _clientUpdateFiles.Get(databaseFiles, deviceFiles, serverFiles); AddUpdatedResponse(resultClientUpdateFiles, response); var clientServerExistFiles = _clientServerExistFiles.Get(databaseFiles, deviceFiles, serverFiles); _syncTableDataBase.AddStates(login, clientServerExistFiles.Select(x => x.Path).ToArray()); _syncTableDataBase.RemoveSyncStates(login, resultServerRemoveFiles.Select(x => x.Path).ToList()); foreach (var filePath in resultServerRemoveFiles.ToList()) { _fileManager.RemoveFile(filePath.Path); RaiseSendMessage($"Remove {filePath.Path}"); } ApiController.SendResponse(e, response); }
private void AddFilesRemoveResponse(IList <FileInfoModel> fileInfoModels, SyncFilesResponse response) { foreach (FileInfoModel baseFileInfo in fileInfoModels) { var fileRemoveResponse = new FileRemoveResponse(); fileRemoveResponse.FileName = GetListOfPath(baseFileInfo.Path); response.RemovedFiles.Add(fileRemoveResponse); } }
private void AddUploadRequest(IList <FileInfoModel> fileInfoModels, SyncFilesResponse response) { foreach (FileInfoModel baseFileInfo in fileInfoModels) { var fileUploadRequest = new FileUploadRequest(); fileUploadRequest.FileName = GetListOfPath(baseFileInfo.Path); response.UploadedFiles.Add(fileUploadRequest); } }
private void AddFilesAddResponse(IList <FileInfoModel> fileInfoModels, SyncFilesResponse response) { foreach (FileInfoModel fileInfo in fileInfoModels) { var fileAddResponse = new FileAddResponse(); fileAddResponse.FileName = GetListOfPath(fileInfo.Path); fileAddResponse.Size = fileInfo.Size; response.AddedFiles.Add(fileAddResponse); } }
private void AddUpdatedResponse(IList <FileInfoModel> fileInfoModels, SyncFilesResponse response) { foreach (FileInfoModel baseFileInfo in fileInfoModels) { var fileUpdatedResponse = new FileUpdatedResponse(); fileUpdatedResponse.FileName = GetListOfPath(baseFileInfo.Path); fileUpdatedResponse.Size = baseFileInfo.Size; response.UpdatedFiles.Add(fileUpdatedResponse); } }