public override void Clean() { this._headerFields = null; this._requestUri = string.Empty; this._requestUriParameters = null; this._contentFields = null; }
public override void Init(HTTPMsg message) { this._headerFields = message.HTTPHeader.Fields; if (message.MessageType == MessageType.REQUEST) { var reqHeader = message.HTTPHeader as HttpRequestHeader; var uri = reqHeader.RequestURI.Split('?'); this._requestUri = uri[0]; this._requestUriParameters = new Dictionary <string, List <string> >(); if (uri.Length == 2) { foreach (var p in uri[1].Split('&').Select(pair => pair.Split('='))) { if (!this._requestUriParameters.ContainsKey(p[0])) { this._requestUriParameters[p[0]] = new List <string>(); } if (p.Length == 2) { this._requestUriParameters[p[0]].Add(p[1]); } } } } if (message.HTTPContent == null) { return; } var jsonReader = JsonReaderWriterFactory.CreateJsonReader(message.HTTPContent.Content, new XmlDictionaryReaderQuotas()); this._root = XElement.Load(jsonReader); }
public override void Clean() { this._clone = null; this._content = string.Empty; this._boundariesIndices = null; this._boundary = null; this._headerFields = null; this._requestUri = string.Empty; this._requestUriParameters = null; this._partCount = 0; this._partPosition = 0; }
public override void Init(HTTPMsg message) { this._headerFields = message.HTTPHeader.Fields; if (message.MessageType == MessageType.REQUEST) { var reqHeader = message.HTTPHeader as HttpRequestHeader; var uri = reqHeader.RequestURI.Split('?'); this._requestUri = uri[0]; this._requestUriParameters = new Dictionary <string, List <string> >(); if (uri.Length == 2) { foreach (var p in uri[1].Split('&').Select(pair => pair.Split('='))) { if (!this._requestUriParameters.ContainsKey(p[0])) { this._requestUriParameters[p[0]] = new List <string>(); } if (p.Length == 2) { this._requestUriParameters[p[0]].Add(p[1]); } } } } if (message.HTTPContent == null) { return; } this._contentFields = new Dictionary <string, List <string> >(StringComparer.OrdinalIgnoreCase); var encoder = this.GetEncoder(message.HTTPHeader.Fields["Content-Type"].First()); foreach (var pair in encoder.GetString(message.HTTPContent.Content).Split('&')) { var p = pair.Split('='); if (p.Length < 2) { continue; } if (!this._contentFields.ContainsKey(p[0])) { this._contentFields.Add(p[0], new List <string>()); } this._contentFields[p[0]].Add(p[1]); } }
public override void Init(HTTPMsg message) { this._headerFields = message.HTTPHeader.Fields; if (message.MessageType == MessageType.REQUEST) { var reqHeader = message.HTTPHeader as HttpRequestHeader; var uri = reqHeader.RequestURI.Split('?'); this._requestUri = uri[0]; this._requestUriParameters = new Dictionary <string, List <string> >(); if (uri.Length == 2) { foreach (var p in uri[1].Split('&').Select(pair => pair.Split('='))) { if (!this._requestUriParameters.ContainsKey(p[0])) { this._requestUriParameters[p[0]] = new List <string>(); } if (p.Length == 2) { this._requestUriParameters[p[0]].Add(p[1]); } } } } // Clone message is needed for later use of another soptters for every part this._clone = message.Clone(); this._clone.HTTPContent = this._clone.HTTPContent.Clone(); this._boundary = this.GetStringPart("boundary=", ";", message.HTTPHeader.Fields["Content-Type"].First()); var encoder = this.GetEncoder(message.HTTPHeader.Fields["Content-Type"].First()); this._content = encoder.GetString(message.HTTPContent.Content); this._boundariesIndices = new List <Int32>(); // mark boundaries var start = this._content.IndexOf(this._boundary, StringComparison.Ordinal); start = this._content.IndexOf("\r\n", start, StringComparison.Ordinal) + 1; this._boundariesIndices.Add(start); do { var end = this._content.IndexOf(this._boundary, start, StringComparison.Ordinal); if (end == -1) { break; } end = this._content.LastIndexOf("\r\n", end, StringComparison.Ordinal); this._boundariesIndices.Add(end); this._partCount++; start = this._content.IndexOf(this._boundary, start, StringComparison.Ordinal); if (end == -1) { break; } start = this._content.IndexOf("\r\n", start, StringComparison.Ordinal) + 1; this._boundariesIndices.Add(start); } while(true); }