/// <summary> /// Determines whether this instance is a subset of passed <see cref="MediaTypeHeaderValue"/>. /// If the media type and media type parameters of this media type are all present /// and match those of <paramref name="otherMediaType"/> then it is a match even though /// <paramref name="otherMediaType"/> may have additional parameters. /// </summary> /// <param name="mediaType">The first media type.</param> /// <param name="otherMediaType">The second media type.</param> /// <returns><c>true</c> if this is a subset of <paramref name="otherMediaType"/>; false otherwise.</returns> public bool IsSubsetOf(MediaTypeHeaderValue otherMediaType) { if (otherMediaType == null) { return(false); } if (!MediaType.Equals(otherMediaType.MediaType, StringComparison.OrdinalIgnoreCase)) { if (otherMediaType.MediaTypeRange != MediaTypeHeaderValueRange.AllMediaRange) { return(false); } } else if (!MediaSubType.Equals(otherMediaType.MediaSubType, StringComparison.OrdinalIgnoreCase)) { if (otherMediaType.MediaTypeRange != MediaTypeHeaderValueRange.SubtypeMediaRange) { return(false); } } if (Parameters != null) { if (Parameters.Count != 0 && (otherMediaType.Parameters == null || otherMediaType.Parameters.Count == 0)) { return(false); } // So far we either have a full match or a subset match. Now check that all of // mediaType1's parameters are present and equal in mediatype2 if (!MatchParameters(Parameters, otherMediaType.Parameters)) { return(false); } } return(true); }
private static void GetMediaTypeFromFiles(string strFolder) { if (string.IsNullOrEmpty(strFolder)) return; try { ArrayList audioFiles = new ArrayList(); ArrayList photoFiles = new ArrayList(); ArrayList videoFiles = new ArrayList(); mediaSubType = MediaSubType.FILES; string[] files = null; DirectoryInfo di = new DirectoryInfo(strFolder); if (di != null) files = di.GetFiles("*.*", SearchOption.AllDirectories).Select(a => a.FullName).ToArray(); if (files != null && files.Length > 0) { //for (int i = files.Length - 1; i >= 0; i--) for (int i = 0; i < files.Length; i++) { if (Util.Utils.IsVideo(files[i])) { videoFiles.Add(files[i]); } else if (Util.Utils.IsAudio(files[i])) { audioFiles.Add(files[i]); if (Path.GetExtension(files[i]).ToLower() == ".cda") mediaSubType = MediaSubType.AUDIO_CD; } else if (Util.Utils.IsPicture(files[i])) { photoFiles.Add(files[i]); } } } mediaFiles.Clear(); if (videoFiles.Count > 0) { mediaType = MediaType.VIDEO; mediaFiles = videoFiles; } else if (audioFiles.Count > 0) { mediaType = MediaType.AUDIO; mediaFiles = audioFiles; } else if (photoFiles.Count > 0) { mediaType = MediaType.PHOTO; mediaFiles = photoFiles; } } catch (Exception) {} }
/// <summary> /// Detects the media type of the CD/DVD inserted into a drive. /// </summary> /// <param name="driveLetter">The drive that contains the data.</param> private static void DetectMediaType(string strDrive) { mediaType = MediaType.UNKNOWN; mediaSubType = MediaSubType.UNKNOWN; if (string.IsNullOrEmpty(strDrive)) return; try { if (Directory.Exists(Path.Combine(strDrive, "VIDEO_TS"))) { mediaType = MediaType.VIDEO; mediaSubType = MediaSubType.DVD; return; } if (Directory.Exists(Path.Combine(strDrive, "BDMV"))) { mediaType = MediaType.VIDEO; mediaSubType = MediaSubType.BLURAY; return; } if (Directory.Exists(Path.Combine(strDrive, "HVDVD_TS"))) { mediaType = MediaType.VIDEO; mediaSubType = MediaSubType.HDDVD; return; } if (Directory.Exists(Path.Combine(strDrive, "MPEGAV"))) { mediaType = MediaType.VIDEO; mediaSubType = MediaSubType.VCD; return; } GetMediaTypeFromFiles(Path.GetPathRoot(strDrive)); } catch (Exception) {} }