Example #1
0
 /// <summary>
 /// 返回枚举的DisplayName
 /// </summary>
 /// <param name="header">请求头枚举</param>
 /// <returns></returns>
 private static string GetHeaderName(this HttpRequestHeader header)
 {
     return(httpRequestHeaderType
            .GetField(header.ToString())?
            .GetCustomAttribute <DisplayAttribute>()?
            .Name ?? header.ToString());
 }
        public string GetHeader(HttpRequestHeader header)
        {
            if (this.client.DefaultRequestHeaders.Contains(header.ToString()))
            {
                return(string.Join(";", this.client.DefaultRequestHeaders.GetValues(header.ToString())));
            }

            return(null);
        }
Example #3
0
        public void Names_FromHttpRequestHeader()
        {
            WebHeaderCollection whc = new WebHeaderCollection();

            // Enum.GetValues is not available on SL :(
            for (int i = (int)HttpRequestHeader.CacheControl; i <= (int)HttpRequestHeader.UserAgent; i++)
            {
                HttpRequestHeader hrh = (HttpRequestHeader)i;
                whc [hrh] = hrh.ToString();
            }
            Assert.AreEqual(41, whc.Count, "Count");
            string [] keys = whc.AllKeys;
            foreach (string key in keys)
            {
                // some names are equals to Enum.ToString
                if (whc [key] == key)
                {
                    continue;
                }
                // while others are not (> 1 word)
                switch (key)
                {
                case "Cache-Control":
                case "Keep-Alive":
                case "Transfer-Encoding":
                case "Content-Length":
                case "Content-Type":
                case "Content-Encoding":
                case "Content-Language":
                case "Content-Location":
                case "Content-Range":
                case "Last-Modified":
                case "Accept-Charset":
                case "Accept-Encoding":
                case "Accept-Language":
                case "If-Match":
                case "If-Modified-Since":
                case "If-None-Match":
                case "If-Range":
                case "If-Unmodified-Since":
                case "Max-Forwards":
                case "Proxy-Authorization":
                case "User-Agent":
                    Assert.AreEqual(key.Replace("-", String.Empty), whc [key], key);
                    break;

                case "Content-MD5":
                    Assert.AreEqual("ContentMd5", whc [key], key);
                    break;

                case "TE":
                    Assert.AreEqual("Te", whc [key], key);
                    break;

                default:
                    Assert.Fail(key);
                    break;
                }
            }
        }
Example #4
0
        /**
         * @see https://stackoverflow.com/questions/25574333/how-to-use-system-net-httprequestheader-enum-with-an-asp-net-request
         */
        public static string TranslateToHttpHeaderName(HttpRequestHeader enumToTranslate)
        {
            const string httpHeaderNameSeparator = "-";
            string       enumName      = enumToTranslate.ToString();
            var          stringBuilder = new StringBuilder();

            // skip first letter
            stringBuilder.Append(enumName[0]);
            for (int i = 1; i < enumName.Length; i++)
            {
                if (char.IsUpper(enumName[i]))
                {
                    stringBuilder.Append(httpHeaderNameSeparator);
                }
                stringBuilder.Append(enumName[i]);
            }
            // Cover special case for 2 character enum name "Te" to "TE" header case.
            string headerName = stringBuilder.ToString();

            if (headerName.Length == 2)
            {
                headerName = headerName.ToUpper();
            }
            return(headerName);
        }
Example #5
0
 /// <summary>
 /// 获取请求头名称
 /// </summary>
 /// <param name="header">请求头枚举</param>
 /// <returns></returns>
 public static string GetName(HttpRequestHeader header)
 {
     if (staticCache.TryGetValue(header, out var name))
     {
         return(name);
     }
     return(header.ToString());
 }
Example #6
0
 /// <summary>
 /// 转换为header名
 /// </summary>
 /// <param name="header">请求头枚举</param>
 /// <returns></returns>
 public static string ToHeaderName(this HttpRequestHeader header)
 {
     if (cache.TryGetValue(header, out var name))
     {
         return(name);
     }
     return(header.ToString());
 }
Example #7
0
        /// <summary>
        /// Set the expectation that a header is present in a request. Calls made
        /// with an existing endpoint will replace the previous expectation. All
        /// expectations are checked, even after a match.
        /// </summary>
        /// <param name="endpointRegex">A regex to match multiple endpoints</param>
        /// <param name="header">The header key</param>
        /// <param name="value">The expected header value</param>
        public void ExpectHeaderPattern(string endpointRegex, HttpRequestHeader header, string value)
        {
            var absoluteUrlPattern = new Regex($"^{Regex.Escape(mBaseUrl)}{endpointRegex}$");

            var expectedHeaders = GetOrMakeValue(absoluteUrlPattern, mExpectedHeaders, () => new HeaderList());

            expectedHeaders.Add(Tuple.Create(header.ToString(), value));
        }
Example #8
0
        public static void SetHttpHeader(this HttpWebRequest request, HttpRequestHeader header, string value)
        {
            switch (header)
            {
            case HttpRequestHeader.Accept:
                request.Accept = value;
                break;

            case HttpRequestHeader.Connection:
                request.Connection = value;
                break;

            case HttpRequestHeader.ContentLength:
                request.ContentLength = long.Parse(value);
                break;

            case HttpRequestHeader.ContentType:
                request.ContentType = value;
                break;

            case HttpRequestHeader.Date:
                request.Date = DateTime.Parse(value);
                break;

            case HttpRequestHeader.Expect:
                request.Expect = value;
                break;

            case HttpRequestHeader.Host:
                request.Host = value;
                break;

            case HttpRequestHeader.IfModifiedSince:
                request.IfModifiedSince = DateTime.Parse(value);
                break;

            case HttpRequestHeader.KeepAlive:
                request.KeepAlive = bool.Parse(value);
                break;

            case HttpRequestHeader.Referer:
                request.Referer = value;
                break;

            case HttpRequestHeader.TransferEncoding:
                request.TransferEncoding = value;
                break;

            case HttpRequestHeader.UserAgent:
                request.UserAgent = value;
                break;

            default:
                request.Headers.Add(header.ToString(), value);
                break;
            }
        }
    public static string GetHeaderString(HttpRequestHeader header)
    {
        // Use a dictionary here if you want. The API is the important bit
        switch (header)
        {
        case HttpRequestHeader.Accept: return("Accept");

        case HttpRequestHeader.AcceptCharset: return("Accept-Charset");

        default: throw new KeyNotFoundException(header.ToString());
        }
    }
Example #10
0
 private static string ToString(HttpRequestHeader value)
 {
     switch (value)
     {
         case HttpRequestHeader.CacheControl:
             return "Cache-Control";
         case HttpRequestHeader.KeepAlive:
             return "Keep-Alive";
         case HttpRequestHeader.TransferEncoding:
             return "Transfer-Encoding";
         case HttpRequestHeader.ContentLength:
             return "Content-Length";
         case HttpRequestHeader.ContentType:
             return "Content-Type";
         case HttpRequestHeader.ContentEncoding:
             return "Content-Encoding";
         case HttpRequestHeader.ContentLanguage:
             return "Content-Language";
         case HttpRequestHeader.ContentLocation:
             return "Content-Location";
         case HttpRequestHeader.ContentMd5:
             return "Content-MD5";
         case HttpRequestHeader.ContentRange:
             return "Content-Range";
         case HttpRequestHeader.LastModified:
             return "Last-Modified";
         case HttpRequestHeader.AcceptCharset:
             return "Accept-Charset";
         case HttpRequestHeader.AcceptEncoding:
             return "Accept-Encoding";
         case HttpRequestHeader.AcceptLanguage:
             return "Accept-Language";
         case HttpRequestHeader.IfMatch:
             return "If-Match";
         case HttpRequestHeader.IfModifiedSince:
             return "If-Modified-Since";
         case HttpRequestHeader.IfNoneMatch:
             return "If-None-Match";
         case HttpRequestHeader.IfRange:
             return "If-Range";
         case HttpRequestHeader.IfUnmodifiedSince:
             return "If-Unmodified-Since";
         case HttpRequestHeader.MaxForwards:
             return "Max-Forwards";
         case HttpRequestHeader.ProxyAuthorization:
             return "Proxy-Authorization";
         case HttpRequestHeader.UserAgent:
             return "User-Agent";
         default:
             return value.ToString();
     }
 }
Example #11
0
        void Headers_HttpRequestHeader(string method)
        {
            // Enum.GetValues is not available on SL :(
            for (int i = (int)HttpRequestHeader.CacheControl; i <= (int)HttpRequestHeader.UserAgent; i++)
            {
                WebRequest wr = GetWebRequest(new Uri("http://localhost"));
                wr.Method = method;
                HttpRequestHeader header = (HttpRequestHeader)i;
                string            s      = i.ToString();

                if (IsValidHeader(header))
                {
                    wr.Headers [header] = s;
                    Assert.AreEqual(s, wr.Headers [header], header.ToString());
                }
                else
                {
                    Assert.Throws <ArgumentException> (delegate {
                        wr.Headers [header] = s;
                    }, header.ToString());
                }
            }
        }
Example #12
0
        protected string requestHeaderFieldNameToString(HttpRequestHeader val)
        {
            switch (val)
            {
            case HttpRequestHeader.ContentLength:
                return("Content-Length");

            case HttpRequestHeader.ContentType:
                return("Content-Type");

            case HttpRequestHeader.TransferEncoding:
                return("Transfer-Encoding");
            }
            return(val.ToString());
        }
Example #13
0
        public string GetHeaderFieldValue(HttpRequestHeader key)
        {
            var query =
                from field in this.Header
                where field.Key.Replace("-", "").ToLower() == key.ToString().ToLower()
                select field;

            if (!query.Any())
            {
                return(null);
            }
            else
            {
                return(query.First().Value);
            }
        }
 public RequestBuilder AddHeader(HttpRequestHeader header, string value)
 {
     this.request.AddHeader(header.ToString(), value);
     return(this);
 }
 public And ContainsHeaderValue(HttpRequestHeader header, string value)
 {
     return(ContainsHeaderValue(header.ToString(), value));
 }
 public HeaderCollection Add(HttpRequestHeader header, object value) => Add(header.ToString(), value);
Example #17
0
 public bool SetHeader(HttpRequestHeader Name, string val)
 {
     return(SetHeader(Name.ToString(), val));
 }
 internal static string Convert(HttpRequestHeader header)
 {
     return(convert(header.ToString()));
 }
Example #19
0
 internal static string Convert(HttpRequestHeader header)
 {
     return(WebHeaderCollection.convert(header.ToString()));
 }
Example #20
0
        public void Names_String()
        {
            WebHeaderCollection whc = new WebHeaderCollection();

            // Enum.GetValues is not available on SL :(
            for (int i = (int)HttpRequestHeader.CacheControl; i <= (int)HttpRequestHeader.UserAgent; i++)
            {
                HttpRequestHeader hrh = (HttpRequestHeader)i;
                // string is kept as supplied
                if ((i % 2) == 1)
                {
                    whc [HttpRequestHeaderToString(hrh).ToLower()] = hrh.ToString().ToLower();
                }
                else
                {
                    whc [HttpRequestHeaderToString(hrh).ToUpper()] = hrh.ToString().ToUpper();
                }
            }
            Assert.AreEqual(41, whc.Count, "Count");
            foreach (string key in whc)
            {
                // some names are equals to Enum.ToString
                if (whc [key] == key)
                {
                    continue;
                }
                // while others are not (> 1 word)
                switch (key)
                {
                case "CACHE-CONTROL":
                case "keep-alive":
                case "TRANSFER-ENCODING":
                case "content-length":
                case "CONTENT-TYPE":
                case "content-encoding":
                case "CONTENT-LANGUAGE":
                case "content-location":
                case "content-range":
                case "last-modified":
                case "accept-charset":
                case "ACCEPT-ENCODING":
                case "accept-language":
                case "if-match":
                case "IF-MODIFIED-SINCE":
                case "if-none-match":
                case "IF-RANGE":
                case "if-unmodified-since":
                case "MAX-FORWARDS":
                case "proxy-authorization":
                case "USER-AGENT":
                    Assert.AreEqual(key.Replace("-", String.Empty), whc [key], key);
                    break;

                case "CONTENT-MD5":
                    Assert.AreEqual("CONTENTMD5", whc [key], key);
                    break;

                case "TE":
                    Assert.AreEqual("Te", whc [key], key);
                    break;

                default:
                    Assert.Fail(key);
                    break;
                }
            }
        }
 public String this[HttpRequestHeader header]
 {
     get { return(this[header.ToString()]); }
 }
Example #22
0
 public void printSpecificHeader(HttpRequestHeader header)
 {
     Console.WriteLine($"{header}: {this.headers.Get(header.ToString())}");
 }
Example #23
0
        private static string ToString(HttpRequestHeader value)
        {
            switch (value)
            {
            case HttpRequestHeader.CacheControl:
                return("Cache-Control");

            case HttpRequestHeader.KeepAlive:
                return("Keep-Alive");

            case HttpRequestHeader.TransferEncoding:
                return("Transfer-Encoding");

            case HttpRequestHeader.ContentLength:
                return("Content-Length");

            case HttpRequestHeader.ContentType:
                return("Content-Type");

            case HttpRequestHeader.ContentEncoding:
                return("Content-Encoding");

            case HttpRequestHeader.ContentLanguage:
                return("Content-Language");

            case HttpRequestHeader.ContentLocation:
                return("Content-Location");

            case HttpRequestHeader.ContentMd5:
                return("Content-MD5");

            case HttpRequestHeader.ContentRange:
                return("Content-Range");

            case HttpRequestHeader.LastModified:
                return("Last-Modified");

            case HttpRequestHeader.AcceptCharset:
                return("Accept-Charset");

            case HttpRequestHeader.AcceptEncoding:
                return("Accept-Encoding");

            case HttpRequestHeader.AcceptLanguage:
                return("Accept-Language");

            case HttpRequestHeader.IfMatch:
                return("If-Match");

            case HttpRequestHeader.IfModifiedSince:
                return("If-Modified-Since");

            case HttpRequestHeader.IfNoneMatch:
                return("If-None-Match");

            case HttpRequestHeader.IfRange:
                return("If-Range");

            case HttpRequestHeader.IfUnmodifiedSince:
                return("If-Unmodified-Since");

            case HttpRequestHeader.MaxForwards:
                return("Max-Forwards");

            case HttpRequestHeader.ProxyAuthorization:
                return("Proxy-Authorization");

            case HttpRequestHeader.UserAgent:
                return("User-Agent");

            default:
                return(value.ToString());
            }
        }
Example #24
0
 public SendOnlyRequestBuilder Header(HttpRequestHeader header, string value)
 {
     RequestData.Headers.Add(header.ToString(), value);
     return(this);
 }
Example #25
0
 public void print(HttpRequestHeader req)
 {
     Console.WriteLine($"{req}: { this.listenerRequest.Headers[req.ToString()]}");
 }
Example #26
0
        static internal string Convert(HttpRequestHeader header)
        {
            string headerAsString = header.ToString();

            return(Convert(headerAsString));
        }
Example #27
0
 /// <summary>
 /// Determines whether the specified header collection contains header.
 /// </summary>
 /// <param name="headers">The header collection.</param>
 /// <param name="headerKey">Header name to look for.</param>
 /// <param name="headerKeyFound">The matching header (might be slightly different from the supplied name).</param>
 /// <returns></returns>
 public static bool ContainsHeader(this WebHeaderCollection headers, HttpRequestHeader headerKey, out string headerKeyFound)
 {
     return(headers.ContainsHeaderKey(headerKey.ToString(), out headerKeyFound));
 }
Example #28
0
 /// <summary>
 /// 设置标头
 /// </summary>
 /// <param name="Name"></param>
 /// <param name="val"></param>
 /// <returns></returns>
 public WebConnection SetHeader(HttpRequestHeader Name, string val)
 {
     return(SetHeader(Name.ToString(), val));
 }
Example #29
0
 /// <summary>
 /// 将参数值设置到Header
 /// </summary>
 /// <param name="name">header名称</param>
 public HeaderAttribute(HttpRequestHeader name)
     : this(name.ToString(), null)
 {
 }
 public String this[HttpRequestHeader header]
 {
     get { return this[header.ToString()]; }
 }
Example #31
0
 /// <summary>
 /// 将指定值设置到Header
 /// </summary>
 /// <param name="name">header名称</param>
 /// <param name="value">header值</param>
 public HeaderAttribute(HttpRequestHeader name, string value)
     : this(name.ToString(), value)
 {
 }
Example #32
0
 internal static string Convert(HttpRequestHeader header)
 {
     return Convert (header.ToString ());
 }
 public And ContainsHeader(HttpRequestHeader headers)
 {
     return(ContainsHeader(headers.ToString()));
 }