Beispiel #1
0
def make_tahoe_subdirectory(nodeurl, parent_writecap, name):
    url = nodeurl + "/".join(["uri",
                              urllib.quote(parent_writecap),
                              urllib.quote(unicode_to_url(name)),
                              ]) + "?t=mkdir"
    resp = do_http("POST", url)
    if resp.status in (200, 201):
        return resp.read().strip()
    raise HTTPError("Error during mkdir", resp)
Beispiel #2
0
def make_tahoe_subdirectory(nodeurl, parent_writecap, name):
    url = nodeurl + "/".join(["uri",
                              urllib.quote(parent_writecap),
                              urllib.quote(unicode_to_url(name)),
                              ]) + "?t=mkdir"
    resp = do_http("POST", url)
    if resp.status in (200, 201):
        return resp.read().strip()
    raise HTTPError("Error during mkdir", resp)
Beispiel #3
0
 def populate(self, recurse):
     if self.children is not None:
         return
     self.children = {}
     for i, (name, data) in enumerate(self.children_d.items()):
         self.progressfunc("examining %d of %d" %
                           (i + 1, len(self.children_d)))
         if data[0] == "filenode":
             mutable = data[1].get("mutable", False)
             writecap = to_str(data[1].get("rw_uri"))
             readcap = to_str(data[1].get("ro_uri"))
             url = None
             if self.writecap:
                 url = self.nodeurl + "/".join([
                     "uri",
                     urllib.quote(self.writecap),
                     urllib.quote(unicode_to_url(name))
                 ])
             self.children[name] = TahoeFileTarget(self.nodeurl, mutable,
                                                   writecap, readcap, url)
         elif data[0] == "dirnode":
             writecap = to_str(data[1].get("rw_uri"))
             readcap = to_str(data[1].get("ro_uri"))
             if writecap and writecap in self.cache:
                 child = self.cache[writecap]
             elif readcap and readcap in self.cache:
                 child = self.cache[readcap]
             else:
                 child = TahoeDirectoryTarget(self.nodeurl, self.cache,
                                              self.progressfunc)
                 child.init_from_grid(writecap, readcap)
                 if writecap:
                     self.cache[writecap] = child
                 if readcap:
                     self.cache[readcap] = child
                 if recurse:
                     child.populate(True)
             self.children[name] = child
         else:
             # TODO: there should be an option to skip unknown nodes.
             raise TahoeError("Cannot copy unknown nodes (ticket #839). "
                              "You probably need to use a later version of "
                              "Tahoe-LAFS to copy this directory.")
Beispiel #4
0
 def populate(self, recurse):
     if self.children is not None:
         return
     self.children = {}
     for i,(name, data) in enumerate(self.children_d.items()):
         self.progressfunc("examining %d of %d" % (i+1, len(self.children_d)))
         if data[0] == "filenode":
             mutable = data[1].get("mutable", False)
             writecap = to_str(data[1].get("rw_uri"))
             readcap = to_str(data[1].get("ro_uri"))
             url = None
             if self.writecap:
                 url = self.nodeurl + "/".join(["uri",
                                                urllib.quote(self.writecap),
                                                urllib.quote(unicode_to_url(name))])
             self.children[name] = TahoeFileTarget(self.nodeurl, mutable,
                                                   writecap, readcap, url)
         elif data[0] == "dirnode":
             writecap = to_str(data[1].get("rw_uri"))
             readcap = to_str(data[1].get("ro_uri"))
             if writecap and writecap in self.cache:
                 child = self.cache[writecap]
             elif readcap and readcap in self.cache:
                 child = self.cache[readcap]
             else:
                 child = TahoeDirectoryTarget(self.nodeurl, self.cache,
                                              self.progressfunc)
                 child.init_from_grid(writecap, readcap)
                 if writecap:
                     self.cache[writecap] = child
                 if readcap:
                     self.cache[readcap] = child
                 if recurse:
                     child.populate(recurse=True)
             self.children[name] = child
         else:
             # TODO: there should be an option to skip unknown nodes.
             raise TahoeError("Cannot copy unknown nodes (ticket #839). "
                              "You probably need to use a later version of "
                              "Tahoe-LAFS to copy this directory.")
Beispiel #5
0
def escape_path(path):
    segments = path.split("/")
    return "/".join([urllib.quote(unicode_to_url(s)) for s in segments])
Beispiel #6
0
def escape_path(path):
    # this always returns bytes, specifically US-ASCII, valid URL characters
    segments = path.split("/")
    return "/".join([urllib.quote(unicode_to_url(s)) for s in segments])
Beispiel #7
0
def escape_path(path):
    # this always returns bytes, specifically US-ASCII, valid URL characters
    segments = path.split("/")
    return "/".join([urllib.quote(unicode_to_url(s)) for s in segments])
Beispiel #8
0
 def test_unicode_to_url(self):
     self.failUnless(unicode_to_url(lumiere_nfc), "lumi\xc3\xa8re")
Beispiel #9
0
def put_child(dirurl, childname, childcap):
    assert dirurl[-1] != "/"
    url = dirurl + "/" + url_quote(unicode_to_url(childname)) + "?t=uri"
    resp = do_http("PUT", url, childcap)
    if resp.status not in (200, 201):
        raise HTTPError("Error during put_child", resp)
Beispiel #10
0
def escape_path(path):
    segments = path.split("/")
    return "/".join([urllib.quote(unicode_to_url(s)) for s in segments])
 def test_unicode_to_url(self):
     self.failUnless(unicode_to_url(lumiere_nfc), "lumi\xc3\xa8re")
Beispiel #12
0
def put_child(dirurl, childname, childcap):
    assert dirurl[-1] == "/"
    url = dirurl + urllib.quote(unicode_to_url(childname)) + "?t=uri"
    resp = do_http("PUT", url, childcap)
    if resp.status not in (200, 201):
        raise HTTPError("Error during put_child", resp)