Encapsulates metadata about a stored file
 private bool IsMetadataValid(MobileServiceFileMetadata metadata)
 {
     return inputFile.Id == metadata.Id &&
     string.Compare(inputFile.Name, metadata.FileName) == 0 &&
     string.Compare(inputFile.ParentId, metadata.ParentDataItemId) == 0 &&
     string.Compare(inputFile.TableName, metadata.ParentDataItemType) == 0 &&
     string.Compare(inputFile.ContentMD5, metadata.ContentMD5) == 0 &&
     inputFile.Length == metadata.Length;
 }
        /// <summary>
        /// Convert a <see cref="MobileServiceFileMetadata"/> into a <see cref="MobileServiceFile"/>
        /// </summary>
        /// <param name="metadata">The <see cref="MobileServiceFileMetadata"/> instance</param>
        /// <returns>An equivalent <see cref="MobileServiceFile"/> instance</returns>
        internal static MobileServiceFile FromMetadata(MobileServiceFileMetadata metadata)
        {
            var file = new MobileServiceFile(metadata.FileId, metadata.ParentDataItemType, metadata.ParentDataItemId);

            file.ContentMD5 = metadata.ContentMD5;
            file.LastModified = metadata.LastModified;
            file.Length = metadata.Length;
            file.Metadata = metadata.ToDictionary();
            return file;
        }
        public Task CreateOrUpdateAsync(MobileServiceFileMetadata metadata)
        {
            if (this.metadataCollection.Any(m => string.Compare(m.FileId, metadata.FileId) == 0))
            {
                this.metadataCollection.Remove(metadata);
            }

            this.metadataCollection.Add(metadata);

            return Task.FromResult(0);
        }
Example #4
0
        public Task CreateOrUpdateAsync(MobileServiceFileMetadata metadata)
        {
            if (this.metadataCollection.Any(m => string.Compare(m.FileId, metadata.FileId) == 0))
            {
                this.metadataCollection.Remove(metadata);
            }

            this.metadataCollection.Add(metadata);

            return(Task.FromResult(0));
        }
        public async Task DeleteFileAsync(MobileServiceFileMetadata metadata)
        {
            string route = string.Format("/tables/{0}/{1}/MobileServiceFiles/{2}", metadata.ParentDataItemType, metadata.ParentDataItemId, metadata.FileName);

            var parameters = new Dictionary<string, string>();
            if (metadata.FileStoreUri != null)
            {
                parameters.Add("x-zumo-filestoreuri", metadata.FileStoreUri);
            }

            await this.client.InvokeApiAsync(route, HttpMethod.Delete, parameters);
        }
        public async Task UploadFileAsync(MobileServiceFileMetadata metadata, IMobileServiceFileDataSource dataSource, StorageToken storageToken)
        {
            CloudBlockBlob blob = GetBlobReference(storageToken, metadata.FileName);

            using (var stream = await dataSource.GetStream())
            {
                await blob.UploadFromStreamAsync(stream);

                metadata.LastModified = blob.Properties.LastModified;
                metadata.FileStoreUri = blob.Uri.LocalPath;

                stream.Position = 0;
                metadata.ContentMD5 = GetMD5Hash(stream);
            }
        }
        public async Task UploadFileAsync(MobileServiceFileMetadata metadata, IMobileServiceFileDataSource dataSource)
        {
            if (metadata == null)
            {
                throw new ArgumentNullException("metadata");
            }

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

            StorageToken token = await GetStorageToken(this.client, MobileServiceFile.FromMetadata(metadata), StoragePermissions.Write);

            await this.storageProvider.UploadFileAsync(metadata, dataSource, token);
        }
        public Task DeleteAsync(MobileServiceFileMetadata metadata)
        {
            this.metadataCollection.Remove(metadata);

            return Task.FromResult(0);
        }
 private async Task<StorageToken> GetStorageToken(IMobileServiceClient client, MobileServiceFileMetadata metadata, StoragePermissions permissions)
 {
     return await GetStorageToken(client, MobileServiceFile.FromMetadata(metadata), permissions);
 }
 public async Task<IMobileServiceFileDataSource> GetDataSource(MobileServiceFileMetadata metadata)
 {
     var stream = await localStorage.GetAsync(MobileServiceFile.FromMetadata(metadata));
     return new StreamMobileServiceFileDataSource(stream);
 }
        public async Task CreateOrUpdateAsync(MobileServiceFileMetadata metadata)
        {
            JObject jsonObject = JObject.FromObject(metadata);

            await this.store.UpsertAsync(FileMetadataTableName, new[] { jsonObject }, true);
        }
Example #12
0
        public Task DeleteAsync(MobileServiceFileMetadata metadata)
        {
            this.metadataCollection.Remove(metadata);

            return(Task.FromResult(0));
        }
Example #13
0
        public Task <MobileServiceFileMetadata> GetFileMetadataAsync(string fileId)
        {
            MobileServiceFileMetadata metadata = this.metadataCollection.FirstOrDefault(m => string.Compare(m.FileId, fileId) == 0);

            return(Task.FromResult(metadata));
        }
        public async Task AddFileAsync(MobileServiceFile file)
        {
            var metadata = new MobileServiceFileMetadata
            {
                FileId = file.Id,
                FileName = file.Name,
                Length = file.Length,
                Location = FileLocation.Local,
                ContentMD5 = file.ContentMD5,
                ParentDataItemType = file.TableName,
                ParentDataItemId = file.ParentId,
                LastModified = DateTimeOffset.Now
            };

            await metadataStore.CreateOrUpdateAsync(metadata);

            var operation = new CreateMobileServiceFileOperation(Guid.NewGuid().ToString(), file.Id);

            await QueueOperationAsync(operation);

            NotifyFileOperationCompletion(file, FileOperationKind.Create, FileOperationSource.Local);
        }
 public async Task CreateOrUpdateAsync(MobileServiceFileMetadata metadata)
 {
     JObject jsonObject = JObject.FromObject(metadata);
     await this.store.UpsertAsync(FileMetadataTableName, new[] { jsonObject }, true);
 }
 public async Task DeleteAsync(MobileServiceFileMetadata metadata)
 {
     await this.store.DeleteAsync(FileMetadataTableName, new[] { metadata.Id });
 }
 public Task<IMobileServiceFileDataSource> GetDataSource(MobileServiceFileMetadata metadata)
 {
     IPlatform platform = DependencyService.Get<IPlatform>();
     return platform.GetFileDataSource(metadata);
 }
 public async Task DeleteAsync(MobileServiceFileMetadata metadata)
 {
     await this.store.DeleteAsync(FileMetadataTableName, new[] { metadata.Id });
 }
 public async Task<IMobileServiceFileDataSource> GetDataSource(MobileServiceFileMetadata metadata)
 {
     return new StringFileDataSource(this.sources[metadata.FileName]);
 }