"""
FtpCube
Copyright (C) Michael Gilfix
This file is part of FtpCube.
You should have received a file COPYING containing license terms
along with this program; if not, write to Michael Gilfix
(mgilfix@eecs.tufts.edu) for a copy.
This version of FtpCube is open source; you can redistribute it and/or
modify it under the terms listed in the file COPYING.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
"""
import re
class URL:
"""Class representing a URL.
This class constructs a URL from a URL string and allows access to URL parts. The URL
is extracted using a regular expression. This class is not a complete URL utility, but
provided sufficient functionality as required by Ftpcube.
The URL used to parse the URL string results in the following groups:
(schema, 'user:pass@', 'user', ':pass', 'pass', 'host.com', ':123', '123', '/dir')
Some of these groups are redundant due to the grouping of the look ahead operator.
"""
URL_RE = re.compile(r'([a-zA-Z]+)://(([^:]+)(:([^@]+))?@)?([a-zA-Z\d\.-]+)(:(\d+))?(/.+)?')
def __init__(self, string):
"""Parses the supplied string and creates a URL object representation.
If the contents of the supplied string cannot be matched, then a ValueError exception
will be raised."""
self.match = self.URL_RE.match(string)
if not self.match:
raise ValueError, string
def getSchema(self):
"""Returns the URL scheme."""
return self.match.group(1)
def getUser(self):
"""Returns the user portion."""
return self.match.group(3)
def getPassword(self):
"""Returns the password portion."""
return self.match.group(5)
def getHost(self):
"""Returns the host portion."""
return self.match.group(6)
def getPort(self):
"""Returns the port portion."""
result = self.match.group(8)
if result:
result = int(result)
return result
def getPath(self):
"""Returns the path portion."""
return self.match.group(9)
|