def __init__(self, rbuilderUrl, user, pw, handle): _AbstractRbuilderClient.__init__(self, rbuilderUrl, user, pw, handle) scheme, _, _, host, port, path, _, _ = util.urlSplit(rbuilderUrl) path = util.joinPaths(path, 'api') self._url = util.urlUnsplit( (scheme, user, pw, host, port, path, None, None)) self._api = None
def urlAddAuth(url, username, password): urlArr = list(util.urlSplit(url)) if username is not None: urlArr[1] = username if password is not None: urlArr[2] = password return util.urlUnsplit(urlArr)
def _pathFromUrl(cls, pathList): if not pathList: return None if isinstance(pathList, list): path = pathList[0] else: path = pathList return util.urlSplit(path)[5]
def makeUrl(cls, url, headers=None): scheme, user, passwd, host, port, path, query, fragment = util.urlSplit( url) # Join back query and fragment unparsedPath = path if query: unparsedPath = "%s?%s" % (unparsedPath, query) if fragment: unparsedPath = "%s#%s" % (unparsedPath, fragment) return cls.URL(scheme=scheme, username=user, password=passwd, host=host, port=port, path=path, query=query, fragment=fragment, unparsedPath=unparsedPath, headers=headers)
def fromString(cls, url, host=None, port=None): arr = util.urlSplit(url) o = cls() (o.scheme, o.username, o.password, o.host, o.port, o.path, o.query, o.fragment) = arr o.unparsedPath = util.urlUnsplit((None, None, None, None, None, o.path, o.query, o.fragment)) if o.host is None: o.host = host if o.port is None: o.port = port return o
def __init__(self, urlString, parent=None, extension=None, isHostname=False): urlString = urllib.unquote(urlString) (self.scheme, self.user, self.passwd, self.host, self.port, self.path, self.params, self.fragment) = util.urlSplit(urlString) if parent: self.path = os.sep.join((self.path, parent.path)) self.path = self.path.replace('//', '/') self.extension = parent.extension self.parent = parent assert self.parent is not self self.extension = extension
def parse(cls, url, defaultScheme='http'): if '://' not in url and defaultScheme: url = '%s://%s' % (defaultScheme, url) (scheme, username, password, host, port, path, query, fragment, ) = util.urlSplit(url) if not port and port != 0: if scheme[-1] == 's': port = 443 else: port = 80 hostport = networking.HostPort(host, port) path = urlparse.urlunsplit(('', '', path, query, fragment)) return cls(scheme, (username, password), hostport, path)
def _getLocalIp(cls, destination): """Return my IP address visible to the destination host""" if utils.runningInEC2(): return cls._getExternalEC2Ip() if "://" not in destination: destination = "http://%s" % destination hostname, port = util.urlSplit(destination, defaultPort=443)[3:5] s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect((hostname, int(port))) ret = s.getsockname()[0] s.close() return ret
def testUrlSplitUnsplit(self): for tup, url in self.Tests: nurl = util.urlUnsplit(tup) self.assertEqual(nurl, url) self.assertEqual(util.urlSplit(url), tup) # One-way tests tests = [ (("http", None, None, "localhost", "10", "/path", "", ""), "http://localhost:10/path"), ((None, None, None, None, None, "/path", "q", "f"), "/path?q#f"), ] for tup, url in tests: nurl = util.urlUnsplit(tup) self.assertEqual(nurl, url)
def parse(cls, url, defaultScheme='http'): if '://' not in url and defaultScheme: url = '%s://%s' % (defaultScheme, url) ( scheme, username, password, host, port, path, query, fragment, ) = util.urlSplit(url) if not port and port != 0: if scheme[-1] == 's': port = 443 else: port = 80 hostport = networking.HostPort(host, port) path = urlparse.urlunsplit(('', '', path, query, fragment)) return cls(scheme, (username, password), hostport, path)