Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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);
 }