internal static async Task <IEnumerable <AssetFileMetadata> > ParseAssetFileMetadataAsync(Uri assetFileMetadataUri, IRetryPolicy retryPolicy, CancellationToken cancellationToken) { IList <AssetFileMetadata> assetFileMetadataList = new List <AssetFileMetadata>(); try { using (var assetFileMetadataStream = new MemoryStream()) { CloudBlockBlob blob = new CloudBlockBlob(assetFileMetadataUri); await blob.DownloadToStreamAsync(assetFileMetadataStream, null, new BlobRequestOptions { RetryPolicy = retryPolicy }, null, cancellationToken).ConfigureAwait(false); assetFileMetadataStream.Seek(0, SeekOrigin.Begin); XElement root = XElement.Load(assetFileMetadataStream); foreach (XElement assetFileElement in root.Elements()) { assetFileMetadataList.Add(AssetFileMetadata.Load(assetFileElement)); } } } catch { } return(assetFileMetadataList); }
internal static AssetFileMetadata Load(XElement assetFileElement) { AssetFileMetadata assetFileMetadata = new AssetFileMetadata(); assetFileMetadata.Name = assetFileElement.GetAttributeOrDefault(AssetMetadataParser.NameAttributeName); assetFileMetadata.Size = assetFileElement.GetAttributeAsLongOrDefault(AssetMetadataParser.SizeAttributeName); assetFileMetadata.Duration = assetFileElement.GetAttributeAsTimeSpanOrDefault(AssetMetadataParser.DurationAttributeName); assetFileMetadata.Sources = ParseSources(assetFileElement.Element(AssetMetadataParser.SourcesElementName)); assetFileMetadata.VideoTracks = ParseVideoTracks(assetFileElement.Element(AssetMetadataParser.VideoTracksElementName)); assetFileMetadata.AudioTracks = ParseAudioTracks(assetFileElement.Element(AssetMetadataParser.AudioTracksElementName)); return(assetFileMetadata); }