private async Task SendRequestToSendFilePeace(Guid filePieceId, WebSocket selectedWebsocket)
        {
            var dto = new SendFileDto
            {
                RequestType  = OutgoingRequestType.SEND_FILE,
                FilePieceIds = new List <Guid> {
                    filePieceId
                }
            };

            _logger.LogDebug($"Sending SEND FILE request of {filePieceId}");

            await WriteStringToWebSocketAsync(JsonConvert.SerializeObject(dto), selectedWebsocket);
        }
Пример #2
0
        public IActionResult AddEbook(SendFileDto dto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var addStatus = bookService.AddFile(dto).Status;

            switch (addStatus)
            {
            case SendFileStatus.FileInvalid:
                return(BadRequest());

            case SendFileStatus.Ok:
                return(NoContent());

            default:
                return(StatusCode(500));
            }
        }
Пример #3
0
        // Wgrywa ebooka na serwer.
        public StatusResult <SendFileStatus> AddFile(SendFileDto dto)
        {
            var file     = dto.File;
            var fileName = file.FileName;

            if (file.Length > 1024 * 1024 * 1024) // 1 GB
            {
                return(new StatusResult <SendFileStatus>
                {
                    Status = SendFileStatus.FileInvalid
                });
            }

            if (file.Length > 0)
            {
                var validExtensions = new [] { ".mobi", ".epub", ".pdf" };
                var isValidFile     = false;
                foreach (var extension in validExtensions)
                {
                    if (file.FileName.EndsWith(extension))
                    {
                        isValidFile = true;
                        break;
                    }
                }
                if (!isValidFile)
                {
                    return(new StatusResult <SendFileStatus>
                    {
                        Status = SendFileStatus.FileInvalid
                    });
                }

                var directoryName    = hostingEnvironment.ContentRootPath + "/private_static/files";
                var isFilenameUnique = !System.IO.Directory.GetFiles(directoryName).Select(x => x.Split(Path.DirectorySeparatorChar).Last()).Any(x => x == fileName);
                if (!isFilenameUnique)
                {
                    for (int i = 1; true; i++)
                    {
                        var newFilename = fileName.Split('.').First() + "_" + i + "." + fileName.Split('.').Last();
                        isFilenameUnique = !System.IO.Directory.GetFiles(directoryName).Select(x => x.Split(Path.DirectorySeparatorChar).Last()).Any(x => x == newFilename);
                        if (isFilenameUnique)
                        {
                            fileName = newFilename;
                            break;
                        }
                    }
                }

                var filePath = directoryName + "/" + fileName;
                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    file.CopyTo(stream);
                }
            }

            var fileEntity = new Models.Public.File
            {
                Name       = "/private_static/files/" + fileName,
                UploadDate = DateTime.Now
            };

            context.Files.Add(fileEntity);
            context.SaveChanges();

            return(new StatusResult <SendFileStatus>
            {
                Status = SendFileStatus.Ok
            });
        }
Пример #4
0
        // Wgrywa na serwer zdjęcie.
        public StatusResult <SendFileStatus> AddPhoto(SendFileDto dto)
        {
            var file     = dto.File;
            var fileName = file.FileName;

            if (file.Length > 1024 * 1024) // 1 MB
            {
                return(new StatusResult <SendFileStatus>
                {
                    Status = SendFileStatus.FileInvalid
                });
            }

            if (file.Length > 0)
            {
                var validExtensions = new [] { ".png", ".jpg" };
                var isValidFile     = false;
                foreach (var extension in validExtensions)
                {
                    if (file.FileName.EndsWith(extension))
                    {
                        isValidFile = true;
                        break;
                    }
                }
                if (!isValidFile)
                {
                    return(new StatusResult <SendFileStatus>
                    {
                        Status = SendFileStatus.FileInvalid
                    });
                }

                var directoryName    = hostingEnvironment.WebRootPath + "/media";
                var isFilenameUnique = !System.IO.Directory.GetFiles(directoryName).Select(x => x.Split(Path.DirectorySeparatorChar).Last()).Any(x => x == fileName);
                if (!isFilenameUnique)
                {
                    for (int i = 1; true; i++)
                    {
                        var newFilename = fileName.Split('.').First() + "_" + i + "." + fileName.Split('.').Last();
                        isFilenameUnique = !System.IO.Directory.GetFiles(directoryName).Select(x => x.Split(Path.DirectorySeparatorChar).Last()).Any(x => x == newFilename);
                        if (isFilenameUnique)
                        {
                            fileName = newFilename;
                            break;
                        }
                    }
                }

                var filePath = directoryName + "/" + fileName;
                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    file.CopyTo(stream);
                }
            }

            var photo = new Photo
            {
                Url = "/media/" + fileName,
            };

            context.Photos.Add(photo);
            context.SaveChanges();

            return(new StatusResult <SendFileStatus>
            {
                Status = SendFileStatus.Ok
            });
        }