diff --git a/websocket-sharp/Ext.cs b/websocket-sharp/Ext.cs index 045c4f50..7e39302e 100644 --- a/websocket-sharp/Ext.cs +++ b/websocket-sharp/Ext.cs @@ -51,11 +51,11 @@ using WebSocketSharp.Server; namespace WebSocketSharp { /// - /// Provides a set of static methods for the websocket-sharp. + /// Provides a set of static methods for websocket-sharp. /// public static class Ext { - #region Private Const Fields + #region Private Fields private const string _tspecials = "()<>@,;:\\\"/[]?={} \t"; @@ -63,15 +63,14 @@ namespace WebSocketSharp #region Private Methods - private static byte [] compress (this byte [] value) + private static byte[] compress (this byte[] data) { - if (value.LongLength == 0) - //return new Byte [] { 0x00, 0x00, 0x00, 0xff, 0xff }; - return value; + if (data.LongLength == 0) + //return new Byte[] { 0x00, 0x00, 0x00, 0xff, 0xff }; + return data; - using (var input = new MemoryStream (value)) { + using (var input = new MemoryStream (data)) return input.compressToArray (); - } } private static MemoryStream compress (this Stream stream) @@ -90,22 +89,21 @@ namespace WebSocketSharp } } - private static byte [] compressToArray (this Stream stream) + private static byte[] compressToArray (this Stream stream) { - using (var comp = stream.compress ()) { - comp.Close (); - return comp.ToArray (); + using (var output = stream.compress ()) { + output.Close (); + return output.ToArray (); } } - private static byte [] decompress (this byte [] value) + private static byte[] decompress (this byte[] data) { - if (value.LongLength == 0) - return value; + if (data.LongLength == 0) + return data; - using (var input = new MemoryStream (value)) { + using (var input = new MemoryStream (data)) return input.decompressToArray (); - } } private static MemoryStream decompress (this Stream stream) @@ -121,15 +119,15 @@ namespace WebSocketSharp } } - private static byte [] decompressToArray (this Stream stream) + private static byte[] decompressToArray (this Stream stream) { - using (var decomp = stream.decompress ()) { - decomp.Close (); - return decomp.ToArray (); + using (var output = stream.decompress ()) { + output.Close (); + return output.ToArray (); } } - private static byte [] readBytes (this Stream stream, byte [] buffer, int offset, int length) + private static byte[] readBytes (this Stream stream, byte[] buffer, int offset, int length) { var len = stream.Read (buffer, offset, length); if (len < 1) @@ -150,7 +148,7 @@ namespace WebSocketSharp } private static bool readBytes ( - this Stream stream, byte [] buffer, int offset, int length, Stream dest) + this Stream stream, byte[] buffer, int offset, int length, Stream dest) { var bytes = stream.readBytes (buffer, offset, length); var len = bytes.Length; @@ -169,25 +167,25 @@ namespace WebSocketSharp #region Internal Methods - internal static byte [] Append (this ushort code, string reason) + internal static byte[] Append (this ushort code, string reason) { - using (var buffer = new MemoryStream ()) { + using (var buff = new MemoryStream ()) { var tmp = code.ToByteArrayInternally (ByteOrder.Big); - buffer.Write (tmp, 0, 2); + buff.Write (tmp, 0, 2); if (reason != null && reason.Length > 0) { tmp = Encoding.UTF8.GetBytes (reason); - buffer.Write (tmp, 0, tmp.Length); + buff.Write (tmp, 0, tmp.Length); } - buffer.Close (); - return buffer.ToArray (); + buff.Close (); + return buff.ToArray (); } } internal static string CheckIfCanRead (this Stream stream) { return stream == null - ? "'stream' must not be null." + ? "'stream' is null." : !stream.CanRead ? "'stream' cannot be read." : null; @@ -247,14 +245,14 @@ namespace WebSocketSharp : null; } - internal static string CheckIfValidControlData (this byte [] data, string paramName) + internal static string CheckIfValidControlData (this byte[] data, string paramName) { return data.Length > 125 - ? String.Format ("'{0}' length must be less.", paramName) + ? String.Format ("'{0}' is greater than the allowable size.", paramName) : null; } - internal static string CheckIfValidProtocols (this string [] protocols) + internal static string CheckIfValidProtocols (this string[] protocols) { return protocols.Contains ( protocol => protocol == null || protocol.Length == 0 || !protocol.IsToken ()) @@ -264,42 +262,42 @@ namespace WebSocketSharp : null; } - internal static string CheckIfValidSendData (this byte [] data) + internal static string CheckIfValidSendData (this byte[] data) { return data == null - ? "'data' must not be null." + ? "'data' is null." : null; } internal static string CheckIfValidSendData (this FileInfo file) { return file == null - ? "'file' must not be null." + ? "'file' is null." : null; } internal static string CheckIfValidSendData (this string data) { return data == null - ? "'data' must not be null." + ? "'data' is null." : null; } internal static string CheckIfValidServicePath (this string servicePath) { return servicePath == null || servicePath.Length == 0 - ? "'servicePath' must not be null or empty." - : servicePath [0] != '/' - ? "'servicePath' not absolute path." - : servicePath.IndexOfAny (new [] {'?', '#'}) != -1 - ? "'servicePath' must not contain either or both query and fragment components." + ? "'servicePath' is null or empty." + : servicePath[0] != '/' + ? "'servicePath' isn't absolute path." + : servicePath.IndexOfAny (new[] {'?', '#'}) != -1 + ? "'servicePath' contains either or both query and fragment components." : null; } internal static string CheckIfValidSessionID (this string id) { return id == null || id.Length == 0 - ? "'id' must not be null or empty." + ? "'id' is null or empty." : null; } @@ -316,11 +314,11 @@ namespace WebSocketSharp response.Close (HttpStatusCode.Unauthorized); } - internal static byte [] Compress (this byte [] value, CompressionMethod method) + internal static byte[] Compress (this byte[] data, CompressionMethod method) { return method == CompressionMethod.Deflate - ? value.compress () - : value; + ? data.compress () + : data; } internal static Stream Compress (this Stream stream, CompressionMethod method) @@ -330,7 +328,7 @@ namespace WebSocketSharp : stream; } - internal static byte [] CompressToArray (this Stream stream, CompressionMethod method) + internal static byte[] CompressToArray (this Stream stream, CompressionMethod method) { return method == CompressionMethod.Deflate ? stream.compressToArray () @@ -346,18 +344,18 @@ namespace WebSocketSharp return false; } - internal static bool ContainsTwice (this string [] values) + internal static bool ContainsTwice (this string[] values) { var len = values.Length; Func contains = null; - contains = index => { - if (index < len - 1) { - for (var i = index + 1; i < len; i++) - if (values [i] == values [index]) + contains = idx => { + if (idx < len - 1) { + for (var i = idx + 1; i < len; i++) + if (values[i] == values[idx]) return true; - return contains (++index); + return contains (++idx); } return false; @@ -366,9 +364,9 @@ namespace WebSocketSharp return contains (0); } - internal static T [] Copy (this T [] src, long length) + internal static T[] Copy (this T[] src, long length) { - var dest = new T [length]; + var dest = new T[length]; Array.Copy (src, 0, dest, 0, length); return dest; @@ -382,21 +380,20 @@ namespace WebSocketSharp internal static void CopyTo (this Stream src, Stream dest, bool setDefaultPosition) { var readLen = 0; - var bufferLen = 256; - var buffer = new byte [bufferLen]; - while ((readLen = src.Read (buffer, 0, bufferLen)) > 0) { - dest.Write (buffer, 0, readLen); - } + var buffLen = 256; + var buff = new byte[buffLen]; + while ((readLen = src.Read (buff, 0, buffLen)) > 0) + dest.Write (buff, 0, readLen); if (setDefaultPosition) dest.Position = 0; } - internal static byte [] Decompress (this byte [] value, CompressionMethod method) + internal static byte[] Decompress (this byte[] data, CompressionMethod method) { return method == CompressionMethod.Deflate - ? value.decompress () - : value; + ? data.decompress () + : data; } internal static Stream Decompress (this Stream stream, CompressionMethod method) @@ -406,7 +403,7 @@ namespace WebSocketSharp : stream; } - internal static byte [] DecompressToArray (this Stream stream, CompressionMethod method) + internal static byte[] DecompressToArray (this Stream stream, CompressionMethod method) { return method == CompressionMethod.Deflate ? stream.decompressToArray () @@ -452,7 +449,7 @@ namespace WebSocketSharp /// otherwise, . /// /// - /// A that represents a URI to get the absolute path from. + /// A that represents the URI to get the absolute path from. /// internal static string GetAbsolutePath (this Uri uri) { @@ -460,10 +457,10 @@ namespace WebSocketSharp return uri.AbsolutePath; var original = uri.OriginalString; - if (original [0] != '/') + if (original[0] != '/') return null; - var i = original.IndexOfAny (new [] {'?', '#'}); + var i = original.IndexOfAny (new[] {'?', '#'}); return i > 0 ? original.Substring (0, i) : original; @@ -484,7 +481,7 @@ namespace WebSocketSharp : code == CloseStatusCode.TooBig ? "A too big data has been received." : code == CloseStatusCode.IgnoreExtension - ? "WebSocket client did not receive expected extension(s)." + ? "WebSocket client didn't receive expected extension(s)." : code == CloseStatusCode.ServerError ? "WebSocket server got an internal error." : code == CloseStatusCode.TlsHandshakeFailure @@ -492,7 +489,21 @@ namespace WebSocketSharp : String.Empty; } - internal static string GetNameInternal (this string nameAndValue, string separator) + /// + /// Gets the name from the specified that contains a pair of name and + /// value separated by a separator character. + /// + /// + /// A that represents the name if any; otherwise, null. + /// + /// + /// A that contains a pair of name and value separated by a separator + /// character. + /// + /// + /// A that represents the separator character. + /// + internal static string GetName (this string nameAndValue, char separator) { var i = nameAndValue.IndexOf (separator); return i > 0 @@ -500,15 +511,29 @@ namespace WebSocketSharp : null; } - internal static string GetValueInternal (this string nameAndValue, string separator) + /// + /// Gets the value from the specified that contains a pair of name and + /// value separated by a separator character. + /// + /// + /// A that represents the value if any; otherwise, null. + /// + /// + /// A that contains a pair of name and value separated by a separator + /// character. + /// + /// + /// A that represents the separator character. + /// + internal static string GetValue (this string nameAndValue, char separator) { var i = nameAndValue.IndexOf (separator); - return i >= 0 && i < nameAndValue.Length - 1 + return i > -1 && i < nameAndValue.Length - 1 ? nameAndValue.Substring (i + 1).Trim () : null; } - internal static string GetValue (this string nameAndValue, string separator, bool unquote) + internal static string GetValue (this string nameAndValue, char separator, bool unquote) { var i = nameAndValue.IndexOf (separator); if (i < 0 || i == nameAndValue.Length - 1) @@ -562,7 +587,7 @@ namespace WebSocketSharp { var len = value.Length; for (var i = 0; i < len; i++) { - char c = value [i]; + char c = value[i]; if (c < 0x20 && !"\r\n\t".Contains (c)) return false; @@ -570,7 +595,7 @@ namespace WebSocketSharp return false; if (c == '\n' && ++i < len) { - c = value [i]; + c = value[i]; if (!" \t".Contains (c)) return false; } @@ -595,50 +620,50 @@ namespace WebSocketSharp : String.Format ("\"{0}\"", value.Replace ("\"", "\\\"")); } - internal static byte [] ReadBytes (this Stream stream, int length) + internal static byte[] ReadBytes (this Stream stream, int length) { - return stream.readBytes (new byte [length], 0, length); + return stream.readBytes (new byte[length], 0, length); } - internal static byte [] ReadBytes (this Stream stream, long length, int bufferLength) + internal static byte[] ReadBytes (this Stream stream, long length, int bufferLength) { - using (var result = new MemoryStream ()) { - var count = length / bufferLength; + using (var res = new MemoryStream ()) { + var cnt = length / bufferLength; var rem = (int) (length % bufferLength); - var buffer = new byte [bufferLength]; + var buff = new byte[bufferLength]; var end = false; - for (long i = 0; i < count; i++) { - if (!stream.readBytes (buffer, 0, bufferLength, result)) { + for (long i = 0; i < cnt; i++) { + if (!stream.readBytes (buff, 0, bufferLength, res)) { end = true; break; } } if (!end && rem > 0) - stream.readBytes (new byte [rem], 0, rem, result); + stream.readBytes (new byte[rem], 0, rem, res); - result.Close (); - return result.ToArray (); + res.Close (); + return res.ToArray (); } } internal static void ReadBytesAsync ( - this Stream stream, int length, Action completed, Action error) + this Stream stream, int length, Action completed, Action error) { - var buffer = new byte [length]; + var buff = new byte[length]; stream.BeginRead ( - buffer, + buff, 0, length, ar => { try { var len = stream.EndRead (ar); var bytes = len < 1 - ? new byte [0] - : len < length - ? stream.readBytes (buffer, len, length - len) - : buffer; + ? new byte[0] + : len < length + ? stream.readBytes (buff, len, length - len) + : buff; if (completed != null) completed (bytes); @@ -651,7 +676,7 @@ namespace WebSocketSharp null); } - internal static string RemovePrefix (this string value, params string [] prefixes) + internal static string RemovePrefix (this string value, params string[] prefixes) { var i = 0; foreach (var prefix in prefixes) { @@ -666,31 +691,31 @@ namespace WebSocketSharp : value; } - internal static T [] Reverse (this T [] array) + internal static T[] Reverse (this T[] array) { var len = array.Length; - T [] reverse = new T [len]; + var reverse = new T[len]; var end = len - 1; for (var i = 0; i <= end; i++) - reverse [i] = array [end - i]; + reverse[i] = array[end - i]; return reverse; } internal static IEnumerable SplitHeaderValue ( - this string value, params char [] separator) + this string value, params char[] separator) { var len = value.Length; var separators = new string (separator); - var buffer = new StringBuilder (32); + var buff = new StringBuilder (32); var quoted = false; var escaped = false; char c; for (var i = 0; i < len; i++) { - c = value [i]; + c = value[i]; if (c == '"') { if (escaped) escaped = !escaped; @@ -698,13 +723,13 @@ namespace WebSocketSharp quoted = !quoted; } else if (c == '\\') { - if (i < len - 1 && value [i + 1] == '"') + if (i < len - 1 && value[i + 1] == '"') escaped = true; } else if (separators.Contains (c)) { if (!quoted) { - yield return buffer.ToString (); - buffer.Length = 0; + yield return buff.ToString (); + buff.Length = 0; continue; } @@ -712,14 +737,14 @@ namespace WebSocketSharp else { } - buffer.Append (c); + buff.Append (c); } - if (buffer.Length > 0) - yield return buffer.ToString (); + if (buff.Length > 0) + yield return buff.ToString (); } - internal static byte [] ToByteArray (this Stream stream) + internal static byte[] ToByteArray (this Stream stream) { using (var output = new MemoryStream ()) { stream.Position = 0; @@ -730,7 +755,7 @@ namespace WebSocketSharp } } - internal static byte [] ToByteArrayInternally (this ushort value, ByteOrder order) + internal static byte[] ToByteArrayInternally (this ushort value, ByteOrder order) { var bytes = BitConverter.GetBytes (value); if (!order.IsHostOrder ()) @@ -739,7 +764,7 @@ namespace WebSocketSharp return bytes; } - internal static byte [] ToByteArrayInternally (this ulong value, ByteOrder order) + internal static byte[] ToByteArrayInternally (this ulong value, ByteOrder order) { var bytes = BitConverter.GetBytes (value); if (!order.IsHostOrder ()) @@ -768,7 +793,7 @@ namespace WebSocketSharp { try { var addrs = System.Net.Dns.GetHostAddresses (hostNameOrAddress); - return addrs [0]; + return addrs[0]; } catch { return null; @@ -780,12 +805,12 @@ namespace WebSocketSharp return new List (source); } - internal static ushort ToUInt16 (this byte [] src, ByteOrder srcOrder) + internal static ushort ToUInt16 (this byte[] src, ByteOrder srcOrder) { return BitConverter.ToUInt16 (src.ToHostOrder (srcOrder), 0); } - internal static ulong ToUInt64 (this byte [] src, ByteOrder srcOrder) + internal static ulong ToUInt64 (this byte[] src, ByteOrder srcOrder) { return BitConverter.ToUInt64 (src.ToHostOrder (srcOrder), 0); } @@ -821,46 +846,43 @@ namespace WebSocketSharp { result = null; if (uriString.Length == 0) { - message = "Must not be empty."; + message = "Empty string."; return false; } var uri = uriString.ToUri (); if (!uri.IsAbsoluteUri) { - message = "Must be the absolute URI: " + uriString; + message = "Not absolute URI: " + uriString; return false; } - var scheme = uri.Scheme; - if (scheme != "ws" && scheme != "wss") { - message = "The scheme part must be 'ws' or 'wss': " + scheme; + var schm = uri.Scheme; + if (schm != "ws" && schm != "wss") { + message = "The scheme part isn't 'ws' or 'wss': " + uriString; return false; } - var fragment = uri.Fragment; - if (fragment.Length > 0) { - message = "Must not contain the fragment component: " + uriString; + if (uri.Fragment.Length > 0) { + message = "Contains the fragment component: " + uriString; return false; } var port = uri.Port; if (port > 0) { if (port > 65535) { - message = "The port part must be between 1 and 65535: " + port; + message = "The port part is greater than 65535: " + uriString; return false; } - if ((scheme == "ws" && port == 443) || (scheme == "wss" && port == 80)) { - message = String.Format ( - "Invalid pair of scheme and port: {0}, {1}", scheme, port); + if ((schm == "ws" && port == 443) || (schm == "wss" && port == 80)) { + message = "Invalid pair of scheme and port: " + uriString; return false; } } else { - port = scheme == "ws" ? 80 : 443; - var url = String.Format ( - "{0}://{1}:{2}{3}", scheme, uri.Host, port, uri.PathAndQuery); - uri = url.ToUri (); + uri = String.Format ( + "{0}://{1}:{2}{3}", schm, uri.Host, schm == "ws" ? 80 : 443, uri.PathAndQuery) + .ToUri (); } result = uri; @@ -871,19 +893,18 @@ namespace WebSocketSharp internal static string Unquote (this string value) { - var start = value.IndexOf ('\"'); - var end = value.LastIndexOf ('\"'); + var start = value.IndexOf ('"'); + var end = value.LastIndexOf ('"'); if (start < end) value = value.Substring (start + 1, end - start - 1).Replace ("\\\"", "\""); return value.Trim (); } - internal static void WriteBytes (this Stream stream, byte [] value) + internal static void WriteBytes (this Stream stream, byte[] data) { - using (var src = new MemoryStream (value)) { - src.CopyTo (stream); - } + using (var input = new MemoryStream (data)) + input.CopyTo (stream); } #endregion @@ -904,7 +925,7 @@ namespace WebSocketSharp /// /// An array of that contains characters to find. /// - public static bool Contains (this string value, params char [] chars) + public static bool Contains (this string value, params char[] chars) { return chars == null || chars.Length == 0 ? true @@ -931,7 +952,7 @@ namespace WebSocketSharp { return collection == null || collection.Count == 0 ? false - : collection [name] != null; + : collection[name] != null; } /// @@ -939,9 +960,8 @@ namespace WebSocketSharp /// with the specified both and . /// /// - /// true if contains the entry - /// with both and ; - /// otherwise, false. + /// true if contains the entry with both + /// and ; otherwise, false. /// /// /// A to test. @@ -957,12 +977,12 @@ namespace WebSocketSharp if (collection == null || collection.Count == 0) return false; - var values = collection [name]; - if (values == null) + var vals = collection[name]; + if (vals == null) return false; - foreach (var v in values.Split (',')) - if (v.Trim ().Equals (value, StringComparison.OrdinalIgnoreCase)) + foreach (var val in vals.Split (',')) + if (val.Trim ().Equals (value, StringComparison.OrdinalIgnoreCase)) return true; return false; @@ -1028,7 +1048,7 @@ namespace WebSocketSharp var name = response ? "Set-Cookie" : "Cookie"; return headers == null || !headers.Contains (name) ? new CookieCollection () - : CookieCollection.Parse (headers [name], response); + : CookieCollection.Parse (headers[name], response); } /// @@ -1038,59 +1058,13 @@ namespace WebSocketSharp /// A that represents the description of the HTTP status code. /// /// - /// One of enum values, indicates the HTTP status codes. + /// One of enum values, indicates the HTTP status code. /// public static string GetDescription (this HttpStatusCode code) { return ((int) code).GetStatusDescription (); } - /// - /// Gets the name from the specified that contains a pair of name and - /// value separated by a separator string. - /// - /// - /// A that represents the name if any; otherwise, null. - /// - /// - /// A that contains a pair of name and value separated by a separator - /// string. - /// - /// - /// A that represents a separator string. - /// - public static string GetName (this string nameAndValue, string separator) - { - return (nameAndValue != null && nameAndValue.Length > 0) && - (separator != null && separator.Length > 0) - ? nameAndValue.GetNameInternal (separator) - : null; - } - - /// - /// Gets the name and value from the specified that contains a pair of - /// name and value separated by a separator string. - /// - /// - /// A KeyValuePair<string, string> that represents the name and value if any. - /// - /// - /// A that contains a pair of name and value separated by a separator - /// string. - /// - /// - /// A that represents a separator string. - /// - public static KeyValuePair GetNameAndValue ( - this string nameAndValue, string separator) - { - var name = nameAndValue.GetName (separator); - var value = nameAndValue.GetValue (separator); - return name != null - ? new KeyValuePair (name, value) - : new KeyValuePair (null, null); - } - /// /// Gets the description of the specified HTTP status . /// @@ -1154,34 +1128,12 @@ namespace WebSocketSharp return String.Empty; } - /// - /// Gets the value from the specified that contains a pair of name and - /// value separated by a separator string. - /// - /// - /// A that represents the value if any; otherwise, null. - /// - /// - /// A that contains a pair of name and value separated by a separator - /// string. - /// - /// - /// A that represents a separator string. - /// - public static string GetValue (this string nameAndValue, string separator) - { - return (nameAndValue != null && nameAndValue.Length > 0) && - (separator != null && separator.Length > 0) - ? nameAndValue.GetValueInternal (separator) - : null; - } - /// /// Determines whether the specified is in the allowable range of /// the WebSocket close status code. /// /// - /// Not allowable ranges are the followings. + /// Not allowable ranges are the following: /// /// /// @@ -1225,17 +1177,16 @@ namespace WebSocketSharp { return value != null && value.Length > 1 && - value [0] == c && - value [value.Length - 1] == c; + value[0] == c && + value[value.Length - 1] == c; } /// - /// Determines whether the specified is host - /// (this computer architecture) byte order. + /// Determines whether the specified is host (this computer + /// architecture) byte order. /// /// - /// true if is host byte order; - /// otherwise, false. + /// true if is host byte order; otherwise, false. /// /// /// One of the enum values, to test. @@ -1307,7 +1258,7 @@ namespace WebSocketSharp if (value == null || value.Length < 2) return false; - var c = value [0]; + var c = value[0]; if (c == 'h') return value == "http" || value == "https"; @@ -1318,7 +1269,7 @@ namespace WebSocketSharp return value == "file" || value == "ftp"; if (c == 'n') { - c = value [1]; + c = value[1]; return c == 'e' ? value == "news" || value == "net.pipe" || value == "net.tcp" : value == "nntp"; @@ -1364,7 +1315,7 @@ namespace WebSocketSharp throw new ArgumentNullException ("protocol"); if (protocol.Length == 0) - throw new ArgumentException ("Must not be empty.", "protocol"); + throw new ArgumentException ("Empty string.", "protocol"); return request.Headers.Contains ("Upgrade", protocol) && request.Headers.Contains ("Connection", "Upgrade"); @@ -1415,21 +1366,21 @@ namespace WebSocketSharp /// /// The type of elements in the . /// - public static T [] SubArray (this T [] array, int startIndex, int length) + public static T[] SubArray (this T[] array, int startIndex, int length) { if (array == null || array.Length == 0) - return new T [0]; + return new T[0]; if (startIndex < 0 || length <= 0) - return new T [0]; + return new T[0]; if (startIndex + length > array.Length) - return new T [0]; + return new T[0]; if (startIndex == 0 && array.Length == length) return array; - T [] subArray = new T [length]; + var subArray = new T[length]; Array.Copy (array, startIndex, subArray, 0, length); return subArray; @@ -1590,7 +1541,7 @@ namespace WebSocketSharp /// /// is . /// - public static T To (this byte [] src, ByteOrder srcOrder) + public static T To (this byte[] src, ByteOrder srcOrder) where T : struct { if (src == null) @@ -1600,28 +1551,28 @@ namespace WebSocketSharp return default (T); var type = typeof (T); - var buffer = src.ToHostOrder (srcOrder); + var buff = src.ToHostOrder (srcOrder); return type == typeof (Boolean) - ? (T)(object) BitConverter.ToBoolean (buffer, 0) + ? (T)(object) BitConverter.ToBoolean (buff, 0) : type == typeof (Char) - ? (T)(object) BitConverter.ToChar (buffer, 0) + ? (T)(object) BitConverter.ToChar (buff, 0) : type == typeof (Double) - ? (T)(object) BitConverter.ToDouble (buffer, 0) + ? (T)(object) BitConverter.ToDouble (buff, 0) : type == typeof (Int16) - ? (T)(object) BitConverter.ToInt16 (buffer, 0) + ? (T)(object) BitConverter.ToInt16 (buff, 0) : type == typeof (Int32) - ? (T)(object) BitConverter.ToInt32 (buffer, 0) + ? (T)(object) BitConverter.ToInt32 (buff, 0) : type == typeof (Int64) - ? (T)(object) BitConverter.ToInt64 (buffer, 0) + ? (T)(object) BitConverter.ToInt64 (buff, 0) : type == typeof (Single) - ? (T)(object) BitConverter.ToSingle (buffer, 0) + ? (T)(object) BitConverter.ToSingle (buff, 0) : type == typeof (UInt16) - ? (T)(object) BitConverter.ToUInt16 (buffer, 0) + ? (T)(object) BitConverter.ToUInt16 (buff, 0) : type == typeof (UInt32) - ? (T)(object) BitConverter.ToUInt32 (buffer, 0) + ? (T)(object) BitConverter.ToUInt32 (buff, 0) : type == typeof (UInt64) - ? (T)(object) BitConverter.ToUInt64 (buffer, 0) + ? (T)(object) BitConverter.ToUInt64 (buff, 0) : default (T); } @@ -1640,33 +1591,33 @@ namespace WebSocketSharp /// /// The type of . The T must be a value type. /// - public static byte [] ToByteArray (this T value, ByteOrder order) + public static byte[] ToByteArray (this T value, ByteOrder order) where T : struct { var type = typeof (T); var bytes = type == typeof (Boolean) - ? BitConverter.GetBytes ((Boolean)(object) value) - : type == typeof (Byte) - ? new byte [] { (Byte)(object) value } - : type == typeof (Char) - ? BitConverter.GetBytes ((Char)(object) value) - : type == typeof (Double) - ? BitConverter.GetBytes ((Double)(object) value) - : type == typeof (Int16) - ? BitConverter.GetBytes ((Int16)(object) value) - : type == typeof (Int32) - ? BitConverter.GetBytes ((Int32)(object) value) - : type == typeof (Int64) - ? BitConverter.GetBytes ((Int64)(object) value) - : type == typeof (Single) - ? BitConverter.GetBytes ((Single)(object) value) - : type == typeof (UInt16) - ? BitConverter.GetBytes ((UInt16)(object) value) - : type == typeof (UInt32) - ? BitConverter.GetBytes ((UInt32)(object) value) - : type == typeof (UInt64) - ? BitConverter.GetBytes ((UInt64)(object) value) - : new byte [0]; + ? BitConverter.GetBytes ((Boolean)(object) value) + : type == typeof (Byte) + ? new byte[] { (Byte)(object) value } + : type == typeof (Char) + ? BitConverter.GetBytes ((Char)(object) value) + : type == typeof (Double) + ? BitConverter.GetBytes ((Double)(object) value) + : type == typeof (Int16) + ? BitConverter.GetBytes ((Int16)(object) value) + : type == typeof (Int32) + ? BitConverter.GetBytes ((Int32)(object) value) + : type == typeof (Int64) + ? BitConverter.GetBytes ((Int64)(object) value) + : type == typeof (Single) + ? BitConverter.GetBytes ((Single)(object) value) + : type == typeof (UInt16) + ? BitConverter.GetBytes ((UInt16)(object) value) + : type == typeof (UInt32) + ? BitConverter.GetBytes ((UInt32)(object) value) + : type == typeof (UInt64) + ? BitConverter.GetBytes ((UInt64)(object) value) + : new byte[0]; if (bytes.Length > 1 && !order.IsHostOrder ()) Array.Reverse (bytes); @@ -1690,7 +1641,7 @@ namespace WebSocketSharp /// /// is . /// - public static byte [] ToHostOrder (this byte [] src, ByteOrder srcOrder) + public static byte[] ToHostOrder (this byte[] src, ByteOrder srcOrder) { if (src == null) throw new ArgumentNullException ("src"); @@ -1721,7 +1672,7 @@ namespace WebSocketSharp /// /// is . /// - public static string ToString (this T [] array, string separator) + public static string ToString (this T[] array, string separator) { if (array == null) throw new ArgumentNullException ("array"); @@ -1733,11 +1684,11 @@ namespace WebSocketSharp if (separator == null) separator = String.Empty; - var buffer = new StringBuilder (64); - (len - 1).Times (i => buffer.AppendFormat ("{0}{1}", array [i].ToString (), separator)); + var buff = new StringBuilder (64); + (len - 1).Times (i => buff.AppendFormat ("{0}{1}", array[i].ToString (), separator)); - buffer.Append (array [len - 1].ToString ()); - return buffer.ToString (); + buff.Append (array[len - 1].ToString ()); + return buff.ToString (); } /// @@ -1807,17 +1758,18 @@ namespace WebSocketSharp /// /// is . /// - public static void WriteContent (this HttpListenerResponse response, byte [] content) + public static void WriteContent (this HttpListenerResponse response, byte[] content) { if (response == null) throw new ArgumentNullException ("response"); - if (content == null || content.Length == 0) + var len = 0; + if (content == null || (len = content.Length) == 0) return; var output = response.OutputStream; - response.ContentLength64 = content.Length; - output.Write (content, 0, content.Length); + response.ContentLength64 = len; + output.Write (content, 0, len); output.Close (); } diff --git a/websocket-sharp/Net/CookieCollection.cs b/websocket-sharp/Net/CookieCollection.cs index 389674eb..8db5ca17 100644 --- a/websocket-sharp/Net/CookieCollection.cs +++ b/websocket-sharp/Net/CookieCollection.cs @@ -227,20 +227,20 @@ namespace WebSocketSharp.Net continue; if (pair.StartsWith ("$version", StringComparison.InvariantCultureIgnoreCase)) { - version = Int32.Parse (pair.GetValueInternal ("=").Trim ('"')); + version = Int32.Parse (pair.GetValue ('=', true)); } else if (pair.StartsWith ("$path", StringComparison.InvariantCultureIgnoreCase)) { if (cookie != null) - cookie.Path = pair.GetValueInternal ("="); + cookie.Path = pair.GetValue ('='); } else if (pair.StartsWith ("$domain", StringComparison.InvariantCultureIgnoreCase)) { if (cookie != null) - cookie.Domain = pair.GetValueInternal ("="); + cookie.Domain = pair.GetValue ('='); } else if (pair.StartsWith ("$port", StringComparison.InvariantCultureIgnoreCase)) { var port = pair.Equals ("$port", StringComparison.InvariantCultureIgnoreCase) ? "\"\"" - : pair.GetValueInternal ("="); + : pair.GetValue ('='); if (cookie != null) cookie.Port = port; @@ -289,10 +289,10 @@ namespace WebSocketSharp.Net if (pair.StartsWith ("version", StringComparison.InvariantCultureIgnoreCase)) { if (cookie != null) - cookie.Version = Int32.Parse (pair.GetValueInternal ("=").Trim ('"')); + cookie.Version = Int32.Parse (pair.GetValue ('=', true)); } else if (pair.StartsWith ("expires", StringComparison.InvariantCultureIgnoreCase)) { - var buffer = new StringBuilder (pair.GetValueInternal ("="), 32); + var buffer = new StringBuilder (pair.GetValue ('='), 32); if (i < pairs.Length - 1) buffer.AppendFormat (", {0}", pairs [++i].Trim ()); @@ -309,34 +309,34 @@ namespace WebSocketSharp.Net cookie.Expires = expires.ToLocalTime (); } else if (pair.StartsWith ("max-age", StringComparison.InvariantCultureIgnoreCase)) { - var max = Int32.Parse (pair.GetValueInternal ("=").Trim ('"')); + var max = Int32.Parse (pair.GetValue ('=', true)); var expires = DateTime.Now.AddSeconds ((double) max); if (cookie != null) cookie.Expires = expires; } else if (pair.StartsWith ("path", StringComparison.InvariantCultureIgnoreCase)) { if (cookie != null) - cookie.Path = pair.GetValueInternal ("="); + cookie.Path = pair.GetValue ('='); } else if (pair.StartsWith ("domain", StringComparison.InvariantCultureIgnoreCase)) { if (cookie != null) - cookie.Domain = pair.GetValueInternal ("="); + cookie.Domain = pair.GetValue ('='); } else if (pair.StartsWith ("port", StringComparison.InvariantCultureIgnoreCase)) { var port = pair.Equals ("port", StringComparison.InvariantCultureIgnoreCase) ? "\"\"" - : pair.GetValueInternal ("="); + : pair.GetValue ('='); if (cookie != null) cookie.Port = port; } else if (pair.StartsWith ("comment", StringComparison.InvariantCultureIgnoreCase)) { if (cookie != null) - cookie.Comment = pair.GetValueInternal ("=").UrlDecode (); + cookie.Comment = pair.GetValue ('=').UrlDecode (); } else if (pair.StartsWith ("commenturl", StringComparison.InvariantCultureIgnoreCase)) { if (cookie != null) - cookie.CommentUri = pair.GetValueInternal ("=").Trim ('"').ToUri (); + cookie.CommentUri = pair.GetValue ('=', true).ToUri (); } else if (pair.StartsWith ("discard", StringComparison.InvariantCultureIgnoreCase)) { if (cookie != null) diff --git a/websocket-sharp/Net/HttpListenerRequest.cs b/websocket-sharp/Net/HttpListenerRequest.cs index b30652a4..ec0211ff 100644 --- a/websocket-sharp/Net/HttpListenerRequest.cs +++ b/websocket-sharp/Net/HttpListenerRequest.cs @@ -522,7 +522,7 @@ namespace WebSocketSharp.Net foreach (var p in parts) { var part = p.Trim (); if (part.StartsWith ("charset", StringComparison.OrdinalIgnoreCase)) { - var charset = part.GetValue ("=", true); + var charset = part.GetValue ('=', true); if (charset != null && charset.Length > 0) { try { _contentEncoding = Encoding.GetEncoding (charset);