Example #1
0
        protected virtual void MapFolderItem2CloudBlob(FolderItem folderItem, ICloudBlob cloudBlob)
        {
            //Copy properties
            cloudBlob.Properties.ContentType     = folderItem.ContentType;
            cloudBlob.Properties.ContentLanguage = folderItem.ContentLanguage;
            cloudBlob.Properties.ContentEncoding = folderItem.ContentEncoding;

            //Save small data
            if (folderItem.SmallData != null)
            {
                cloudBlob.UploadFromStream(new MemoryStream(folderItem.SmallData));
            }

            //Meta
            foreach (
                PropertyInfo propertyInfo in
                folderItem.GetType()
                .GetProperties(BindingFlags.Public | BindingFlags.Instance)
                .Where(x => x.PropertyType == typeof(string) && x.Name != "Item"))
            {
                var value = propertyInfo.GetValue(folderItem, null) as String;
                if (value != null)
                {
                    cloudBlob.Metadata[propertyInfo.Name] = value;
                }
            }
        }
Example #2
0
        protected virtual void MapCloudBlob2FolderItem(CloudBlockBlob cloudBlob, FolderItem folderItem)
        {
            /*
             * try
             * {
             *  cloudBlob.FetchAttributes();
             * }
             * catch (StorageException e)
             * {
             *  throw new AssetStorageException(e.Message, (AssetErrorCode)(int)e.RequestInformation.ExtendedErrorInformation.GetHashCode(), e); // TODO: error might not be correct here
             * }
             * */

            //Copy properties

            folderItem.FolderItemId = cloudBlob.Uri.LocalPath.Substring(1);
            //folderItem.FolderItemId = String.Format("{0}{1}{2}{3}", cloudBlob.Container.Name, CurrentCloudBlobClient.DefaultDelimiter, cloudBlob.Parent != null ? cloudBlob.Parent.Prefix : "", cloudBlob.Name);
            folderItem.FolderId = String.Format("{0}{1}{2}", cloudBlob.Container.Name,
                                                this.CurrentCloudBlobClient.DefaultDelimiter,
                                                cloudBlob.Parent != null ? cloudBlob.Parent.Prefix : "");
            folderItem.Name =
                folderItem.FolderItemId.Substring(
                    folderItem.FolderItemId.LastIndexOf(this.CurrentCloudBlobClient.DefaultDelimiter) + 1);
            folderItem.ContentType     = cloudBlob.Properties.ContentType;
            folderItem.ContentLanguage = cloudBlob.Properties.ContentLanguage;
            folderItem.ContentEncoding = cloudBlob.Properties.ContentEncoding;
            folderItem.LastModified    = cloudBlob.Properties.LastModified.Value.DateTime;
            folderItem.ContentLength   = cloudBlob.Properties.Length;

            //Read small data
            //var memoryStream = new MemoryStream();
            //cloudBlob.DownloadToStream(memoryStream);
            //folderItem.SmallData = memoryStream.ToArray();

            //Meta
            foreach (string metaKey in cloudBlob.Metadata.Keys)
            {
                PropertyInfo propertyInfo = folderItem.GetType().GetProperty(metaKey);
                if (propertyInfo != null)
                {
                    propertyInfo.SetValue(folderItem, cloudBlob.Metadata[metaKey], null);
                }
            }
        }