Esempio n. 1
0
    def __init__(self, url, query=None):
        """Initialize file system object."""
        if not is_valid_url(url):
            raise InvalidPathError(path=url)

        root_url, base_path, queryargs = spliturl(url)

        if not is_valid_path(base_path):
            raise InvalidPathError(path=base_path)

        if queryargs:
            # Convert query string in URL into a dictionary. Assumes there's no
            # duplication of fields names in query string (such as e.g.
            # '?f1=a&f1=b').
            queryargs = {k: v[0] for (k, v) in parse_qs(queryargs).items()}

            # Merge values from kwarg query into the dictionary. Conflicting
            # keys raises an exception.
            for k, v in (query or {}).items():
                if k in queryargs:
                    raise KeyError("Query string field {0} conflicts with "
                                   "field in URL {1}".format(k, url))
                queryargs[k] = v
        else:
            # No query string in URL, use kwarg instead.
            queryargs = query

        self.root_url = root_url
        self.base_path = base_path
        self.queryargs = queryargs
        self._client = FileSystem(self.xrd_get_rooturl())
        super(XRootDPyFS, self).__init__(thread_synchronize=False)
Esempio n. 2
0
    def __init__(self, url, timeout=0, thread_synchronize=True):
        """."""
        if not is_valid_url(url):
            raise InvalidPathError(path=url)

        root_url, base_path = spliturl(url)

        self.timeout = timeout
        self.base_path = base_path
        self.client = FileSystem(root_url)
        super(XRootDFS, self).__init__(thread_synchronize=thread_synchronize)