private void OnConnectionRequest(SyncFilesRequest arg2, ConnectionRequest connectionRequest, HttpRequestEventArgs e) { try { var token = Guid.NewGuid(); _connectionStateManager.Add(connectionRequest.Login, token.ToString()); var folders = _userTableDataBase.GetAvailableFolders(connectionRequest.Login); var response = new ConnectionResponse() { Token = token.ToString() }; foreach (var folder in folders) { var sharedFolder = new SharedFolder(); sharedFolder.Files.AddRange(GetListOfPath(folder)); response.Shared_folders.Add(sharedFolder); } ApiController.SendResponse(e, response); } catch (Exception exception) { _logger.Error(() => $"{exception}"); throw; } }
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 OnCreateUserRequest(SyncFilesRequest syncFilesRequest, CreateUserRequest request, HttpRequestEventArgs arg3) { foreach (var availableFolder in request.AvailableFolders) { switch (availableFolder.AvailableFolderAction) { case AvailableFolderAction.Add: _userTableDataBase.Add(request.Login, request.Password, availableFolder.Path); break; case AvailableFolderAction.Remove: _userTableDataBase.Remove(request.Login, request.Password, availableFolder.Path); _syncTableDataBase.RemoveSyncStatesByAvailableFolder(request.Login, availableFolder.Path); break; default: throw new ArgumentOutOfRangeException(); } } }
private void OnCreateSyncStateRequest(SyncFilesRequest syncFilesRequest, CreateSyncStateRequest request, HttpRequestEventArgs arg3) { _syncTableDataBase.AddStates(request.Login, request.SyncFiles); }