Exemplo n.º 1
0
        public RestRequest CreateChunkedUploadRequest(ChunkedUpload upload, byte[] fileData)
        {
            var request = new RestRequest("{version}/chunked_upload", HttpMethod.Put);
            request.AddParameter("version", _version, ParameterType.UrlSegment);
            if (upload.HasUploadId)
            {
                request.AddParameter("upload_id", upload.UploadId, ParameterType.UrlSegment);
                request.AddParameter("offset", upload.Offset, ParameterType.UrlSegment);
            }
            request.AddParameter("file", fileData, ParameterType.RequestBody);

            return request;
        }
Exemplo n.º 2
0
        public RestRequest CreateCommitChunkedUploadRequest(ChunkedUpload upload, string path, string root, bool overwrite, string parent_revision)
        {
            var request = new RestRequest("{version}/commit_chunked_upload/{root}{path}", HttpMethod.Post);
            request.AddParameter("version", _version, ParameterType.UrlSegment);
            request.AddParameter("path", path, ParameterType.UrlSegment);
            request.AddParameter("root", root, ParameterType.UrlSegment);

            request.AddParameter("overwrite", overwrite);
            request.AddParameter("upload_id", upload.UploadId);
            if (!String.IsNullOrEmpty(parent_revision))
            {
                request.AddParameter("parent_rev", parent_revision);
            }

            return request;
        }
Exemplo n.º 3
0
        async private Task<MetaData> OnChunkSuccess(ChunkedUpload chunkedUpload)
        {
            _chunksCompleted++;
            _lastChunkUploaded = chunkedUpload;
            UpdateProgress(chunkedUpload.Offset, chunkedUpload.UploadId);
            var offset = chunkedUpload.Offset;
            var nextChunk = _fileSize.GetValueOrDefault(long.MaxValue) > offset
                                ? _chunkNeeded.Invoke(offset)
                                : new byte[0];

            var chunkLength = nextChunk.GetLength(0);
            if (chunkLength > 0)
            {
                var chunk = await _client.ChunkedUploadAsync(chunkedUpload, nextChunk);
                await OnChunkSuccess(chunk);
            }

            return await _client.CommitChunkedUploadAsync(chunkedUpload, _path, _overwrite, _parentRevision);
        }
Exemplo n.º 4
0
        private void OnChunkSuccess(ChunkedUpload chunkedUpload)
        {
            _chunksCompleted++;
            _lastChunkUploaded = chunkedUpload;
            UpdateProgress(chunkedUpload.Offset, chunkedUpload.UploadId);
            var offset = chunkedUpload.Offset;
            var nextChunk = _fileSize.GetValueOrDefault(long.MaxValue) > offset
                                ? _chunkNeeded.Invoke(offset)
                                : new byte[0];

            var chunkLength = nextChunk.GetLength(0);
            if (chunkLength > 0)
            {
                _client.AppendChunkedUploadAsync(chunkedUpload, nextChunk, OnChunkSuccess, OnChunkedUploadFailure);
            }
            else
            {
                _client.CommitChunkedUploadAsync(chunkedUpload, _path, _success, _failure, _overwrite, _parentRevision);
            }
        }
Exemplo n.º 5
0
        public ChunkedUploadHelper(DropNetClient client, Func<long, byte[]> chunkNeeded, string path, Action<ChunkedUploadProgress> progress, bool overwrite, string parentRevision, long? fileSize, long? maxRetries)
        {
            if (client == null)
            {
                throw new ArgumentNullException("client");
            }

            if (chunkNeeded == null)
            {
                throw new ArgumentNullException("chunkNeeded");
            }

            _client = client;
            _chunkNeeded = chunkNeeded;
            _path = path;
            _progress = progress;
            _overwrite = overwrite;
            _parentRevision = parentRevision;
            _fileSize = fileSize;
            _maxRetries = maxRetries;
            _lastChunkUploaded = new ChunkedUpload(); // initial chunk
        }
Exemplo n.º 6
0
        public RestRequest CreateAppendChunkedUploadRequest(ChunkedUpload upload, byte[] fileData)
        {
            var request = new RestRequest(Method.PUT);
            request.Resource = "{version}/chunked_upload?upload_id={upload_id}&offset={offset}&oauth_consumer_key={oauth_consumer_key}&oauth_nonce={oauth_nonce}";
            request.Resource += "&oauth_token={oauth_token}&oauth_timestamp={oauth_timestamp}";
            request.Resource += "&oauth_signature={oauth_signature}&oauth_signature_method={oauth_signature_method}&oauth_version={oauth_version}";
            request.AddParameter("version", _version, ParameterType.UrlSegment);
            request.AddParameter("upload_id", upload.UploadId, ParameterType.UrlSegment);
            request.AddParameter("offset", upload.Offset, ParameterType.UrlSegment);

            request.AddParameter("file", fileData, ParameterType.RequestBody);

            return request;
        }
Exemplo n.º 7
0
        public RestRequest CreateCommitChunkedUploadRequest(ChunkedUpload upload, string path, string root)
        {
            var request = new RestRequest(Method.POST);
            request.Resource = "{version}/commit_chunked_upload/{root}{path}";
            request.AddParameter("version", _version, ParameterType.UrlSegment);
            request.AddParameter("path", path, ParameterType.UrlSegment);
            request.AddParameter("root", root, ParameterType.UrlSegment);

            request.AddParameter("overwrite", true);
            request.AddParameter("upload_id", upload.UploadId);

            return request;
        }
Exemplo n.º 8
0
 public MetaData CommitChunkedUpload(ChunkedUpload upload, string path, bool overwrite = true, string parentRevision = null)
 {
     var request = _requestHelper.CreateCommitChunkedUploadRequest(upload, path, Root, overwrite, parentRevision);
     var response = _restClientContent.Execute<MetaData>(request);
     return response.Data;
 }
Exemplo n.º 9
0
 public ChunkedUpload AppendChunkedUpload(ChunkedUpload upload, byte[] fileData)
 {
     var request = _requestHelper.CreateAppendChunkedUploadRequest(upload, fileData);
     var response = _restClientContent.Execute<ChunkedUpload>(request);
     return response.Data;
 }
Exemplo n.º 10
0
        /// <summary>
        /// Commit a completed chunked upload
        /// </summary>
        /// <param name="upload">A ChunkedUpload object received from the StartChunkedUpload method</param>
        /// <param name="path">The full path of the file to upload to</param>
        /// <param name="success">The callback Action to perform on completion</param>
        /// <param name="failure">The callback Action to perform on exception</param>
        /// <param name="overwrite">Specify wether the file upload should replace an existing file</param>
        /// <param name="parentRevision">The revision of the file you're editing</param>
        public void CommitChunkedUploadAsync(ChunkedUpload upload, string path, Action<MetaData> success, Action<DropboxException> failure, bool overwrite = true, string parentRevision = null)
        {
            var request = _requestHelper.CreateCommitChunkedUploadRequest(upload, path, Root, overwrite, parentRevision);

            ExecuteAsync(ApiType.Content, request, success, failure);
        }
Exemplo n.º 11
0
        /// <summary>
        /// Add data to a chunked upload given a byte array.
        /// </summary>
        /// <param name="upload">A ChunkedUpload object received from the StartChunkedUpload method</param>
        /// <param name="fileData">The file data</param>
        /// <param name="success">The callback Action to perform on completion</param>
        /// <param name="failure">The callback Action to perform on exception</param>
        public void  AppendChunkedUploadAsync(ChunkedUpload upload, byte[] fileData, Action<ChunkedUpload> success, Action<DropboxException> failure)
        {
            var request = _requestHelper.CreateAppendChunkedUploadRequest(upload, fileData);

            ExecuteAsync(ApiType.Content, request, success, failure);
        }
Exemplo n.º 12
0
 /// <summary>
 /// Commit a completed chunked upload
 /// </summary>
 /// <param name="upload">A ChunkedUpload object received from the StartChunkedUpload method</param>
 /// <param name="path">The full path of the file to upload to</param>
 /// <param name="overwrite">Specify wether the file upload should replace an existing file</param>
 /// <param name="parentRevision">The revision of the file you're editing</param>
 async public Task<MetaData> CommitChunkedUploadAsync(ChunkedUpload upload, string path, bool overwrite = true, string parentRevision = null)
 {
     var request = _requestHelper.CreateCommitChunkedUploadRequest(upload, path, client.Root, overwrite, parentRevision);
     return await Execute<MetaData>(ApiType.Content, request);
 }
Exemplo n.º 13
0
 /// <summary>
 /// Add data to a chunked upload given a byte array.
 /// </summary>
 /// <param name="upload">A ChunkedUpload object received from the StartChunkedUpload method</param>
 /// <param name="fileData">The file data</param>
 async public Task<ChunkedUpload> ChunkedUploadAsync(ChunkedUpload upload, byte[] fileData)
 {
     var request = _requestHelper.CreateChunkedUploadRequest(upload, fileData);
     return await Execute<ChunkedUpload>(ApiType.Content, request);
 }
Exemplo n.º 14
0
 /// <summary>
 /// Commit a completed chunked upload
 /// </summary>
 /// <param name="upload">A ChunkedUpload object received from the StartChunkedUpload method</param>
 /// <param name="path">The full path of the file to upload to</param>
 /// <returns>A object representing the chunked upload on success</returns>
 public MetaData CommitChunkedUpload(ChunkedUpload upload, string path)
 {
     var request = _requestHelper.CreateCommitChunkedUploadRequest(upload, path, Root);
     var response = _restClientContent.Execute<MetaData>(request);
     return response.Data;
 }