示例#1
0
        /// <summary>Builds a Content-Type given the mime type and all the parameters.</summary>
        /// <param name="mimeType">The MIME type in standard type/subtype form, without parameters.</param>
        /// <param name="parameters">Parameters to be appended in the mime type.</param>
        /// <returns>content type containing the mime type and all the parameters.</returns>
        internal static string WriteContentType(string mimeType, MediaParameter[] parameters)
        {
            Debug.Assert(!string.IsNullOrEmpty(mimeType), "!string.IsNullOrEmpty(mimeType)");
            Debug.Assert(parameters != null, "parameters != null");

            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append(mimeType);

            foreach (var parameter in parameters)
            {
                stringBuilder.Append(';');
                stringBuilder.Append(parameter.Name);
                stringBuilder.Append("=");
                stringBuilder.Append(parameter.GetOriginalValue());
            }

            return stringBuilder.ToString();
        }
示例#2
0
        /// <summary>Read a parameter for a media type/range.</summary>
        /// <param name="text">Text to read from.</param>
        /// <param name="textIndex">Pointer in text.</param>
        /// <param name="parameters">Array with parameters to grow as necessary.</param>
        private static void ReadMediaTypeParameter(string text, ref int textIndex, ref MediaParameter[] parameters)
        {
            int startIndex = textIndex;
            if (ReadToken(text, ref textIndex))
            {
                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeMissingValue);
            }

            string parameterName = text.Substring(startIndex, textIndex - startIndex);
            if (text[textIndex] != '=')
            {
                throw Error.HttpHeaderFailure(400, Strings.HttpProcessUtility_MediaTypeMissingValue);
            }

            textIndex++;

            MediaParameter parameter = ReadQuotedParameterValue(parameterName, text, ref textIndex);

            // Add the parameter name/value pair to the list.
            if (parameters == null)
            {
                parameters = new MediaParameter[1];
            }
            else
            {
                var grow = new MediaParameter[parameters.Length + 1];
                Array.Copy(parameters, grow, parameters.Length);
                parameters = grow;
            }

            parameters[parameters.Length - 1] = parameter;
        }
示例#3
0
            /// <summary>
            /// Initializes a new <see cref="MediaType"/> read-only instance.
            /// </summary>
            /// <param name="type">Type specification (for example, 'text').</param>
            /// <param name="subType">Sub-type specification (for example, 'plain').</param>
            /// <param name="parameters">Parameters specified on the media type.</param>
            internal MediaType(string type, string subType, MediaParameter[] parameters)
            {
                Debug.Assert(type != null, "type != null");
                Debug.Assert(subType != null, "subType != null");

                this.type = type;
                this.subType = subType;
                this.parameters = parameters;
            }