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; }
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; }
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); }
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); } }
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 }
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; }
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; }
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; }
public ChunkedUpload AppendChunkedUpload(ChunkedUpload upload, byte[] fileData) { var request = _requestHelper.CreateAppendChunkedUploadRequest(upload, fileData); var response = _restClientContent.Execute<ChunkedUpload>(request); return response.Data; }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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; }