示例#1
0
        public Task SpaceUploadDataStreamAsync(ApiSession apiSession, SpaceUploadDataStreamRequest spaceUploadFileRequest, CancellationToken cancellationToken)
        {
            if (apiSession == null)
            {
                throw new ArgumentNullException(nameof(apiSession));
            }

            if (spaceUploadFileRequest == null)
            {
                throw new ArgumentNullException(nameof(spaceUploadFileRequest));
            }

            return(Wrapped(async(token) =>
            {
                Action <FileTransferProgressEventArgs> onSendProgress = (data) =>
                {
                    OnDataUploadProgress?.Invoke(this, data);
                };
                var sendStreamData = new SendFileStreamData(
                    spaceUploadFileRequest.DataStream,
                    spaceUploadFileRequest.FileName,
                    spaceUploadFileRequest.FileSize);
                var apiResult =
                    spaceUploadFileRequest.OverwriteExistingFile ?
                    await _lowLevelApiClient.WebFilesPutFileStreamAsync(apiSession, spaceUploadFileRequest.ServerFolder, sendStreamData, onSendProgress, token) :
                    await _lowLevelApiClient.WebFilesPostFileStreamAsync(apiSession, spaceUploadFileRequest.ServerFolder, sendStreamData, onSendProgress, token);
                FailIfError(apiResult);
                return Task.FromResult(0);
            }, cancellationToken, OperationType.FileTransfer));
        }
示例#2
0
        public Task <ApiResult <NoContentResult> > WebFilesPostFileStreamAsync(ApiSession apiSession, string serverFolder, SendFileStreamData sendFileStreamData, Action <FileTransferProgressEventArgs> onSendProgress, CancellationToken cancellationToken)
        {
            if (apiSession == null)
            {
                throw new ArgumentNullException(nameof(apiSession));
            }

            if (sendFileStreamData == null)
            {
                throw new ArgumentNullException(nameof(sendFileStreamData));
            }

            var spaceName = apiSession.SpaceName;
            var url       = UrlHelper.JoinUrl("space", spaceName, "files", serverFolder);

            return(apiClient.PostFileStreamAsync <NoContentResult>(url, sendFileStreamData, null, apiSession.ToHeadersCollection(), onSendProgress, cancellationToken));
        }