def setUp(self): conf.initialize_settings() self.blob_dir = tempfile.mkdtemp() self.db_dir = tempfile.mkdtemp() hash_announcer = DummyHashAnnouncer() self.bm = DiskBlobManager(hash_announcer, self.blob_dir, self.db_dir) self.peer = Peer('somehost', 22)
def setup(self): """Create the blob directory and database if necessary, start all desired services""" log.debug("Setting up the lbry session") if self.lbryid is None: self.lbryid = generate_id() if self.wallet is None: self.wallet = PTCWallet(self.db_dir) if self.peer_manager is None: self.peer_manager = PeerManager() if self.use_upnp is True: d = self._try_upnp() else: d = defer.succeed(True) if self.peer_finder is None: d.addCallback(lambda _: self._setup_dht()) else: if self.hash_announcer is None and self.peer_port is not None: log.warning( "The server has no way to advertise its available blobs.") self.hash_announcer = DummyHashAnnouncer() d.addCallback(lambda _: self._setup_other_components()) return d
def encrypt_blob(filename, key, iv): dummy_announcer = DummyHashAnnouncer() manager = DiskBlobManager(dummy_announcer, '.', '.') yield manager.setup() creator = CryptStreamCreator(manager, filename, key, iv_generator(iv)) with open(filename, 'r') as infile: producer = FileBodyProducer(infile, readSize=2**22) yield producer.startProducing(creator) yield creator.stop()
def download_it(peer, timeout, blob_hash): tmp_dir = yield threads.deferToThread(tempfile.mkdtemp) announcer = DummyHashAnnouncer() tmp_blob_manager = DiskBlobManager(announcer, tmp_dir, tmp_dir) config = {'auto_connect': True} if conf.settings['lbryum_wallet_dir']: config['lbryum_path'] = conf.settings['lbryum_wallet_dir'] storage = Wallet.InMemoryStorage() wallet = Wallet.LBRYumWallet(storage, config) downloader = SinglePeerDownloader() downloader.setup(wallet) try: blob_downloaded = yield downloader.download_blob_from_peer( peer, timeout, blob_hash, tmp_blob_manager) if blob_downloaded: log.info("SUCCESS!") blob = yield tmp_blob_manager.get_blob(blob_hash) pprint(blob) if not blob.verified: log.error("except that its not verified....") else: reader = BlobStreamDescriptorReader(blob) info = None for x in range(0, 3): try: info = yield reader.get_info() except ValueError: pass if info: break time.sleep( 0.1 ) # there's some kind of race condition where it sometimes doesnt write the blob to disk in time if info is not None: pprint(info) for content_blob in info['blobs']: if 'blob_hash' in content_blob: yield download_it(peer, timeout, content_blob['blob_hash']) else: log.error("Download failed") finally: yield tmp_blob_manager.stop() yield threads.deferToThread(shutil.rmtree, tmp_dir) defer.returnValue(True)
def __init__(self): self._payment_rate_manager = OnlyFreePaymentsManager() self._announcer = DummyHashAnnouncer() self._rate_limiter = DummyRateLimiter() self._wallet = None self._blob_manager = None