public virtual ValueResult <ChunkStatus> Post(HttpRequest request)
        {
            var chunkResult = _chunkBinder.Parse(request.Form);

            if (!chunkResult.Sucess)
            {
                return(ValueResult <ChunkStatus> .Failed(chunkResult.Errors));
            }

            if (request.Files.Count != 0)
            {
                return(ValueResult <ChunkStatus> .Failed(new InvalidFileApplicationError("No file in the http request")));
            }
            var file = request.Files[0];

            var chunkUniqueNameTemp = _chunkNameGenerator.Generate(chunkResult.Result);

            _fileManager.Copy(file.InputStream, chunkUniqueNameTemp);

            //Rename when file copy is done
            var chunkUniqueName = _chunkNameGenerator.Generate(chunkResult.Result);

            _fileManager.Rename(chunkUniqueNameTemp, chunkUniqueName);

            if (IsFileUploadComplete(chunkResult.Result))
            {
                MergeFile(chunkResult.Result);
                return(ValueResult <ChunkStatus> .Successed(ChunkStatus.Last));
            }

            return(ValueResult <ChunkStatus> .Successed(ChunkStatus.Chunk));
        }