public Stream GetMultimediaFromDescriptor(ref StorageDescriptor storageDescriptor)
        {
            switch (storageDescriptor.Type)
            {
                case StorageType.IsolatedStorage:
                    return GetMultimediaFromIsolatedStorage(storageDescriptor.FileName);

                case StorageType.CameraRoll:
                    return GetMultimediaFromCameraRoll(storageDescriptor.FileName);

                case StorageType.Unknown:
                    return Stream.Null;

                default:
                    return Stream.Null;
            }
        }
        private string FilePathForDescriptor(StorageDescriptor desc)
        {
            if (desc.Type != StorageType.IsolatedStorage)
            {
                throw new ArgumentException("desc");
            }
            Contract.Requires(CurrentMultimediaFolder != null, "Invalid Profile Folder");

            return Path.Combine(CurrentMultimediaFolder, desc.FileName);
        }
        public string StoreMultimedia(string FileName, Stream data)
        {
            Contract.Requires(!string.IsNullOrWhiteSpace(FileName), "Invalid Filename");

            var fileDescriptor = new StorageDescriptor() { Type = StorageType.IsolatedStorage, FileName = FileName };
            var filePath = FilePathForDescriptor(fileDescriptor);
            UsingIsolatedStorage(store =>
            {
                if (store.FileExists(filePath))
                {
                    throw new InvalidOperationException("Couldn't save Media. File already Exists!");
                }
                else
                {
                    using (var file = store.CreateFile(filePath))
                    {
                        data.Seek(0, SeekOrigin.Begin);
                        data.CopyTo(file);
                        file.Flush();
                    }
                }
            });
            return fileDescriptor.ToString();
        }
 public string StoreImage(string fileNameHint, PhotoResult image)
 {
     StorageDescriptor fileDescriptor;
     var cameraRoll = Library.CameraRoll();
     //On WP8 the image is already saved, check for that...
     //On Devices without Camera Roll fall back to saving anyway
     if (IsWP8 && cameraRoll != null)
     {
         // ... and use the Image in the Camera Roll
         var crImage = cameraRoll.Pictures.OrderByDescending(p => p.Date).First();
         fileDescriptor = new StorageDescriptor() { Type = StorageType.CameraRoll, FileName = crImage.Name };
     }
     else
     {
         var pic = Library.SavePictureToCameraRoll(fileNameHint, image.ChosenPhoto);
         fileDescriptor = new StorageDescriptor() { Type = StorageType.CameraRoll, FileName = pic.Name };
     }
     return fileDescriptor.ToString();
 }