Commit cc0fd15f authored by Brickner_cp's avatar Brickner_cp

HTTP

parent fffd905c
...@@ -90,6 +90,11 @@ namespace PcapDotNet.Base ...@@ -90,6 +90,11 @@ namespace PcapDotNet.Base
return sequence.SequenceToString(separator, string.Empty); return sequence.SequenceToString(separator, string.Empty);
} }
public static string SequenceToString<T>(this IEnumerable<T> sequence, char separator)
{
return sequence.SequenceToString(separator.ToString());
}
/// <summary> /// <summary>
/// Converts a sequence to a string by converting each element to a string. /// Converts a sequence to a string by converting each element to a string.
/// </summary> /// </summary>
......
...@@ -47,6 +47,11 @@ namespace PcapDotNet.Core.Test ...@@ -47,6 +47,11 @@ namespace PcapDotNet.Core.Test
Assert.AreEqual(element.Name(), expectedName); Assert.AreEqual(element.Name(), expectedName);
} }
public static void AssertNoShow(this XElement element)
{
Assert.IsNull(element.Attribute("show"));
}
public static void AssertShow(this XElement element, string expectedValue, string message = null) public static void AssertShow(this XElement element, string expectedValue, string message = null)
{ {
Assert.AreEqual(expectedValue, element.Show(), message ?? element.Name()); Assert.AreEqual(expectedValue, element.Show(), message ?? element.Name());
...@@ -134,7 +139,7 @@ namespace PcapDotNet.Core.Test ...@@ -134,7 +139,7 @@ namespace PcapDotNet.Core.Test
public static void AssertValue(this XElement element, string expectedValue, string message = null) public static void AssertValue(this XElement element, string expectedValue, string message = null)
{ {
Assert.AreEqual(element.Value(), expectedValue, message ?? element.Name()); Assert.AreEqual(expectedValue, element.Value(), message ?? element.Name());
} }
public static void AssertValue(this XElement element, IEnumerable<byte> expectedValue, string message = null) public static void AssertValue(this XElement element, IEnumerable<byte> expectedValue, string message = null)
......
...@@ -73,6 +73,13 @@ namespace PcapDotNet.Packets.Http ...@@ -73,6 +73,13 @@ namespace PcapDotNet.Packets.Http
public string Name { get; private set; } public string Name { get; private set; }
public ReadOnlyCollection<byte> Value { get; private set; } public ReadOnlyCollection<byte> Value { get; private set; }
public string ValueString
{
get
{
return _defaultEncoding.GetString(Value.ToArray());
}
}
public virtual bool Equals(HttpField other) public virtual bool Equals(HttpField other)
{ {
...@@ -86,12 +93,7 @@ namespace PcapDotNet.Packets.Http ...@@ -86,12 +93,7 @@ namespace PcapDotNet.Packets.Http
public override string ToString() public override string ToString()
{ {
return string.Format("{0}: {1}", Name, ValueToString()); return string.Format("{0}: {1}", Name, ValueString);
}
protected virtual string ValueToString()
{
return _defaultEncoding.GetString(Value.ToArray());
} }
private static readonly Encoding _defaultEncoding = Encoding.GetEncoding(28591); private static readonly Encoding _defaultEncoding = Encoding.GetEncoding(28591);
......
...@@ -20,6 +20,11 @@ namespace PcapDotNet.Packets.Http ...@@ -20,6 +20,11 @@ namespace PcapDotNet.Packets.Http
{ {
} }
public HttpField this[string fieldName]
{
get { return GetField<HttpField>(fieldName); }
}
public HttpTransferEncodingField TransferEncoding public HttpTransferEncodingField TransferEncoding
{ {
get get
...@@ -28,14 +33,6 @@ namespace PcapDotNet.Packets.Http ...@@ -28,14 +33,6 @@ namespace PcapDotNet.Packets.Http
} }
} }
private T GetField<T>(string fieldName) where T : HttpField
{
HttpField field;
if (!_fields.TryGetValue(fieldName, out field))
return null;
return (T)field;
}
public HttpContentLengthField ContentLength public HttpContentLengthField ContentLength
{ {
get get
...@@ -97,6 +94,14 @@ namespace PcapDotNet.Packets.Http ...@@ -97,6 +94,14 @@ namespace PcapDotNet.Packets.Http
_fields = mergedFields.ToDictionary(field => field.Key, field => HttpField.CreateField(field.Key, field.Value.ToArray()), StringComparer.InvariantCultureIgnoreCase); _fields = mergedFields.ToDictionary(field => field.Key, field => HttpField.CreateField(field.Key, field.Value.ToArray()), StringComparer.InvariantCultureIgnoreCase);
} }
private T GetField<T>(string fieldName) where T : HttpField
{
HttpField field;
if (!_fields.TryGetValue(fieldName, out field))
return null;
return (T)field;
}
private static readonly HttpHeader _empty = new HttpHeader(); private static readonly HttpHeader _empty = new HttpHeader();
private readonly Dictionary<string, HttpField> _fields = new Dictionary<string, HttpField>(StringComparer.InvariantCultureIgnoreCase); private readonly Dictionary<string, HttpField> _fields = new Dictionary<string, HttpField>(StringComparer.InvariantCultureIgnoreCase);
} }
......
...@@ -59,10 +59,10 @@ namespace PcapDotNet.Packets.Http ...@@ -59,10 +59,10 @@ namespace PcapDotNet.Packets.Http
SetTransferCodings(match.GroupCapturesValues(RegexTransferCodingGroupName).ToArray()); SetTransferCodings(match.GroupCapturesValues(RegexTransferCodingGroupName).ToArray());
} }
protected override string ValueToString() // protected override string ValueToString()
{ // {
return TransferCodings == null ? string.Empty : TransferCodings.SequenceToString(","); // return TransferCodings == null ? string.Empty : TransferCodings.SequenceToString(",");
} // }
private ReadOnlyCollection<string> _transferCodings; private ReadOnlyCollection<string> _transferCodings;
......
...@@ -29,9 +29,9 @@ namespace PcapDotNet.TestUtils ...@@ -29,9 +29,9 @@ namespace PcapDotNet.TestUtils
"> Actual: <" + actual + ">. " + message); "> Actual: <" + actual + ">. " + message);
} }
public static void IsBiggerOrEqual<T>(T expectedMaximum, T actual) where T : IComparable<T> public static void IsBiggerOrEqual<T>(T expectedMinimum, T actual) where T : IComparable<T>
{ {
IsBiggerOrEqual(expectedMaximum, actual, string.Empty); IsBiggerOrEqual(expectedMinimum, actual, string.Empty);
} }
public static void IsSmallerOrEqual<T>(T expectedMaximum, T actual, string message) where T : IComparable<T> public static void IsSmallerOrEqual<T>(T expectedMaximum, T actual, string message) where T : IComparable<T>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment