diff options
author | liris <liris.pp@gmail.com> | 2011-06-20 08:59:45 +0900 |
---|---|---|
committer | liris <liris.pp@gmail.com> | 2011-06-20 08:59:45 +0900 |
commit | 912f43d4570d6342aa7348b1902c0ae29679d756 (patch) | |
tree | 194124a453ba7acb74cb9d87b5c7201954c60007 | |
parent | a186f09aa7862f1a2d8583ce9a97c5d66c908955 (diff) | |
download | websocket-client-912f43d4570d6342aa7348b1902c0ae29679d756.tar.gz |
- fixed #4 URL parsing is broken
-rw-r--r-- | websocket.py | 21 |
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): """ |