コード例 #1
0
        public async Task UploadBigFileInSession_ShouldUploadTheFile_OnlyIfCommitIsCalled()
        {
            long         fileSize           = 20000000;
            MemoryStream fileInMemoryStream = CreateFileInMemoryStream(fileSize);
            var          remoteFileName     = GetUniqueName("UploadSession");

            var boxFileUploadSessionRequest = new BoxFileUploadSessionRequest()
            {
                FolderId = FolderId,
                FileName = remoteFileName,
                FileSize = fileSize
            };

            BoxFileUploadSession boxFileUploadSession = await UserClient.FilesManager.CreateUploadSessionAsync(boxFileUploadSessionRequest);

            BoxSessionEndpoint boxSessionEndpoint = boxFileUploadSession.SessionEndpoints;
            var uploadPartUri = new Uri(boxSessionEndpoint.UploadPart);
            var commitUri     = new Uri(boxSessionEndpoint.Commit);
            var listPartsUri  = new Uri(boxSessionEndpoint.ListParts);
            var partSize      = boxFileUploadSession.PartSize;

            long.TryParse(partSize, out var partSizeLong);
            var numberOfParts = GetNumberOfParts(fileSize, partSizeLong);

            await UploadPartsInSessionAsync(uploadPartUri, numberOfParts, partSizeLong, fileInMemoryStream, fileSize);

            // Assert file is not committed/uploaded to box yet
            Assert.IsFalse(await DoesFileExistInFolder(UserClient, FolderId, remoteFileName));

            var allSessionParts = new List <BoxSessionPartInfo>();

            var boxSessionParts = await UserClient.FilesManager.GetSessionUploadedPartsAsync(listPartsUri, null, null, true);

            foreach (var sessionPart in boxSessionParts.Entries)
            {
                allSessionParts.Add(sessionPart);
            }
            var sessionPartsForCommit = new BoxSessionParts()
            {
                Parts = allSessionParts
            };

            var uploadedFile = await UserClient.FilesManager.CommitSessionAsync(commitUri, Helper.GetSha1Hash(fileInMemoryStream), sessionPartsForCommit);

            // Assert file is committed/uploaded to box after commit
            Assert.IsTrue(await DoesFileExistInFolder(UserClient, FolderId, remoteFileName));

            await DeleteFile(uploadedFile.Id);
        }
コード例 #2
0
        public async Task UploadFileInSession_AbortRequest_FileNotCommmited()
        {
            long         fileSize           = 50000000;
            MemoryStream fileInMemoryStream = GetBigFileInMemoryStream(fileSize);
            string       remoteFileName     = "UploadedUsingSession-" + DateTime.Now.TimeOfDay;
            string       parentFolderId     = "0";

            BoxFileUploadSessionRequest boxFileUploadSessionRequest = new BoxFileUploadSessionRequest()
            {
                FolderId = parentFolderId,
                FileName = remoteFileName,
                FileSize = fileSize
            };
            // Create Upload Session
            BoxFileUploadSession boxFileUploadSession = await _client.FilesManager.CreateUploadSessionAsync(boxFileUploadSessionRequest);

            BoxSessionEndpoint boxSessionEndpoint = boxFileUploadSession.SessionEndpoints;
            Uri    abortUri      = new Uri(boxSessionEndpoint.Abort);
            Uri    uploadPartUri = new Uri(boxSessionEndpoint.UploadPart);
            string partSize      = boxFileUploadSession.PartSize;
            long   partSizeLong;

            long.TryParse(partSize, out partSizeLong);
            int numberOfParts = UploadUsingSessionInternal.GetNumberOfParts(fileSize, partSizeLong);

            // Upload parts in the session
            await UploadPartsInSessionAsync(uploadPartUri, numberOfParts, partSizeLong, fileInMemoryStream, fileSize);

            // Assert file is not committed/uploaded to box yet
            Assert.IsFalse(await DoesFileExistInFolder(parentFolderId, remoteFileName));

            // Abort
            await _client.FilesManager.DeleteUploadSessionAsync(abortUri);

            // Assert file is not committed/uploaded to box
            Assert.IsFalse(await DoesFileExistInFolder(parentFolderId, remoteFileName));
        }
コード例 #3
0
        public async Task UploadFileInSession_CommitSession_FilePresent()
        {
            long         fileSize           = 50000000;
            MemoryStream fileInMemoryStream = GetBigFileInMemoryStream(fileSize);
            string       remoteFileName     = "UploadedUsingSession-" + DateTime.Now.TimeOfDay;
            string       parentFolderId     = "0";

            BoxFileUploadSessionRequest boxFileUploadSessionRequest = new BoxFileUploadSessionRequest()
            {
                FolderId = parentFolderId,
                FileName = remoteFileName,
                FileSize = fileSize
            };
            // Create Upload Session
            BoxFileUploadSession boxFileUploadSession = await _client.FilesManager.CreateUploadSessionAsync(boxFileUploadSessionRequest);

            BoxSessionEndpoint boxSessionEndpoint = boxFileUploadSession.SessionEndpoints;
            Uri    listPartsUri  = new Uri(boxSessionEndpoint.ListParts);
            Uri    uploadPartUri = new Uri(boxSessionEndpoint.UploadPart);
            Uri    commitUri     = new Uri(boxSessionEndpoint.Commit);
            string partSize      = boxFileUploadSession.PartSize;
            long   partSizeLong;

            long.TryParse(partSize, out partSizeLong);
            int numberOfParts = UploadUsingSessionInternal.GetNumberOfParts(fileSize, partSizeLong);

            // Upload parts in the session
            await UploadPartsInSessionAsync(uploadPartUri, numberOfParts, partSizeLong, fileInMemoryStream, fileSize);

            // Assert file is not committed/uploaded to box yet
            Assert.IsFalse(await DoesFileExistInFolder(parentFolderId, remoteFileName));

            // Get upload parts (1 by 1) for Integration testing purposes
            List <BoxSessionPartInfo> allSessionParts = new List <BoxSessionPartInfo>();

            // var boxSessionParts = await _client.FilesManager.GetSessionUploadedPartsAsync(listPartsUri, 0, 2, true);
            var boxSessionParts = await _client.FilesManager.GetSessionUploadedPartsAsync(listPartsUri, null, null, true);

            foreach (var sessionPart in boxSessionParts.Entries)
            {
                allSessionParts.Add(sessionPart);
            }

            /* w/o autopaging
             * var boxSessionParts = await _client.FilesManager.GetSessionUploadedPartsAsync(listPartsUri, 0, 1);
             * allSessionParts.AddRange(boxSessionParts.Entries);
             *
             * while (allSessionParts.Count < boxSessionParts.TotalCount)
             * {
             *  boxSessionParts = await _client.FilesManager.GetSessionUploadedPartsAsync(listPartsUri, allSessionParts.Count, 1);
             *  allSessionParts.AddRange(boxSessionParts.Entries);
             * }
             */

            BoxSessionParts sessionPartsForCommit = new BoxSessionParts()
            {
                Parts = allSessionParts
            };

            // Commit
            await _client.FilesManager.CommitSessionAsync(commitUri, Helper.GetSha1Hash(fileInMemoryStream), sessionPartsForCommit);

            // Assert file is committed/uploaded to box
            Assert.IsTrue(await DoesFileExistInFolder(parentFolderId, remoteFileName));

            // Delete file
            string fileId = await GetFileId(parentFolderId, remoteFileName);

            if (!string.IsNullOrWhiteSpace(fileId))
            {
                await _client.FilesManager.DeleteAsync(fileId);
            }

            // Assert file has been deleted from Box
            Assert.IsFalse(await DoesFileExistInFolder(parentFolderId, remoteFileName));
        }