Unity.Platform.IPhone.IPhoneMedia.GetMetadataFromUrl C# (CSharp) Method

GetMetadataFromUrl() private method

private GetMetadataFromUrl ( NSUrl nsUrl ) : Unity.Core.Media.MediaMetadata
nsUrl NSUrl
return Unity.Core.Media.MediaMetadata
		private MediaMetadata GetMetadataFromUrl(NSUrl nsUrl) {
			MediaMetadata currentMedia = new MediaMetadata();
			try {
				SystemLogger.Log(SystemLogger.Module.PLATFORM, "getting metadata from nsUrl RelativeString: "+ nsUrl.RelativeString);
				
				// Getting mime type
				currentMedia.MimeType = MediaMetadata.GetMimeTypeFromExtension(nsUrl.RelativeString);
				SystemLogger.Log(SystemLogger.Module.PLATFORM, "metadata mimetype: "+ currentMedia.MimeType);
				// Getting media type
				if(currentMedia.MimeType != null && currentMedia.MimeType.ToString().StartsWith("audio")) {
					currentMedia.Type = MediaType.Audio;	
				} else if (currentMedia.MimeType != null && currentMedia.MimeType.ToString().StartsWith("video")) {
					currentMedia.Type = MediaType.Video;	
				} else if (currentMedia.MimeType != null && currentMedia.MimeType.ToString().StartsWith("image")) {
					currentMedia.Type = MediaType.Photo;	
				} else {
					currentMedia.Type = MediaType.NotSupported;
				}
				
				AVUrlAsset urlAsset = AVUrlAsset.Create(nsUrl, new AVUrlAssetOptions());
				if(urlAsset != null) {
					currentMedia.Duration = urlAsset.Duration.Value;
					if(urlAsset.Duration.TimeScale != 0) { // TimeScale could be null in some devices
						currentMedia.Duration = urlAsset.Duration.Value / urlAsset.Duration.TimeScale;
					}
					AVMetadataItem[] metadataItems = urlAsset.CommonMetadata; // CommonMetadata could be null in some devices
					if(metadataItems != null) {
						foreach(AVMetadataItem metadataItem in metadataItems) {
							if(metadataItem.CommonKey == "title") {
								currentMedia.Title = metadataItem.StringValue.ToString();
								currentMedia.Album = metadataItem.Value.ToString();
								
							}
							if(metadataItem.CommonKey == "artist") {
								currentMedia.Artist = metadataItem.Value.ToString();
							}
							//TODO map category & handle
						}
					}
				}
					
			} catch (Exception ex) {
				SystemLogger.Log(SystemLogger.Module.PLATFORM, "Error getting metadata from [" + nsUrl +"]", ex);
				
				currentMedia = null;
			}
			
			return currentMedia;
		}