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