Exemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MediaRange"/> class.
        /// </summary>
        MediaRange(MediaType type, MediaType subtype, MediaRangeParameters parameters)
        {
            Contract.Requires <ArgumentNullException>(parameters != null);

            this.type       = type;
            this.subtype    = subtype;
            this.parameters = parameters;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Parses a new instance of <see cref="MediaRange"/> from a 'type/subtype' string.
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static MediaRange Parse(string value)
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                return(null);
            }

            if (value.Equals("*"))
            {
                value = "*/*";
            }

            var parts = value.Split('/', ';');

            if (parts.Length < 2)
            {
                throw new ArgumentException("Content type not in correct 'type/subType' format.", value);
            }

            return(new MediaRange(
                       parts[0],
                       parts[1].TrimEnd(),
                       parts.Length > 2 ? MediaRangeParameters.Parse(value.Substring(value.IndexOf(';'))) : new MediaRangeParameters()));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Whether or not a set of media range parameters matches another, regardless of order
        /// </summary>
        /// <param name="other">Other media range parameters</param>
        /// <returns>True if matching, false if not</returns>
        public bool Matches(MediaRangeParameters other)
        {
            Contract.Requires <ArgumentNullException>(other != null);

            return(parameters.OrderBy(p => p.Key).SequenceEqual(other.parameters.OrderBy(p => p.Key)));
        }