class StoreObject(object): def __init__(self, id=None, file=None, bucket=None, policy=None): self.connection = Storage(bucket, policy) self.storage = self.connection.instance self.bname = self.connection.name self.kobj = Key(self.storage) self.kobj.key = id self.policy = policy or PUBLIC_POLICY if file and os.path.exists(os.path.abspath(file)): self.file = file else: StoringException('File not specified.') def send(self): if self.kobj.exists(): raise StoringException('Key <%s> is already in use' % self.kobj.key) else: self.kobj.set_contents_from_filename(self.file,policy=self.policy, cb=self.progress) def progress(self, part, complete): if part == complete: return True else: return False def __repr__(self): return self.kobj.__repr__() def delete(self): return self.kobj.delete() def set_meta(self, name, value): if name and value: self.kobj.set_metadata(name,value) @property def url(self): return "http://s3.amazonaws.com/%s/%s" % (self.bname, self.kobj.key)