Exemplo n.º 1
0
        private void SaveFileAndSend(Session session, FileSaveRequest request)
        {
            var saveFileEventArgs = new SaveFileEventArgs(request.Key, request.Data);
            var response          = new FileSaveResponse()
            {
                MessageId    = request.MessageId,
                ResponseType = ResponseType.OK
            };

            try
            {
                SaveFile?.Invoke(
                    this,
                    saveFileEventArgs);
            }
            catch (Exception ex)
            {
                OnException(session, ex, disconnect: false);
                response.ResponseType = ResponseType.Exception;
                response.Exception    = ex.Message;
            }

            SendData(
                session,
                SerializeManager.Current.Serialize(response));
        }
Exemplo n.º 2
0
        public async Task <FileSaveResponse> SaveToStorage(string subStorage, string fileName, object file, bool compress)
        {
            using (var uow = _dataService.StartUnitOfWork())
            {
                var fileResponse = new FileSaveResponse
                {
                    Filename = fileName
                };
                try
                {
                    var path = _fileStorage + subStorage + "\\";
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    var fileExtension = compress ? ".zip" : ".json";
                    var filePath      = path + fileName + fileExtension;
                    if (!File.Exists(filePath))
                    {
                        using (var memoryStream = new MemoryStream())
                        {
                            if (compress)
                            {
                                using (var archive = new ZipFile())
                                {
                                    archive.AddEntry(fileName + ".json", file.ToJson());
                                    archive.Save(filePath);
                                }
                            }
                            else
                            {
                                await File.WriteAllTextAsync(filePath, file.ToJson());
                            }
                        }
                    }
                    var fileInfo = new FileInfo(filePath);
                    fileResponse.IsSuccess = true;
                    fileResponse.Hash      = fileInfo.CalculateMD5();
                    fileResponse.Path      = filePath;
                    fileResponse.Extension = fileExtension;
                }
                catch (Exception ex)
                {
                    fileResponse.IsSuccess    = false;
                    fileResponse.ErrorMessage = ex.Message;

                    _logger.LogError(ex, "Failed to save file {0}", fileName);
                }

                _logger.LogInformation("LocalFile: Finished saving {0} {1} success", fileName, fileResponse.IsSuccess ? "with" : "without");

                var result = uow.FileSaveResponseRepository.Add(fileResponse);
                uow.Commit();

                return(result);
            }
        }