// Properties
 public string this[HttpRequestHeader reqHeader]
 {
     get
     {
         return HeaderStrings[(int)reqHeader];
     }
 }
        public void BuildWebRequest_RestrictedTypes_AddsCorrectHeader(HttpRequestHeader header, string value)
        {
            request.AddHeader(header, value);

            var webrequest = HttpWebRequestBuilder.BuildFrom(request);

            Assert.That(webrequest.Headers[header], Is.Not.Null);
        }
Exemplo n.º 3
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();
     }
 }
Exemplo n.º 4
0
 public string this[HttpRequestHeader header]
 {
     get
     {
         if (!AllowHttpRequestHeader)
         {
             throw new InvalidOperationException(SR.net_headers_req);
         }
         return this[header.GetName()];
     }
     set
     {
         if (!AllowHttpRequestHeader)
         {
             throw new InvalidOperationException(SR.net_headers_req);
         }
         this[header.GetName()] = value;
     }
 }
Exemplo n.º 5
0
		bool IsValidHeader (HttpRequestHeader header)
		{
			switch (header) {
			case HttpRequestHeader.Connection:
			case HttpRequestHeader.Date:
			case HttpRequestHeader.KeepAlive:
			case HttpRequestHeader.Trailer:
			case HttpRequestHeader.TransferEncoding:
			case HttpRequestHeader.Upgrade:
			case HttpRequestHeader.Via:
			case HttpRequestHeader.Warning:
			case HttpRequestHeader.Allow:
			case HttpRequestHeader.ContentLength:
			case HttpRequestHeader.ContentType:
			case HttpRequestHeader.ContentLocation:
			case HttpRequestHeader.ContentRange:
			case HttpRequestHeader.LastModified:
			case HttpRequestHeader.Accept:
			case HttpRequestHeader.AcceptCharset:
			case HttpRequestHeader.AcceptEncoding:
			case HttpRequestHeader.AcceptLanguage:
			// Authorization was not valid before SL4
			// case HttpRequestHeader.Authorization:
			case HttpRequestHeader.Cookie:
			case HttpRequestHeader.Expect:
			case HttpRequestHeader.Host:
			case HttpRequestHeader.IfModifiedSince:
			case HttpRequestHeader.MaxForwards:
			// ProxyAuthorization was not valid before SL4
			// case HttpRequestHeader.ProxyAuthorization:
			case HttpRequestHeader.Referer:
			case HttpRequestHeader.Te:
			// Range was not valid in SL2 but is accepted in SL3
			// case HttpRequestHeader.Range:
			case HttpRequestHeader.UserAgent:
				return false;
			default:
				return true;
			}
		}
 public void Add(HttpRequestHeader header, string value) { }
Exemplo n.º 7
0
        static internal string Convert(HttpRequestHeader header)
        {
            string headerAsString = header.ToString();

            return(Convert(headerAsString));
        }
 public void Add(HttpRequestHeader header, string value)
 {
     Add(RequestHeaderToString(header), value);
 }
Exemplo n.º 9
0
 /// <summary>
 /// 获取请求头名称
 /// </summary>
 /// <param name="header">请求头枚举</param>
 /// <returns></returns>
 public static string GetName(HttpRequestHeader header)
 {
     cache.TryGetValue(header, out string name);
     return(name);
 }
Exemplo n.º 10
0
 public String this[HttpRequestHeader header]
 {
     get { return(this[header.ToString()]); }
 }
Exemplo n.º 11
0
        public HttpRequest WithHeader(HttpRequestHeader header, object value)
        {
            Headers.Add(header, value);

            return(this);
        }
Exemplo n.º 12
0
		string RequestHeaderToString (HttpRequestHeader value)
		{
			switch (value){
			case HttpRequestHeader.CacheControl:
				return "cache-control";
			case HttpRequestHeader.Connection:
				return "connection";
			case HttpRequestHeader.Date:
				return "date";
			case HttpRequestHeader.KeepAlive:
				return "keep-alive";
			case HttpRequestHeader.Pragma:
				return "pragma";
			case HttpRequestHeader.Trailer:
				return "trailer";
			case HttpRequestHeader.TransferEncoding:
				return "transfer-encoding";
			case HttpRequestHeader.Upgrade:
				return "upgrade";
			case HttpRequestHeader.Via:
				return "via";
			case HttpRequestHeader.Warning:
				return "warning";
			case HttpRequestHeader.Allow:
				return "allow";
			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.Expires:
				return "expires";
			case HttpRequestHeader.LastModified:
				return "last-modified";
			case HttpRequestHeader.Accept:
				return "accept";
			case HttpRequestHeader.AcceptCharset:
				return "accept-charset";
			case HttpRequestHeader.AcceptEncoding:
				return "accept-encoding";
			case HttpRequestHeader.AcceptLanguage:
				return "accept-language";
			case HttpRequestHeader.Authorization:
				return "authorization";
			case HttpRequestHeader.Cookie:
				return "cookie";
			case HttpRequestHeader.Expect:
				return "expect";
			case HttpRequestHeader.From:
				return "from";
			case HttpRequestHeader.Host:
				return "host";
			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.Referer:
				return "referer";
			case HttpRequestHeader.Range:
				return "range";
			case HttpRequestHeader.Te:
				return "te";
			case HttpRequestHeader.Translate:
				return "translate";
			case HttpRequestHeader.UserAgent:
				return "user-agent";
			default:
				throw new InvalidOperationException ();
			}
		}
Exemplo n.º 13
0
 public void AddHeader(HttpRequestHeader headerType, string value)
 {
     _headers.Add(headerType, value);
 }
Exemplo n.º 14
0
 /// <summary>
 /// 添加额外的标头(此方法用于添加额外的标头,特殊的标头需要直接设置相关属性)
 /// </summary>
 /// <param name="context"></param>
 /// <param name="header">标头</param>
 /// <param name="value">值</param>
 /// <returns></returns>
 public static HttpContext AddRequestHeader(this HttpContext context, HttpRequestHeader header, string value)
 {
     context.Request.Headers.Add(header, value);
     return(context);
 }
Exemplo n.º 15
0
 /// <summary>
 /// 添加额外的标头(此方法用于添加额外的标头,特殊的标头需要直接设置相关属性)
 /// </summary>
 /// <param name="context"></param>
 /// <param name="header">标头</param>
 /// <param name="value">值</param>
 /// <returns></returns>
 public static HttpContext <T> AddRequestHeader <T>(this HttpContext <T> context, HttpRequestHeader header, string value) where T : class
 {
     context.Request.Headers.Add(header, value);
     return(context);
 }
Exemplo n.º 16
0
 public static string GetName(this HttpRequestHeader header)
 {
     return(s_names[(int)header]);
 }
Exemplo n.º 17
0
 public T GetHeader <T>(HttpRequestHeader header)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 18
0
 public HeaderValueAttribute(HttpRequestHeader header)
 {
     _headerName = HttpRequestHeaders.HeaderNameFor(header);
 }
Exemplo n.º 19
0
 /// <summary>
 /// 将参数值设置到Header
 /// </summary>
 /// <param name="name">header名称</param>
 public HeaderAttribute(HttpRequestHeader name)
     : this(RequestHeader.GetName(name), null)
 {
 }
Exemplo n.º 20
0
 private void SetHeaderValue(HttpRequestHeader name, string value)
 {
     if (value != null)
     {
         _headers[name] = value;
     }
     else
     {
         _headers.Remove(name);
     }
 }
Exemplo n.º 21
0
 /// <summary>
 /// 将指定值设置到Header
 /// </summary>
 /// <param name="name">header名称</param>
 /// <param name="value">header值</param>
 public HeaderAttribute(HttpRequestHeader name, string value)
     : this(RequestHeader.GetName(name), value)
 {
 }
Exemplo n.º 22
0
 internal static void Add(this WebHeaderCollection collection, HttpRequestHeader header, string value)
 {
     collection[header] = value;
 }
Exemplo n.º 23
0
        // Private Methods

        string RequestHeaderToString(HttpRequestHeader value)
        {
            CheckHeaderConsistency(HeaderInfo.Request);

            switch (value)
            {
            case HttpRequestHeader.CacheControl:
                return("Cache-Control");

            case HttpRequestHeader.Connection:
                return("Connection");

            case HttpRequestHeader.Date:
                return("Date");

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

            case HttpRequestHeader.Pragma:
                return("Pragma");

            case HttpRequestHeader.Trailer:
                return("Trailer");

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

            case HttpRequestHeader.Upgrade:
                return("Upgrade");

            case HttpRequestHeader.Via:
                return("Via");

            case HttpRequestHeader.Warning:
                return("Warning");

            case HttpRequestHeader.Allow:
                return("Allow");

            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.Expires:
                return("Expires");

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

            case HttpRequestHeader.Accept:
                return("Accept");

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

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

            case HttpRequestHeader.AcceptLanguage:
                return("accept-language");

            case HttpRequestHeader.Authorization:
                return("Authorization");

            case HttpRequestHeader.Cookie:
                return("Cookie");

            case HttpRequestHeader.Expect:
                return("Expect");

            case HttpRequestHeader.From:
                return("From");

            case HttpRequestHeader.Host:
                return("Host");

            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.Referer:
                return("Referer");

            case HttpRequestHeader.Range:
                return("Range");

            case HttpRequestHeader.Te:
                return("TE");

            case HttpRequestHeader.Translate:
                return("Translate");

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

            default:
                throw new InvalidOperationException();
            }
        }
Exemplo n.º 24
0
 public static string ValueFor(this IEnumerable <Header> headers, HttpRequestHeader header)
 {
     return(headers.ValueFor(HttpRequestHeaders.HeaderNameFor(header)));
 }
Exemplo n.º 25
0
 public void Set(HttpRequestHeader header, string value)
 {
     Set(RequestHeaderToString(header), value);
 }
 public string this[HttpRequestHeader header] {
     get; set;
 }
 public RequestBuilder AddHeader(HttpRequestHeader header, string value)
 {
     this.request.AddHeader(header.ToString(), value);
     return(this);
 }
Exemplo n.º 28
0
        public string this[HttpRequestHeader hrh]
        {
            get { return(Get(RequestHeaderToString(hrh))); }

            set { Add(RequestHeaderToString(hrh), value); }
        }
Exemplo n.º 29
0
		public string this [HttpRequestHeader header] {
			get { return this [HttpRequestHeaderToString (header)]; }
			set {
				string h = HttpRequestHeaderToString (header);
				if (validate)
					ValidateHeader (h);
				headers [h] = value;
			}
		}
Exemplo n.º 30
0
 public string GetHeader(HttpRequestHeader header)
 {
     return(this.client.Headers[header]);
 }
Exemplo n.º 31
0
 // Exceptions:
 //   System.InvalidOperationException:
 //     This System.Net.WebHeaderCollection instance does not allow instances of
 //     System.Net.HttpRequestHeader.
 /// <summary>
 /// Removes the specified header from the collection.
 /// </summary>
 /// <param name="header">The System.Net.HttpRequestHeader instance to remove from the collection.</param>
 public void Remove(HttpRequestHeader header)
 {
     Remove(CSharpHeaderToHtmlHeaderConverter.Convert(header));
 }
Exemplo n.º 32
0
        private static string RequestHeaderToString(HttpRequestHeader value)
        {
            switch (value)
            {
            case HttpRequestHeader.CacheControl:
                return("cache-control");

            case HttpRequestHeader.Connection:
                return("connection");

            case HttpRequestHeader.Date:
                return("date");

            case HttpRequestHeader.KeepAlive:
                return("keep-alive");

            case HttpRequestHeader.Pragma:
                return("pragma");

            case HttpRequestHeader.Trailer:
                return("trailer");

            case HttpRequestHeader.TransferEncoding:
                return("transfer-encoding");

            case HttpRequestHeader.Upgrade:
                return("upgrade");

            case HttpRequestHeader.Via:
                return("via");

            case HttpRequestHeader.Warning:
                return("warning");

            case HttpRequestHeader.Allow:
                return("allow");

            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.Expires:
                return("expires");

            case HttpRequestHeader.LastModified:
                return("last-modified");

            case HttpRequestHeader.Accept:
                return("accept");

            case HttpRequestHeader.AcceptCharset:
                return("accept-charset");

            case HttpRequestHeader.AcceptEncoding:
                return("accept-encoding");

            case HttpRequestHeader.AcceptLanguage:
                return("accept-language");

            case HttpRequestHeader.Authorization:
                return("authorization");

            case HttpRequestHeader.Cookie:
                return("cookie");

            case HttpRequestHeader.Expect:
                return("expect");

            case HttpRequestHeader.From:
                return("from");

            case HttpRequestHeader.Host:
                return("host");

            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.Referer:
                return("referer");

            case HttpRequestHeader.Range:
                return("range");

            case HttpRequestHeader.Te:
                return("te");

            case HttpRequestHeader.Translate:
                return("translate");

            case HttpRequestHeader.UserAgent:
                return("user-agent");

            default:
                throw new InvalidOperationException();
            }
        }
Exemplo n.º 33
0
            public override DataFrame Read()
            {
                DataFrame frame = null;

                try
                {
                    if (_chunks == null || !_chunks.MoveNext())
                    {
                        char firstChar = _reader.ReadChar();

                        // Check whether we need to upgrade the connection to raw data, could even at this point actually implement
                        // TLS upgrade (and put back the HTTP parser on top?)
                        if (_isTransparent)
                        {
                            // If transparent send the first chunk along and don't increment enumerator
                            _chunks = BaseHttpDataAdapter.ReadFrames(new DataFrame(new byte[] { (byte)firstChar }), _reader).GetEnumerator();
                        }
                        else
                        {
                            _currentHeader = HttpParser.ReadRequestHeader(_reader, _layer._config.RequestStrictParsing, _logger, new char[] { firstChar });

                            if (_currentHeader.Version.IsVersion11 && _layer._config.Handle100Continue)
                            {
                                bool sendResponse = false;

                                int i = 0;

                                while (i < _currentHeader.Headers.Count)
                                {
                                    KeyDataPair <string> header = _currentHeader.Headers[i];

                                    // Remove expect headers
                                    if (header.Name.Equals("Expect", StringComparison.OrdinalIgnoreCase) && header.Value.Equals("100-continue", StringComparison.OrdinalIgnoreCase))
                                    {
                                        _currentHeader.Headers.RemoveAt(i);
                                        sendResponse = true;
                                    }
                                    else
                                    {
                                        i++;
                                    }
                                }

                                if (sendResponse)
                                {
                                    _adapter.Write(new DataFrame("HTTP/1.1 100 Continue\r\n\r\n"));
                                }
                            }

                            _chunks = _currentHeader.ReadFrames(CreateConfig(_currentHeader)).GetEnumerator();
                        }

                        // Increment to next chunk
                        if (!_chunks.MoveNext())
                        {
                            throw new EndOfStreamException();
                        }
                    }

                    frame = _chunks.Current;
                }
                catch (EndOfStreamException)
                {
                    frame = null;
                }

                return(frame);
            }
Exemplo n.º 34
0
 internal void addHeader(HttpRequestHeader header, string value)
 {
     _request.Headers.Add(header, value);
 }
Exemplo n.º 35
0
            public override DataFrame Read()
            {
                DataFrame frame = null;

                try
                {
                    if (_chunks == null || !_chunks.MoveNext())
                    {
                        if (_isTransparent)
                        {
                            _chunks = BaseHttpDataAdapter.ReadFrames(null, _reader).GetEnumerator();
                        }
                        else
                        {
                            _currentHeader = HttpParser.ReadResponseHeader(_reader, _layer._config.ResponseStrictParsing, _logger);

                            HttpRequestHeader request = null;

                            lock (_requests)
                            {
                                if (_requests.Count > 0)
                                {
                                    // If we have a queued request then dequeue and set head response
                                    request = _requests.Dequeue();
                                }
                            }

                            lock (_requestStream)
                            {
                                if (request == null)
                                {
                                    try
                                    {
                                        _requestStream.Position = 0;
                                        request = HttpParser.ReadRequestHeader(new DataReader(_requestStream), false, _logger);
                                    }
                                    catch (EndOfStreamException)
                                    {
                                        // Ignore end of stream, might just mean we sent garbage to the server which we can't parse
                                    }
                                }

                                _requestStream.SetLength(0);
                            }

                            if (request != null)
                            {
                                _currentHeader.SetHeadRequest(request.IsHead);
                                _currentHeader.SetConnectRequest(request.IsConnect);

                                if (_currentHeader.Is100Continue)
                                {
                                    // If a 100 status response then requeue the request
                                    lock (_requests)
                                    {
                                        HttpRequestHeader[] headers = _requests.ToArray();
                                        _requests.Clear();
                                        // Unlikely that another request will come as client is probably waiting for 100 status, but might as well be sure
                                        _requests.Enqueue(request);
                                        foreach (HttpRequestHeader head in headers)
                                        {
                                            _requests.Enqueue(head);
                                        }
                                    }
                                }
                            }

                            if (_currentHeader.IsUpgradeResponse)
                            {
                                _layer._upgrading = true;
                                _isTransparent    = true;
                            }

                            _chunks = _currentHeader.ReadFrames(CreateConfig(_currentHeader, request)).GetEnumerator();
                        }

                        if (!_chunks.MoveNext())
                        {
                            throw new EndOfStreamException();
                        }
                    }

                    frame = _chunks.Current;
                }
                catch (EndOfStreamException)
                {
                    frame = null;
                }

                return(frame);
            }
 public void Remove(HttpRequestHeader header) { }
Exemplo n.º 37
0
 /// <summary>
 /// 将参数值设置到Header
 /// </summary>
 /// <param name="name">header名称</param>
 public HeaderAttribute(HttpRequestHeader name)
     : this(name.ToString(), null)
 {
 }
 public static void Add(this WebHeaderCollection col, HttpRequestHeader key, string value)
 {
     col[key] = value;
 }
Exemplo n.º 39
0
 /// <summary>
 /// 将指定值设置到Header
 /// </summary>
 /// <param name="name">header名称</param>
 /// <param name="value">header值</param>
 public HeaderAttribute(HttpRequestHeader name, string value)
     : this(name.ToString(), value)
 {
 }
Exemplo n.º 40
0
 private string GetKnownHeader(HttpRequestHeader header)
 {
     return Interop.HttpApi.GetKnownHeader(RequestBuffer, OriginalBlobAddress, (int)header);
 }
Exemplo n.º 41
0
 public And ContainsHeader(HttpRequestHeader headers)
 {
     return(ContainsHeader(headers.ToString()));
 }
Exemplo n.º 42
0
 public void AddHeader(HttpRequestHeader headerType, string value)
 {
     _headers.Add(headerType, value);
 }
Exemplo n.º 43
0
 public And ContainsHeaderValue(HttpRequestHeader header, string value)
 {
     return(ContainsHeaderValue(header.ToString(), value));
 }
Exemplo n.º 44
0
		public string this[HttpRequestHeader hrh]
		{
			get {
				return Get (RequestHeaderToString (hrh));
			}
			
			set {
				Add (RequestHeaderToString (hrh), value);
			}
		}
Exemplo n.º 45
0
        private SKImage GenerateGauge(HttpRequestHeader Header)
        {
            if (!Header.TryGetQueryParameter("Width", out string s) || !int.TryParse(s, out int Width))
            {
                Width = 480;
            }
            else if (Width <= 0)
            {
                throw new BadRequestException();
            }

            if (!Header.TryGetQueryParameter("Height", out s) || !int.TryParse(s, out int Height))
            {
                Height = 300;
            }
            else if (Width <= 0)
            {
                throw new BadRequestException();
            }

            using (SKSurface Surface = SKSurface.Create(Width, Height, SKImageInfo.PlatformColorType, SKAlphaType.Premul))
            {
                SKCanvas Canvas = Surface.Canvas;
                Canvas.Clear(SKColors.White);

                float    NeedleX0     = Width * 0.5f;
                float    NeedleY0     = Height * 0.9f;
                float    OuterRadius  = (float)Math.Min(Height * 0.8, Width * 0.4);
                float    LabelRadius  = OuterRadius * 1.01f;
                float    InnerRadius  = OuterRadius * 0.6f;
                float    NeedleRadius = OuterRadius * 0.95f;
                float    NutRadius    = OuterRadius * 0.05f;
                SKRect   Rect;
                SKPath   Path     = new SKPath();
                SKShader Gradient = SKShader.CreateSweepGradient(new SKPoint(NeedleX0, NeedleY0),
                                                                 new SKColor[] { (lastMotion.HasValue && lastMotion.Value ? SKColors.Green : SKColors.Black), SKColors.White },
                                                                 new float[] { 0, 1 });
                SKPaint GaugeBackground = new SKPaint()
                {
                    IsAntialias = true,
                    Style       = SKPaintStyle.Fill,
                    Shader      = Gradient
                };
                SKPaint GaugeOutline = new SKPaint()
                {
                    IsAntialias = true,
                    Style       = SKPaintStyle.Stroke,
                    Color       = SKColors.Black
                };

                Rect = new SKRect(NeedleX0 - OuterRadius, NeedleY0 - OuterRadius, NeedleX0 + OuterRadius, NeedleY0 + OuterRadius);
                Path.ArcTo(Rect, -180, 180, true);

                Rect = new SKRect(NeedleX0 - InnerRadius, NeedleY0 - InnerRadius, NeedleX0 + InnerRadius, NeedleY0 + InnerRadius);
                Path.ArcTo(Rect, 0, -180, false);
                Path.Close();

                Canvas.DrawPath(Path, GaugeBackground);
                Canvas.DrawPath(Path, GaugeOutline);

                GaugeBackground.Dispose();
                GaugeOutline.Dispose();
                Gradient.Dispose();
                Path.Dispose();

                SKPaint Font = new SKPaint()
                {
                    IsAntialias  = true,
                    Color        = SKColors.Black,
                    HintingLevel = SKPaintHinting.Full,
                    TextSize     = Height * 0.05f
                };

                SKPaint Needle = new SKPaint()
                {
                    IsAntialias = true,
                    Color       = SKColors.Black,
                    Style       = SKPaintStyle.Fill
                };

                Font.GetFontMetrics(out SKFontMetrics FontMetrics);
                float TextHeight = FontMetrics.Descent - FontMetrics.Ascent;
                float TextWidth;

                for (int i = 0; i <= 100; i += 10)
                {
                    s         = i.ToString() + "%";
                    TextWidth = Font.MeasureText(s);

                    float LabelDeg = -90 + i * 1.8f;
                    float LabelRad = (float)(LabelDeg * Math.PI / 180);
                    float LabelX   = (float)(LabelRadius * Math.Sin(LabelRad) + NeedleX0);
                    float LabelY   = (float)(NeedleY0 - LabelRadius * Math.Cos(LabelRad));
                    float OuterX   = (float)(OuterRadius * Math.Sin(LabelRad) + NeedleX0);
                    float OuterY   = (float)(NeedleY0 - OuterRadius * Math.Cos(LabelRad));
                    float NeedleX1 = (float)(NeedleRadius * Math.Sin(LabelRad) + NeedleX0);
                    float NeedleY1 = (float)(NeedleY0 - NeedleRadius * Math.Cos(LabelRad));

                    Canvas.DrawLine(OuterX, OuterY, NeedleX1, NeedleY1, Needle);

                    Canvas.Translate(LabelX, LabelY);
                    Canvas.RotateDegrees(LabelDeg);
                    Canvas.Translate(-TextWidth * 0.5f, -TextHeight * 0.5f);
                    Canvas.DrawText(s, 0, 0, Font);
                    Canvas.ResetMatrix();
                }

                if (this.lastLight.HasValue)
                {
                    float  AngleDeg = (float)(this.lastLight.Value - 50) * 90.0f / 50;
                    double AngleRad = AngleDeg * Math.PI / 180;
                    float  NeedleX1 = (float)(NeedleRadius * Math.Sin(AngleRad) + NeedleX0);
                    float  NeedleY1 = (float)(NeedleY0 - NeedleRadius * Math.Cos(AngleRad));

                    Path = new SKPath();
                    Rect = new SKRect(NeedleX0 - NutRadius, NeedleY0 - NutRadius, NeedleX0 + NutRadius, NeedleY0 + NutRadius);
                    Path.ArcTo(Rect, AngleDeg - 180, -180, true);

                    Path.LineTo(NeedleX1, NeedleY1);
                    Path.Close();

                    Canvas.DrawPath(Path, Needle);

                    Path.Dispose();
                    Needle.Dispose();
                }

                return(Surface.Snapshot());
            }
        }
Exemplo n.º 46
0
 internal static string Convert(HttpRequestHeader header)
 {
     return Convert (header.ToString ());
 }
Exemplo n.º 47
0
 public void Remove(HttpRequestHeader header)
 {
     Remove(RequestHeaderToString(header));
 }
Exemplo n.º 48
0
 /// <summary>
 /// Removes the specified header from the collection.
 /// </summary>
 /// <param name="header">
 /// A <see cref="HttpRequestHeader"/> to remove from the collection.
 /// </param>
 /// <exception cref="InvalidOperationException">
 /// The current <see cref="WebHeaderCollection"/> instance does not allow any of <see cref="HttpRequestHeader"/> values.
 /// </exception>
 /// <exception cref="ArgumentException">
 /// <paramref name="header"/> is a restricted header.
 /// </exception>
 public void Remove(HttpRequestHeader header)
 {
     DoWithCheckingState (RemoveWithoutCheckingName, Convert (header), null, false, false);
 }
Exemplo n.º 49
0
 /// <summary>
 /// Sets the specified header to the specified value.
 /// </summary>
 /// <param name="header">
 /// A <see cref="HttpRequestHeader"/> to set.
 /// </param>
 /// <param name="value">
 /// A <see cref="string"/> that contains the value of the header to set.
 /// </param>
 /// <exception cref="InvalidOperationException">
 /// The current <see cref="WebHeaderCollection"/> instance does not allow any of <see cref="HttpRequestHeader"/> values.
 /// </exception>
 /// <exception cref="ArgumentException">
 ///   <para>
 ///   <paramref name="header"/> is a restricted header.
 ///   </para>
 ///   <para>
 ///   -or-
 ///   </para>
 ///   <para>
 ///   <paramref name="value"/> contains invalid characters.
 ///   </para>
 /// </exception>
 /// <exception cref="ArgumentOutOfRangeException">
 /// The length of <paramref name="value"/> is greater than 65535.
 /// </exception>
 public void Set(HttpRequestHeader header, string value)
 {
     DoWithCheckingState (SetWithoutCheckingName, Convert (header), value, false, true);
 }
Exemplo n.º 50
0
 // Public methods.
 /// <summary>
 /// Returns the name of the specified request header.
 /// </summary>
 /// <param name="header">The HTTP request header.</param>
 /// <returns>The header name.</returns>
 public static string GetRequestHeaderName(HttpRequestHeader header)
 {
     return HttpUtils.requestHeaderNames[header] as string;
 }
Exemplo n.º 51
0
        /// <summary>
        /// Gets or sets the specified request <paramref name="header"/> in the collection.
        /// </summary>
        /// <value>
        /// A <see cref="string"/> that contains the value of the specified request <paramref name="header"/>.
        /// </value>
        /// <param name="header">
        /// A <see cref="HttpRequestHeader"/> that indicates a request header.
        /// </param>
        /// <exception cref="InvalidOperationException">
        /// The current <see cref="WebHeaderCollection"/> instance does not allow any of <see cref="HttpRequestHeader"/> values.
        /// </exception>
        /// <exception cref="ArgumentException">
        ///   <para>
        ///   <paramref name="header"/> is a restricted header.
        ///   </para>
        ///   <para>
        ///   -or-
        ///   </para>
        ///   <para>
        ///   <paramref name="value"/> contains invalid characters.
        ///   </para>
        /// </exception>
        /// <exception cref="ArgumentOutOfRangeException">
        /// The length of <paramref name="value"/> is greater than 65535.
        /// </exception>
        public string this[HttpRequestHeader header]
        {
            get {
                return Get (Convert (header));
            }

            set {
                Add (header, value);
            }
        }
Exemplo n.º 52
0
		public string this [HttpRequestHeader header] {
			get {
				return Get (RequestHeaderToString (header));
			}
			
			set {
				Set (header, value);
			}
		}
Exemplo n.º 53
0
		// Private Methods

		string RequestHeaderToString (HttpRequestHeader value)
		{
			CheckHeaderConsistency (HeaderInfo.Request);

			switch (value) {
			case HttpRequestHeader.CacheControl:
				return "Cache-Control";
			case HttpRequestHeader.Connection:
				return "Connection";
			case HttpRequestHeader.Date:
				return "Date";
			case HttpRequestHeader.KeepAlive:
				return "Keep-Alive";
			case HttpRequestHeader.Pragma:
				return "Pragma";
			case HttpRequestHeader.Trailer:
				return "Trailer";
			case HttpRequestHeader.TransferEncoding:
				return "Transfer-Encoding";
			case HttpRequestHeader.Upgrade:
				return "Upgrade";
			case HttpRequestHeader.Via:
				return "Via";
			case HttpRequestHeader.Warning:
				return "Warning";
			case HttpRequestHeader.Allow:
				return "Allow";
			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.Expires:
				return "Expires";
			case HttpRequestHeader.LastModified:
				return "Last-Modified";
			case HttpRequestHeader.Accept:
				return "Accept";
			case HttpRequestHeader.AcceptCharset:
				return "Accept-Charset";
			case HttpRequestHeader.AcceptEncoding:
				return "Accept-Encoding";
			case HttpRequestHeader.AcceptLanguage:
				return "accept-language";
			case HttpRequestHeader.Authorization:
				return "Authorization";
			case HttpRequestHeader.Cookie:
				return "Cookie";
			case HttpRequestHeader.Expect:
				return "Expect";
			case HttpRequestHeader.From:
				return "From";
			case HttpRequestHeader.Host:
				return "Host";
			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.Referer:
				return "Referer";
			case HttpRequestHeader.Range:
				return "Range";
			case HttpRequestHeader.Te:
				return "TE";
			case HttpRequestHeader.Translate:
				return "Translate";
			case HttpRequestHeader.UserAgent:
				return "User-Agent";
			default:
				throw new InvalidOperationException ();
			}
		}
Exemplo n.º 54
0
		public void Remove (HttpRequestHeader header)
		{
			Remove (RequestHeaderToString (header));
		}
Exemplo n.º 55
0
		public void Set (HttpRequestHeader header, string value)
		{
			Set (RequestHeaderToString (header), value);
		}
Exemplo n.º 56
0
		public void Add (HttpRequestHeader header, string value)
		{
			Add (RequestHeaderToString (header), value);
		}
 public String this[HttpRequestHeader header]
 {
     get { return this[header.ToString()]; }
 }
Exemplo n.º 58
0
 public void Remove(HttpRequestHeader header) {
     if (!AllowHttpRequestHeader) {
         throw new InvalidOperationException(SR.GetString(SR.net_headers_req));
     }
     this.Remove(UnsafeNclNativeMethods.HttpApi.HTTP_REQUEST_HEADER_ID.ToString((int)header));
 }
Exemplo n.º 59
0
 public string this[HttpRequestHeader header] {
     get {
         if (!AllowHttpRequestHeader) {
             throw new InvalidOperationException(SR.GetString(SR.net_headers_req));
         }
         return this[UnsafeNclNativeMethods.HttpApi.HTTP_REQUEST_HEADER_ID.ToString((int)header)];
     }
     set {
         if (!AllowHttpRequestHeader) {
             throw new InvalidOperationException(SR.GetString(SR.net_headers_req));
         }
         this[UnsafeNclNativeMethods.HttpApi.HTTP_REQUEST_HEADER_ID.ToString((int)header)] = value;
     }
 }
Exemplo n.º 60
-1
 public override string this[HttpRequestHeader header]
 {
     get
     {
         return this[HttpHeaderToName.RequestHeaderNames[header]];
     }
     set
     {
         this[HttpHeaderToName.RequestHeaderNames[header]] = value;
     }
 }