summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliris <liris.pp@gmail.com>2011-06-20 08:59:45 +0900
committerliris <liris.pp@gmail.com>2011-06-20 08:59:45 +0900
commit912f43d4570d6342aa7348b1902c0ae29679d756 (patch)
tree194124a453ba7acb74cb9d87b5c7201954c60007
parenta186f09aa7862f1a2d8583ce9a97c5d66c908955 (diff)
downloadwebsocket-client-912f43d4570d6342aa7348b1902c0ae29679d756.tar.gz
- fixed #4 URL parsing is broken
-rw-r--r--websocket.py21
1 files changed, 13 insertions, 8 deletions
diff --git a/websocket.py b/websocket.py
index 9d7f2b6..d2608a0 100644
--- a/websocket.py
+++ b/websocket.py
@@ -69,7 +69,13 @@ def _parse_url(url):
parse url and the result is tuple of
(hostname, port, resource path and the flag of secure mode)
"""
- parsed = urlparse(url)
+ if ":" not in url:
+ raise ValueError("url is invalid")
+
+ scheme, url = url.split(":", 1)
+ url = url.rstrip("/")
+
+ parsed = urlparse(url, scheme="http")
if parsed.hostname:
hostname = parsed.hostname
else:
@@ -77,25 +83,24 @@ def _parse_url(url):
port = 0
if parsed.port:
port = parsed.port
-
+
is_secure = False
- if parsed.scheme == "ws":
+ if scheme == "ws":
if not port:
port = 80
- elif parsed.scheme == "wss":
+ elif scheme == "wss":
is_secure = True
if not port:
port = 443
else:
- raise ValueError("scheme %s is invalid" % parsed.scheme)
-
+ raise ValueError("scheme %s is invalid" % scheme)
+
if parsed.path:
resource = parsed.path
else:
resource = "/"
-
- return (hostname, port, resource, is_secure)
+ return (hostname, port, resource, is_secure)
def create_connection(url, timeout=None, **options):
"""