static HeaderInfoTable()
 {
     HeaderInfo[] infoArray = new HeaderInfo[] { 
         new HeaderInfo("Age", false, false, false, SingleParser), new HeaderInfo("Allow", false, false, true, MultiParser), new HeaderInfo("Accept", true, false, true, MultiParser), new HeaderInfo("Authorization", false, false, true, MultiParser), new HeaderInfo("Accept-Ranges", false, false, true, MultiParser), new HeaderInfo("Accept-Charset", false, false, true, MultiParser), new HeaderInfo("Accept-Encoding", false, false, true, MultiParser), new HeaderInfo("Accept-Language", false, false, true, MultiParser), new HeaderInfo("Cookie", false, false, true, MultiParser), new HeaderInfo("Connection", true, false, true, MultiParser), new HeaderInfo("Content-MD5", false, false, false, SingleParser), new HeaderInfo("Content-Type", true, false, false, SingleParser), new HeaderInfo("Cache-Control", false, false, true, MultiParser), new HeaderInfo("Content-Range", false, false, false, SingleParser), new HeaderInfo("Content-Length", true, true, false, SingleParser), new HeaderInfo("Content-Encoding", false, false, true, MultiParser), 
         new HeaderInfo("Content-Language", false, false, true, MultiParser), new HeaderInfo("Content-Location", false, false, false, SingleParser), new HeaderInfo("Date", true, false, false, SingleParser), new HeaderInfo("ETag", false, false, false, SingleParser), new HeaderInfo("Expect", true, false, true, MultiParser), new HeaderInfo("Expires", false, false, false, SingleParser), new HeaderInfo("From", false, false, false, SingleParser), new HeaderInfo("Host", true, false, false, SingleParser), new HeaderInfo("If-Match", false, false, true, MultiParser), new HeaderInfo("If-Range", false, false, false, SingleParser), new HeaderInfo("If-None-Match", false, false, true, MultiParser), new HeaderInfo("If-Modified-Since", true, false, false, SingleParser), new HeaderInfo("If-Unmodified-Since", false, false, false, SingleParser), new HeaderInfo("Keep-Alive", false, true, false, SingleParser), new HeaderInfo("Location", false, false, false, SingleParser), new HeaderInfo("Last-Modified", false, false, false, SingleParser), 
         new HeaderInfo("Max-Forwards", false, false, false, SingleParser), new HeaderInfo("Pragma", false, false, true, MultiParser), new HeaderInfo("Proxy-Authenticate", false, false, true, MultiParser), new HeaderInfo("Proxy-Authorization", false, false, true, MultiParser), new HeaderInfo("Proxy-Connection", true, false, true, MultiParser), new HeaderInfo("Range", true, false, true, MultiParser), new HeaderInfo("Referer", true, false, false, SingleParser), new HeaderInfo("Retry-After", false, false, false, SingleParser), new HeaderInfo("Server", false, false, false, SingleParser), new HeaderInfo("Set-Cookie", false, false, true, MultiParser), new HeaderInfo("Set-Cookie2", false, false, true, MultiParser), new HeaderInfo("TE", false, false, true, MultiParser), new HeaderInfo("Trailer", false, false, true, MultiParser), new HeaderInfo("Transfer-Encoding", true, true, true, MultiParser), new HeaderInfo("Upgrade", false, false, true, MultiParser), new HeaderInfo("User-Agent", true, false, false, SingleParser), 
         new HeaderInfo("Via", false, false, true, MultiParser), new HeaderInfo("Vary", false, false, true, MultiParser), new HeaderInfo("Warning", false, false, true, MultiParser), new HeaderInfo("WWW-Authenticate", false, true, true, SingleParser)
      };
     HeaderHashTable = new Hashtable(infoArray.Length * 2, CaseInsensitiveAscii.StaticInstance);
     for (int i = 0; i < infoArray.Length; i++)
     {
         HeaderHashTable[infoArray[i].HeaderName] = infoArray[i];
     }
 }
Esempio n. 2
0
		void CheckHeaderConsistency (HeaderInfo value)
		{
			if (!headerConsistency.HasValue) {
				headerConsistency = value;
				return;
			}

			if ((headerConsistency & value) == 0)
				throw new InvalidOperationException ();
		}
Esempio n. 3
0
		internal WebHeaderCollection (HeaderInfo headerRestriction)
		{
			this.headerRestriction = headerRestriction;
		}		
Esempio n. 4
0
        static HeaderInfoTable()
        {
            HeaderInfo[] InfoArray = new HeaderInfo[]
            {
                new HeaderInfo(HttpKnownHeaderNames.Age,                false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.Allow,              false,  false,  true   ),
                new HeaderInfo(HttpKnownHeaderNames.Accept,             true,   false,  true   ),
                new HeaderInfo(HttpKnownHeaderNames.Authorization,      false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.AcceptRanges,       false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.AcceptCharset,      false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.AcceptEncoding,     false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.AcceptLanguage,     false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.Cookie,             false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.Connection,         true,   false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.ContentMD5,         false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.ContentType,        true,   false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.CacheControl,       false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.ContentRange,       false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.ContentLength,      true,   true,   false  ),
                new HeaderInfo(HttpKnownHeaderNames.ContentEncoding,    false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.ContentLanguage,    false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.ContentLocation,    false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.Date,               true,   false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.ETag,               false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.Expect,             true,   false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.Expires,            false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.From,               false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.Host,               true,   false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.IfMatch,            false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.IfRange,            false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.IfNoneMatch,        false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.IfModifiedSince,    true,   false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.IfUnmodifiedSince,  false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.KeepAlive,          false,  true,   false  ),
                new HeaderInfo(HttpKnownHeaderNames.Location,           false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.LastModified,       false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.MaxForwards,        false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.Pragma,             false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.ProxyAuthenticate,  false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.ProxyAuthorization, false,  false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.ProxyConnection,    true,   false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.Range,              true,   false,  true  ),
                new HeaderInfo(HttpKnownHeaderNames.Referer,            true,   false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.RetryAfter,         false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.Server,             false,  false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.SetCookie,          false,  false,  true   ),
                new HeaderInfo(HttpKnownHeaderNames.SetCookie2,         false,  false,  true   ),
                new HeaderInfo(HttpKnownHeaderNames.TE,                 false,  false,  true   ),
                new HeaderInfo(HttpKnownHeaderNames.Trailer,            false,  false,  true   ),
                new HeaderInfo(HttpKnownHeaderNames.TransferEncoding,   true,   true,   true   ),
                new HeaderInfo(HttpKnownHeaderNames.Upgrade,            false,  false,  true   ),
                new HeaderInfo(HttpKnownHeaderNames.UserAgent,          true,   false,  false  ),
                new HeaderInfo(HttpKnownHeaderNames.Via,                false,  false,  true   ),
                new HeaderInfo(HttpKnownHeaderNames.Vary,               false,  false,  true   ),
                new HeaderInfo(HttpKnownHeaderNames.Warning,            false,  false,  true   ),
                new HeaderInfo(HttpKnownHeaderNames.WWWAuthenticate, false, true, true ),
            };

            HeaderHashTable = new Hashtable(InfoArray.Length * 2, CaseInsensitiveAscii.StaticInstance);
            for (int i = 0; i < InfoArray.Length; i++)
            {
                HeaderHashTable[InfoArray[i].HeaderName] = InfoArray[i];
            }
        }
Esempio n. 5
0
 internal WebHeaderCollection(HeaderInfo headerRestriction)
 {
     this.headerRestriction = headerRestriction;
 }
Esempio n. 6
0
        // GetValues
        // Routine Description:
        //     This method takes a header name and returns a string array representing
        //     the individual values for that headers. For example, if the headers
        //     contained the line Accept: text/plain, text/html then
        //     GetValues("Accept") would return an array of two strings: "text/plain"
        //     and "text/html".
        // Arguments:
        //     header      - Name of the header.
        // Return Value:
        //     string[] - array of parsed string objects
#pragma warning disable CS8765 // Nullability of parameter 'header' doesn't match overridden member
        public override string[]? GetValues(string header)
#pragma warning restore CS8765
        {
            // First get the information about the header and the values for
            // the header.
            HeaderInfo info = HeaderInfo[header !];
Esempio n. 7
0
        private static bool Initialize() {

            HeaderInfo[] InfoArray = new HeaderInfo[] {
                new HeaderInfo(HttpKnownHeaderNames.Age, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Allow, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Accept, true, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Authorization, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.AcceptRanges, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.AcceptCharset, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.AcceptEncoding, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.AcceptLanguage, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Cookie, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Connection, true, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentMD5, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentType, true, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.CacheControl, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentRange, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentLength, true, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentEncoding, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentLanguage, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentLocation, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Date, true, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.ETag, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Expect, true, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Expires, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.From, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Host, true, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.IfMatch, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.IfRange, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.IfNoneMatch, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.IfModifiedSince, true, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.IfUnmodifiedSince, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Location, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.LastModified, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.MaxForwards, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Pragma, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ProxyAuthenticate, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ProxyAuthorization, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ProxyConnection, true, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Range, true, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Referer, true, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.RetryAfter, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Server, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.SetCookie, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.SetCookie2, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.TE, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Trailer, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.TransferEncoding, true , true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Upgrade, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.UserAgent, true, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Via, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Vary, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Warning, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.WWWAuthenticate, false, true, SingleParser)
            };

            HeaderHashTable =
                new Hashtable(
                    InfoArray.Length * 2,
                    CaseInsensitiveAscii.StaticInstance,
                    CaseInsensitiveAscii.StaticInstance );

            for (int i = 0; i < InfoArray.Length; i++) {
                HeaderHashTable[InfoArray[i].HeaderName] = InfoArray[i];
            }

            //
            // feed this guy to the garbage-collector as soon as possible
            //
            InfoArray = null;

            return true;
        }
Esempio n. 8
0
        static HeaderInfoTable()
        {
            HeaderInfo[] InfoArray = new HeaderInfo[] {
                new HeaderInfo(HttpKnownHeaderNames.Age, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Allow, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Accept, true, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Authorization, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.AcceptRanges, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.AcceptCharset, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.AcceptEncoding, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.AcceptLanguage, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Cookie, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Connection, true, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentMD5, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentType, true, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.CacheControl, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentRange, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentLength, true, true, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentEncoding, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentLanguage, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ContentLocation, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Date, true, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.ETag, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Expect, true, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Expires, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.From, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Host, true, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.IfMatch, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.IfRange, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.IfNoneMatch, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.IfModifiedSince, true, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.IfUnmodifiedSince, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.KeepAlive, false, true, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Location, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.LastModified, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.MaxForwards, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Pragma, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ProxyAuthenticate, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ProxyAuthorization, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.ProxyConnection, true, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Range, true, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Referer, true, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.RetryAfter, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Server, false, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.SetCookie, false, false, true, SetCookieParser),
                new HeaderInfo(HttpKnownHeaderNames.SetCookie2, false, false, true, SetCookieParser),
                new HeaderInfo(HttpKnownHeaderNames.TE, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Trailer, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.TransferEncoding, true, true, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Upgrade, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.UserAgent, true, false, false, SingleParser),
                new HeaderInfo(HttpKnownHeaderNames.Via, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Vary, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.Warning, false, false, true, MultiParser),
                new HeaderInfo(HttpKnownHeaderNames.WWWAuthenticate, false, true, true, SingleParser)
            };

            HeaderHashTable = new Hashtable(InfoArray.Length * 2, CaseInsensitiveAscii.StaticInstance);
            for (int i = 0; i < InfoArray.Length; i++)
            {
                HeaderHashTable[InfoArray[i].HeaderName] = InfoArray[i];
            }
        }
        /*++
         *
         * GetValues
         *
         * Routine Description:
         *
         *  This method takes a header name and returns a string array representing
         *  the individual values for that headers. For example, if the headers
         *  contained the line Accept: text/plain, text/html then
         *  GetValues("Accept") would return an array of two strings: "text/plain"
         *  and "text/html".
         *
         * Arguments:
         *
         *  header      - Name of the header.
         *
         * Return Value:
         *
         *  string[] - array of parsed string objects
         *
         * --*/
        /// <include file='doc\WebHeaders.uex' path='docs/doc[@for="WebHeaderCollection.GetValues"]/*' />
        /// <devdoc>
        ///    <para>
        ///       Gets an array of header values stored in a
        ///       header.
        ///    </para>
        /// </devdoc>
        public override string[] GetValues(string header)
        {
            // First get the information about the header and the values for
            // the header.

            HeaderInfo Info = HInfo[header];

            string[] Values = base.GetValues(header);

            // If we have no information about the header or it doesn't allow
            // multiple values, just return the values.

            if (Info == null || Values == null || !Info.AllowMultiValues)
            {
                return(Values);
            }

            // Here we have a multi value header. We need to go through
            // each entry in the multi values array, and if an entry itself
            // has multiple values we'll need to combine those in.
            //
            // We do some optimazation here, where we try not to copy the
            // values unless there really is one that have multiple values.

            string[]  TempValues;
            ArrayList ValueList = null;

            int i;

            for (i = 0; i < Values.Length; i++)
            {
                // Parse this value header.
                TempValues = Info.Parser(Values[i]);

                // If we don't have an array list yet, see if this
                // value has multiple values.

                if (ValueList == null)
                {
                    // See if it has multiple values.

                    if (TempValues.Length > 1)
                    {
                        // It does, so we need to create an array list that
                        // represents the Values, then trim out this one and
                        // the ones after it that haven't been parsed yet.

                        ValueList = new ArrayList(Values);

                        ValueList.RemoveRange(i, Values.Length - i);

                        ValueList.AddRange(TempValues);
                    }
                }
                else
                {
                    // We already have an ArrayList, so just add the values.

                    ValueList.AddRange(TempValues);
                }
            }

            // See if we have an ArrayList. If we don't, just return the values.
            // Otherwise convert the ArrayList to a string array and return that.

            if (ValueList != null)
            {
                string[] ReturnArray = new string[ValueList.Count];

                ValueList.CopyTo(ReturnArray);

                return(ReturnArray);
            }

            return(Values);
        }