/// <summary> /// get an upload url for use with one Thread. /// </summary> /// <param name="bucketId"></param> /// <param name="cancelToken"></param> /// <returns></returns> public async Task <B2UploadUrl> GetUploadUrl(string bucketId = "", CancellationToken cancelToken = default(CancellationToken)) { var operationalBucketId = Utilities.DetermineBucketId(_options, bucketId); // send the request. var uploadUrlRequest = FileUploadRequestGenerators.GetUploadUrl(_options, operationalBucketId); var uploadUrlResponse = await _client.SendAsync(uploadUrlRequest, cancelToken); // parse response and return it. var uploadUrl = await ResponseParser.ParseResponse <B2UploadUrl>(uploadUrlResponse); // Set the upload auth token _options.UploadAuthorizationToken = uploadUrl.AuthorizationToken; return(uploadUrl); }
/// <summary> /// DEPRECATED: This method has been deprecated in favor of the Upload that takes an UploadUrl parameter. /// The other Upload method is the preferred, and more efficient way, of uploading to B2. /// </summary> /// <param name="fileData"></param> /// <param name="fileName"></param> /// <param name="bucketId"></param> /// <param name="cancelToken"></param> /// <returns></returns> public async Task <B2File> Upload(byte[] fileData, string fileName, string bucketId = "", Dictionary <string, string> fileInfo = null, CancellationToken cancelToken = default(CancellationToken)) { var operationalBucketId = Utilities.DetermineBucketId(_options, bucketId); // Get the upload url for this file var uploadUrlRequest = FileUploadRequestGenerators.GetUploadUrl(_options, operationalBucketId); var uploadUrlResponse = _client.SendAsync(uploadUrlRequest, cancelToken).Result; var uploadUrlData = await uploadUrlResponse.Content.ReadAsStringAsync(); var uploadUrlObject = JsonConvert.DeserializeObject <B2UploadUrl>(uploadUrlData); // Set the upload auth token _options.UploadAuthorizationToken = uploadUrlObject.AuthorizationToken; // Now we can upload the file var requestMessage = FileUploadRequestGenerators.Upload(_options, uploadUrlObject.UploadUrl, fileData, fileName, fileInfo); var response = await _client.SendAsync(requestMessage, cancelToken); return(await ResponseParser.ParseResponse <B2File>(response, _api)); }