diff --git a/miniuri/miniuri.py b/miniuri/miniuri.py index b5eaa6a..e7c35bf 100644 --- a/miniuri/miniuri.py +++ b/miniuri/miniuri.py @@ -56,7 +56,10 @@ class Uri(object): self.authority = uri.split("/")[0] # invoke path setter. - self.path = uri[len(self.authority) :] + offset = 0 + if self.authority: + offset = len(self.authority) + self.path = uri[offset:] @property def authority(self): @@ -76,12 +79,13 @@ class Uri(object): @authority.setter def authority(self, a): """set all the attribute that makeup a authority""" - self.username = self.password = self.port = None - self.hostname = a - if "@" in self.hostname: - self.userinfo, self.hostname = a.split("@") # userinfo setter - if ":" in self.hostname: - self.hostname, self.port = self.hostname.split(":") + if a: + self.username = self.password = self.port = None + self.hostname = a + if "@" in self.hostname: + self.userinfo, self.hostname = a.split("@") # userinfo setter + if ":" in self.hostname: + self.hostname, self.port = self.hostname.split(":") @property def relative_uri(self): diff --git a/setup.py b/setup.py index a63ee18..47203ed 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ from setuptools import setup, find_packages setup( name="miniuri", - version="1.0.6", + version="1.0.7", long_description=open("README.rst").read(), description="miniuri: The Universal URI Parser", keywords="miniuri uri url parser", diff --git a/test_miniuri.py b/test_miniuri.py index ae79a87..22300b1 100644 --- a/test_miniuri.py +++ b/test_miniuri.py @@ -185,6 +185,15 @@ class TestMiniUri(TestCase): def test_relative_uri(self): self.assertEqual(self.u.relative_uri, "/path/filename.jpg?p=2#5") + def test_only_relative_uri(self): + u = Uri("/about.html") + self.assertEqual(u.relative_uri, "/about.html") + self.assertEqual(u.filename, "about.html") + self.assertEqual(u.extension, "html") + self.assertIsNone(u.fragment, None) + self.assertIsNone(u.hostname, None) + self.assertIsNone(u.scheme, None) + def test_empty_uri_sets_attrs_to_none(self): self.u.uri = "" self.assertEqual(self.u.uri, "") @@ -246,3 +255,19 @@ class TestMiniUri(TestCase): self.assertIsNone(self.u.fragment) self.assertIsNone(self.u.extension) self.assertIsNone(self.u.authority) + + def test_ssm_uri(self): + self.u = Uri("ssm:///path/to/my/parameter") + self.assertEqual(self.u.uri, "ssm:///path/to/my/parameter") + self.assertEqual(self.u.scheme, "ssm") + self.assertIsNone(self.u.username) + self.assertIsNone(self.u.password) + self.assertIsNone(self.u.hostname) + self.assertIsNone(self.u.port) + self.assertEqual(self.u.path, "/path/to/my/parameter") + self.assertEqual(self.u.filename, "parameter") + self.assertIsNone(self.u.query) + self.assertIsNone(self.u.fragment) + self.assertIsNone(self.u.extension) + self.assertIsNone(self.u.authority) +