Exemple #1
0
        public async Task PreflightCheckNewVersion_ForValidNewFileVersion_ShouldReturnSuccess()
        {
            var uploadedFile = await CreateSmallFile(FolderId);

            var request = new BoxPreflightCheckRequest
            {
                Id   = uploadedFile.Id,
                Name = uploadedFile.Name,
                Size = 5000000
            };

            var preflightCheck = await UserClient.FilesManager.PreflightCheckNewVersion(uploadedFile.Id, request);

            Assert.IsTrue(preflightCheck.Success);
        }
Exemple #2
0
        public async Task PreflightCheck_ForValidFile_ShouldReturnSuccess()
        {
            var request = new BoxPreflightCheckRequest
            {
                Name   = GetUniqueName("file"),
                Parent = new BoxRequestEntity()
                {
                    Id = FolderId
                }
            };

            var preflightCheck = await UserClient.FilesManager.PreflightCheck(request);

            Assert.IsTrue(preflightCheck.Success);
        }
Exemple #3
0
        /// <summary>
        /// Verify that a file will be accepted by Box before you send all the bytes over the wire.
        /// </summary>
        /// <param name="preflightCheckRequest"></param>
        /// <returns></returns>
        public async Task <BoxPreflightCheck> PreflightCheck(BoxPreflightCheckRequest preflightCheckRequest)
        {
            preflightCheckRequest.ThrowIfNull("preflightCheckRequest")
            .Name.ThrowIfNullOrWhiteSpace("preflightCheckRequest.Name");
            preflightCheckRequest.Parent.ThrowIfNull("preflightCheckRequest.Parent")
            .Id.ThrowIfNullOrWhiteSpace("preflightCheckRequest.Parent.Id");

            BoxRequest request = new BoxRequest(_config.FilesPreflightCheckUri)
                                 .Method(RequestMethod.Options);

            request.Payload     = _converter.Serialize(preflightCheckRequest);
            request.ContentType = Constants.RequestParameters.ContentTypeJson;

            IBoxResponse <BoxPreflightCheck> response = await ToResponseAsync <BoxPreflightCheck>(request).ConfigureAwait(false);

            return(response.ResponseObject);
        }
        /// <summary>
        /// Verify that a new version of a file will be accepted by Box before you send all the bytes over the wire.
        /// </summary>
        /// <param name="fileId"></param>
        /// <param name="preflightCheckRequest"></param>
        /// <returns></returns>
        public async Task <BoxPreflightCheck> PreflightCheckNewVersion(string fileId, BoxPreflightCheckRequest preflightCheckRequest)
        {
            if (preflightCheckRequest.Size <= 0)
            {
                throw new ArgumentException("Size in bytes must be greater than zero (otherwise preflight check for new version would always succeed)", "sizeinBytes");
            }

            BoxRequest request = new BoxRequest(new Uri(string.Format(Constants.FilesPreflightCheckNewVersionString, fileId)))
                                 .Method(RequestMethod.Options);

            request.Payload     = _converter.Serialize(preflightCheckRequest);
            request.ContentType = Constants.RequestParameters.ContentTypeJson;

            IBoxResponse <BoxPreflightCheck> response = await ToResponseAsync <BoxPreflightCheck>(request).ConfigureAwait(false);

            response.ResponseObject.Success = response.Status == ResponseStatus.Success;

            return(response.ResponseObject);
        }
        protected async Task <BoxFile> UploadFile(string path, string parentId = "", string fileName = "",
                                                  string fileId = "", bool isNewVersion = false, bool idOnly = false)
        {
            var boxClient = base.ConfigureBoxClient(oneCallAsUserId: this._asUser.Value(), oneCallWithToken: base._oneUseToken.Value());

            path = GeneralUtilities.TranslatePath(path);

            var file = new FileInfo(path);

            if (string.IsNullOrEmpty(fileName))
            {
                fileName = file.Name;
            }
            if (string.IsNullOrEmpty(parentId))
            {
                parentId = "0";
            }

            if (file.Length >= MINIUMUM_CHUNKED_UPLOAD_FILE_SIZE && isNewVersion)
            {
                return(await this.ChunkedUpload(path, fileName, parentId, file.Length, boxClient, fileId, true, idOnly : idOnly));
            }
            else if (file.Length >= MINIUMUM_CHUNKED_UPLOAD_FILE_SIZE)
            {
                return(await this.ChunkedUpload(path, fileName, parentId, file.Length, boxClient, idOnly : idOnly));
            }
            else
            {
                using (var fileStream = File.Open(path, FileMode.Open))
                {
                    var fileRequest = this.ConfigureFileRequest(parentId: parentId, fileName: fileName);
                    if (isNewVersion)
                    {
                        if (string.IsNullOrEmpty(fileId))
                        {
                            throw new Exception("A file ID is required for this command.");
                        }
                        var preflightCheckRequest = new BoxPreflightCheckRequest()
                        {
                            Name   = fileName,
                            Size   = file.Length,
                            Parent = new BoxItemRequest()
                            {
                                Id = parentId
                            }
                        };
                        var preflight = await boxClient.FilesManager.PreflightCheckNewVersion(fileId, preflightCheckRequest);

                        if (preflight.Success)
                        {
                            using (var sha1 = SHA1.Create())
                            {
                                var checksum = sha1.ComputeHash(fileStream);
                                return(await boxClient.FilesManager.UploadNewVersionAsync(fileName, fileId, fileStream, uploadUri : preflight.UploadUri, contentMD5 : checksum));
                            }
                        }
                        else
                        {
                            throw new Exception("Preflight check failed.");
                        }
                    }
                    else
                    {
                        var preflightCheckRequest = new BoxPreflightCheckRequest()
                        {
                            Name   = fileName,
                            Size   = file.Length,
                            Parent = new BoxItemRequest()
                            {
                                Id = parentId
                            }
                        };
                        var preflight = await boxClient.FilesManager.PreflightCheck(preflightCheckRequest);

                        if (preflight.Success)
                        {
                            using (var sha1 = SHA1.Create())
                            {
                                var checksum = sha1.ComputeHash(fileStream);
                                return(await boxClient.FilesManager.UploadAsync(fileRequest, fileStream, uploadUri : preflight.UploadUri, contentMD5 : checksum));
                            }
                        }
                        else
                        {
                            throw new Exception("Preflight check failed.");
                        }
                    }
                }
            }
        }