|
|
|
@ -57,11 +57,9 @@ namespace WebSocketSharp
|
|
|
|
|
|
|
|
|
|
|
|
public HandshakeRequest (string uriString)
|
|
|
|
public HandshakeRequest (string uriString)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_method = "GET";
|
|
|
|
|
|
|
|
_uri = uriString.ToUri ();
|
|
|
|
_uri = uriString.ToUri ();
|
|
|
|
_rawUrl = _uri.IsAbsoluteUri
|
|
|
|
_rawUrl = _uri.IsAbsoluteUri ? _uri.PathAndQuery : uriString;
|
|
|
|
? _uri.PathAndQuery
|
|
|
|
_method = "GET";
|
|
|
|
: uriString;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var headers = Headers;
|
|
|
|
var headers = Headers;
|
|
|
|
headers ["User-Agent"] = "websocket-sharp/1.0";
|
|
|
|
headers ["User-Agent"] = "websocket-sharp/1.0";
|
|
|
|
@ -76,7 +74,7 @@ namespace WebSocketSharp
|
|
|
|
public AuthenticationResponse AuthResponse {
|
|
|
|
public AuthenticationResponse AuthResponse {
|
|
|
|
get {
|
|
|
|
get {
|
|
|
|
var response = Headers ["Authorization"];
|
|
|
|
var response = Headers ["Authorization"];
|
|
|
|
return !response.IsNullOrEmpty ()
|
|
|
|
return response != null && response.Length > 0
|
|
|
|
? AuthenticationResponse.Parse (response)
|
|
|
|
? AuthenticationResponse.Parse (response)
|
|
|
|
: null;
|
|
|
|
: null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -112,6 +110,7 @@ namespace WebSocketSharp
|
|
|
|
get {
|
|
|
|
get {
|
|
|
|
if (_queryString == null) {
|
|
|
|
if (_queryString == null) {
|
|
|
|
_queryString = new NameValueCollection ();
|
|
|
|
_queryString = new NameValueCollection ();
|
|
|
|
|
|
|
|
|
|
|
|
var i = RawUrl.IndexOf ('?');
|
|
|
|
var i = RawUrl.IndexOf ('?');
|
|
|
|
if (i > 0) {
|
|
|
|
if (i > 0) {
|
|
|
|
var query = RawUrl.Substring (i + 1);
|
|
|
|
var query = RawUrl.Substring (i + 1);
|
|
|
|
@ -155,16 +154,15 @@ namespace WebSocketSharp
|
|
|
|
|
|
|
|
|
|
|
|
#region Public Methods
|
|
|
|
#region Public Methods
|
|
|
|
|
|
|
|
|
|
|
|
public static HandshakeRequest Parse (string [] request)
|
|
|
|
public static HandshakeRequest Parse (string [] headerParts)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var requestLine = request [0].Split (' ');
|
|
|
|
var requestLine = headerParts [0].Split (new char [] { ' ' }, 3);
|
|
|
|
if (requestLine.Length != 3)
|
|
|
|
if (requestLine.Length != 3)
|
|
|
|
throw new ArgumentException (
|
|
|
|
throw new ArgumentException ("Invalid request line: " + headerParts [0]);
|
|
|
|
"Invalid HTTP Request-Line: " + request [0], "request");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var headers = new WebHeaderCollection ();
|
|
|
|
var headers = new WebHeaderCollection ();
|
|
|
|
for (int i = 1; i < request.Length; i++)
|
|
|
|
for (int i = 1; i < headerParts.Length; i++)
|
|
|
|
headers.SetInternal (request [i], false);
|
|
|
|
headers.SetInternal (headerParts [i], false);
|
|
|
|
|
|
|
|
|
|
|
|
return new HandshakeRequest {
|
|
|
|
return new HandshakeRequest {
|
|
|
|
Headers = headers,
|
|
|
|
Headers = headers,
|
|
|
|
|