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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 8
0
        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));
        }