From: Brian Warner Date: Sun, 3 Dec 2006 03:31:43 +0000 (-0700) Subject: misc upload fixes and improvements X-Git-Tag: tahoe_v0.1.0-0-UNSTABLE~487 X-Git-Url: https://git.rkrishnan.org/simplejson//%22news.html/%22?a=commitdiff_plain;h=40f7fe3fe78e8fb528c3bf5e09b6014bcb099495;p=tahoe-lafs%2Ftahoe-lafs.git misc upload fixes and improvements --- diff --git a/allmydata/upload.py b/allmydata/upload.py index 3850b4bb..4c932d0c 100644 --- a/allmydata/upload.py +++ b/allmydata/upload.py @@ -6,6 +6,9 @@ from twisted.application import service from allmydata.util import idlib from allmydata import encode +from cStringIO import StringIO +import sha + class NotEnoughPeersError(Exception): pass @@ -17,12 +20,6 @@ class HaveAllPeersError(Exception): class TooFullError(Exception): pass -def upload_a_file(peer, filename): - u = Uploader(peer) - u.set_filehandle(open(filename,"rb")) - u.set_verifierid(hashthingy(filethingy)) - u.make_encoder() - class FileUploader: debug = False @@ -133,7 +130,7 @@ class Uploader(service.MultiService): """ name = "uploader" - def _compute_verifierid(self, filehandle): + def _compute_verifierid(self, f): hasher = sha.new(netstring("allmydata_v1_verifierid")) f.seek(0) hasher.update(f.read()) @@ -141,11 +138,24 @@ class Uploader(service.MultiService): # note: this is only of the plaintext data, no encryption yet return hasher.digest() - def upload_file_by_name(self, filename): + def upload_filename(self, filename): + f = open(filename, "rb") + def _done(res): + f.close() + return res + d = self.upload_filehandle(f) + d.addBoth(_done) + return d + + def upload_data(self, data): + f = StringIO(data) + return self.upload_filehandle(f) + + def upload_filehandle(self, f): assert self.parent assert self.running - f = open(filename, "rb") u = FileUploader(self.parent) + u.set_filehandle(f) u.set_verifierid(self._compute_verifierid(f)) u.make_encoder() d = u.start()