/// <summary> /// Verify that a file will be accepted by Box before you send all the bytes over the wire. /// </summary> /// <remarks> /// Preflight checks verify all permissions as if the file was actually uploaded including: /// Folder upload permission /// File name collisions /// file size caps /// folder and file name restrictions* /// folder and account storage quota /// </remarks> /// <param name="preflightCheckRequest">BoxPreflightCheckRequest object.</param> /// <returns>Returns a BoxPreflightCheck object if successful, otherwise an error is thrown when any of the preflight conditions are not met.</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); response.ResponseObject.Success = response.Status == ResponseStatus.Success; 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; }