public Task PutStreamAsync(Stream stream, MetadataChange metadata = null, IProgress <IUploadState> progress = null, CancellationToken cancellationToken = default(CancellationToken), PauseToken pauseToken = default(PauseToken)) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } using (var ms = new MemoryStream()) { stream.CopyTo(ms); return(PutBytesAsync(ms.ToArray(), metadata, progress, cancellationToken, pauseToken)); } }
public async Task <IStorageMetadata> UpdateMetadataAsync(MetadataChange metadata) { if (metadata == null) { throw new ArgumentNullException(nameof(metadata)); } try { var result = await _storageReference.UpdateMetadataAsync(metadata.ToStorageMetadata()).ConfigureAwait(false); return(new StorageMetadataWrapper(result)); } catch (NSErrorException e) { throw ExceptionMapper.Map(e); } }
public static StorageMetadata ToStorageMetadata(this MetadataChange self) { if (self == null) { return(null); } var builder = new StorageMetadata.Builder(); if (self.IsCacheControlChanged) { builder.SetCacheControl(self.CacheControl); } if (self.IsContentDispositionChanged) { builder.SetContentDisposition(self.ContentDisposition); } if (self.IsContentEncodingChanged) { builder.SetContentEncoding(self.ContentEncoding); } if (self.IsContentLanguageChanged) { builder.SetContentLanguage(self.ContentLanguage); } if (self.IsContentTypeChanged) { builder.SetContentType(self.ContentType); } if (self.CustomMetadata != null) { foreach (var(key, value) in self.CustomMetadata) { builder.SetCustomMetadata(key, value); } } return(builder.Build()); }
public Task <IStorageMetadata> UpdateMetadataAsync(MetadataChange metadata) { var tcs = new TaskCompletionSource <IStorageMetadata>(); _storageReference.UpdateMetadata(metadata.ToStorageMetadata()).AddOnCompleteListener(new OnCompleteHandlerListener(task => { if (task.IsSuccessful) { var result = task.Result.JavaCast <StorageMetadata>(); tcs.SetResult(new StorageMetadataWrapper(result !)); } else { tcs.SetException(ExceptionMapper.Map(task.Exception)); } })); return(tcs.Task); }
public static StorageMetadata ToStorageMetadata(this MetadataChange self) { if (self == null) { return(null); } var storageMetadata = new StorageMetadata(); if (self.IsCacheControlChanged) { storageMetadata.CacheControl = self.CacheControl; } if (self.IsContentDispositionChanged) { storageMetadata.ContentDisposition = self.ContentDisposition; } if (self.IsContentEncodingChanged) { storageMetadata.ContentEncoding = self.ContentEncoding; } if (self.IsContentLanguageChanged) { storageMetadata.ContentLanguage = self.ContentLanguage; } if (self.IsContentTypeChanged) { storageMetadata.ContentType = self.ContentType; } if (self.CustomMetadata != null) { storageMetadata.CustomMetadata = new NSDictionary <NSString, NSString>(self.CustomMetadata.Keys.Select(s => new NSString(s)).ToArray(), self.CustomMetadata.Values.Select(s => new NSString(s)).ToArray()); } return(storageMetadata); }
public Task PutBytesAsync(byte[] bytes, MetadataChange metadata = null, IProgress <IUploadState> progress = null, CancellationToken cancellationToken = default(CancellationToken), PauseToken pauseToken = default(PauseToken)) { if (bytes == null) { throw new ArgumentNullException(nameof(bytes)); } UploadTask uploadTask; if (metadata != null) { uploadTask = _storageReference.PutBytes(bytes, metadata.ToStorageMetadata()); } else { uploadTask = _storageReference.PutBytes(bytes); } return(Upload(uploadTask, progress, cancellationToken, pauseToken)); }
public Task PutBytesAsync(byte[] bytes, MetadataChange metadata = null, IProgress <IUploadState> progress = null, CancellationToken cancellationToken = default(CancellationToken), PauseToken pauseToken = default(PauseToken)) { if (bytes == null) { throw new ArgumentNullException(nameof(bytes)); } var data = NSData.FromArray(bytes); var tcs = new TaskCompletionSource <bool>(); var uploadTask = _storageReference.PutData(data, metadata?.ToStorageMetadata(), (storageMetadata, error) => { if (error != null) { tcs.SetException(ExceptionMapper.Map(new NSErrorException(error))); } else { tcs.SetResult(true); } }); if (progress != null) { uploadTask.ObserveStatus(StorageTaskStatus.Progress, snapshot => progress.Report(new StorageTaskSnapshotWrapper(snapshot))); } if (cancellationToken != default(CancellationToken)) { cancellationToken.Register(uploadTask.Cancel); } if (pauseToken != default(PauseToken)) { pauseToken.SetStorageTask(new StorageUploadTaskWrapper(uploadTask)); } return(tcs.Task); }
public Task PutFileAsync(string filePath, MetadataChange metadata = null, IProgress <IUploadState> progress = null, CancellationToken cancellationToken = default(CancellationToken), PauseToken pauseToken = default(PauseToken)) { if (filePath == null) { throw new ArgumentNullException(nameof(filePath)); } var uri = Android.Net.Uri.FromFile(new Java.IO.File(filePath)); UploadTask uploadTask; if (metadata != null) { uploadTask = _storageReference.PutFile(uri, metadata.ToStorageMetadata()); } else { uploadTask = _storageReference.PutFile(uri); } return(Upload(uploadTask, progress, cancellationToken, pauseToken)); }