public HttpBodyReceiveFilter(HttpHeaderInfo httpHeader, int size, int headerSize) : base(size) { m_HttpHeader = httpHeader; m_Size = size; m_HeaderSize = headerSize; }
private bool IsMatch(IDictionary <string, string> headers, HttpHeaderInfo header) { string value; if (headers.TryGetValue(header.Name, out value)) { switch (header.Match) { case HeaderMatchType.Equals: return(string.Equals(value, header.Value, StringComparison.OrdinalIgnoreCase)); case HeaderMatchType.Substring: return(value.IndexOf(header.Value, StringComparison.OrdinalIgnoreCase) != -1); case HeaderMatchType.Regex: // Reports of IgnoreCase not working on linux so try it a couple different ways. return(Regex.IsMatch(value, header.Value, RegexOptions.IgnoreCase) || Regex.IsMatch(value.ToUpper(), header.Value.ToUpper(), RegexOptions.IgnoreCase)); default: throw new ArgumentException("Unrecognized HeaderMatchType"); } } return(false); }
private bool IsMatch(IDictionary <string, string> headers, HttpHeaderInfo header) { string value; if (headers.TryGetValue(header.Name, out value)) { switch (header.Match) { case HeaderMatchType.Equals: return(string.Equals(value, header.Value, StringComparison.OrdinalIgnoreCase)); case HeaderMatchType.Substring: var isMatch = value.IndexOf(header.Value, StringComparison.OrdinalIgnoreCase) != -1; //_logger.Debug("IsMatch-Substring value: {0} testValue: {1} isMatch: {2}", value, header.Value, isMatch); return(isMatch); case HeaderMatchType.Regex: return(Regex.IsMatch(value, header.Value, RegexOptions.IgnoreCase)); default: throw new ArgumentException("Unrecognized HeaderMatchType"); } } return(false); }
protected override IReceiveFilter <StringPackageInfo> GetBodyReceiveFilter(HttpHeaderInfo header, int headerSize) { var session = AppContext.CurrentSession; var websocketContext = new WebSocketContext(session, header); var secWebSocketVersion = header.Get(WebSocketConstant.SecWebSocketVersion); IReceiveFilter <StringPackageInfo> handshakeReceiveFilter = null; if (secWebSocketVersion == RFC6455_VERSION) { handshakeReceiveFilter = new Rfc6455ReceiveFilter(); } else if (secWebSocketVersion == HYBI10_VERSION) { handshakeReceiveFilter = new DraftHybi10ReceiveFilter(); } else { handshakeReceiveFilter = new DraftHybi00ReceiveFilter(); } var handshakeHandler = handshakeReceiveFilter as IHandshakeHandler; if (handshakeHandler != null) { handshakeHandler.Handshake(session, header); } return(handshakeReceiveFilter); }
private bool IsMatch(IHeaderDictionary headers, HttpHeaderInfo header) { // Handle invalid user setup if (string.IsNullOrEmpty(header.Name)) { return(false); } if (headers.TryGetValue(header.Name, out StringValues value)) { switch (header.Match) { case HeaderMatchType.Equals: return(string.Equals(value, header.Value, StringComparison.OrdinalIgnoreCase)); case HeaderMatchType.Substring: var isMatch = value.ToString().IndexOf(header.Value, StringComparison.OrdinalIgnoreCase) != -1; // _logger.LogDebug("IsMatch-Substring value: {0} testValue: {1} isMatch: {2}", value, header.Value, isMatch); return(isMatch); case HeaderMatchType.Regex: return(Regex.IsMatch(value, header.Value, RegexOptions.IgnoreCase)); default: throw new ArgumentException("Unrecognized HeaderMatchType"); } } return(false); }
public HttpChunkReceiveFilter(HttpHeaderInfo header, int headerSize, StringBuilder bodyBuilder) : base(new byte[] { 0x0d, 0x0a }) { m_HttpHeader = header; m_HeaderSize = headerSize; m_BodyBuilder = bodyBuilder; }
protected override IReceiveFilter <HttpPackageInfo> GetBodyReceiveFilter(HttpHeaderInfo header, int headerSize) { var contentLength = 0; if (int.TryParse(header.Get(HttpHeaderKey.ContentLength), out contentLength) && contentLength > 0) { return(new HttpBodyReceiveFilter(header, headerSize, contentLength)); } if (contentLength > 0) { return(new HttpBodyReceiveFilter(header, headerSize, contentLength)); } return(null); }
private bool IsMatch(IDictionary<string, string> headers, HttpHeaderInfo header) { string value; if (headers.TryGetValue(header.Name, out value)) { switch (header.Match) { case HeaderMatchType.Equals: return string.Equals(value, header.Value, StringComparison.OrdinalIgnoreCase); case HeaderMatchType.Substring: return value.IndexOf(header.Value, StringComparison.OrdinalIgnoreCase) != -1; case HeaderMatchType.Regex: return Regex.IsMatch(value, header.Value, RegexOptions.IgnoreCase); default: throw new ArgumentException("Unrecognized HeaderMatchType"); } } return false; }
protected override IReceiveFilter <HttpPackageInfo> GetBodyReceiveFilter(HttpHeaderInfo header, int headerSize) { var contentLength = 0; var strContentLength = header.Get("Content-Length"); if (string.IsNullOrEmpty(strContentLength)) { contentLength = -1; } else { contentLength = int.Parse(strContentLength); } if (contentLength > 0) { var totalLength = headerSize + contentLength; return(new HttpBodyReceiveFilter(header, totalLength, headerSize)); } return(new HttpChunkReceiveFilter(header, new StringBuilder())); }
protected HttpPackageInfoBase(string key, HttpHeaderInfo header) { Key = key; Header = header; }
public HttpPackageInfo(string key, HttpHeaderInfo header, string body) : base(key, header, body) { }
public WebSocketContext(IAppSession session, HttpHeaderInfo request) { Session = session; HandshakeRequest = request; }
protected override HttpPackageInfo ResolveHttpPackageWithoutBody(HttpHeaderInfo header) { return(new HttpPackageInfo("Test", header, string.Empty)); }
protected override StringPackageInfo ResolveHttpPackageWithoutBody(HttpHeaderInfo header) { throw new NotSupportedException(); }
public void Handshake(IAppSession session, HttpHeaderInfo head) { throw new NotImplementedException(); }
protected override IReceiveFilter <WebSocketPackageInfo> GetBodyReceiveFilter(HttpHeaderInfo header, int headerSize) { var websocketContext = m_Context; websocketContext.HandshakeRequest = header; var handshakeReceiveFilter = WebSocketReceiveFilterFactoryManager.Handshake(websocketContext); return(handshakeReceiveFilter); }
public HttpBodyReceiveFilter(HttpHeaderInfo header, int headerSize, int bodyLength) : base(bodyLength) { m_Header = header; m_HeaderSize = headerSize; }
/// <summary> /// Initializes a new instance of the <see cref="HttpPackageInfo" /> class. /// </summary> /// <param name="key">The key.</param> /// <param name="header">The header.</param> /// <param name="body">The body.</param> public HttpPackageInfo(string key, HttpHeaderInfo header, string body) : base(key, header) { Body = body; Method = header.Method; }