public async Task Write_File()
        {
            string      fileName        = "testFile";
            int         totalBlockCount = 2;
            PartialFile partilFile      = new PartialFile
            {
                FileName = fileName,
                Blocks   = new List <Block>
                {
                    new Block
                    {
                        Data = new byte[] { 1, 2, 3, 4, 5 },
                        Info = new BlockInfo
                        {
                            FileName        = fileName,
                            Index           = 0,
                            TotalBlockCount = totalBlockCount
                        }
                    },

                    new Block
                    {
                        Data = new byte[] { 6, 7, 8, 9 },
                        Info = new BlockInfo
                        {
                            FileName        = fileName,
                            Index           = 1,
                            TotalBlockCount = totalBlockCount
                        }
                    }
                }
            };

            SavePartialFileRequest request = new SavePartialFileRequest
            {
                PartilFile    = partilFile,
                ForceOwerrite = true
            };

            IActionResult actionResult = await _nodeController.SaveFile(request);

            OkObjectResult ok = actionResult as OkObjectResult;

            Assert.NotNull(ok);
            State state = ok.Value as State;

            Assert.NotNull(state);
            Assert.True(state.IsSuccess);

            Assert.True(_nodeService.FileExist(fileName));
            Assert.True(_nodeService.TryGetBlockInfo(fileName, 0, out var info));
            Assert.True(_nodeService.TryGetBlockInfo(fileName, 1, out var info2));
        }
        public async Task <IActionResult> SaveFile(SavePartialFileRequest request)
        {
            if (ModelState.IsValid)
            {
                State state = await _nodeService.TryAddFile(request.PartilFile, request.ForceOwerrite);

                if (state)
                {
                    return(Ok(state));
                }
                else
                {
                    return(StatusCode(500, state));
                }
            }
            return(BadRequest(request.PartilFile.FileName));
        }
Beispiel #3
0
        /// <summary>
        /// Загрузить блоки на узел
        /// </summary>
        /// <param name="hostName">Узел</param>
        /// <param name="blocks">Блоки</param>
        /// <param name="forceOwerrite">Разрешить перезапись</param>
        /// <returns></returns>
        public async Task <HttpResponseMessage> UploadBlocks(string hostName, List <Block> blocks, bool forceOwerrite)
        {
            string action = "SaveFile";

            SavePartialFileRequest request = new SavePartialFileRequest
            {
                ForceOwerrite = forceOwerrite,
                PartilFile    = new PartialFile
                {
                    FileName        = blocks.FirstOrDefault().Info.FileName,
                    Blocks          = blocks,
                    TotalBlockCount = blocks.Count
                }
            };

            JsonContent content = new JsonContent(request);
            string      url     = $"{hostName}/{_controller}/{action}";

            HttpResponseMessage response = await _httpClient.PostAsync(url, content);

            return(response);
        }