def upload(args): """ Controls actions for uploading :param args: Parsed args namespace """ shard_size = parse_shard_size(args.shard_size) try: filepath = Streamer.check_path(args.file) except FileError as e: sys.stderr.write('%s\n' % str(e)) sys.exit(1) streamer = Streamer(args.server) shards = calculate_shards(args, shard_size, filepath) shard_info = [] for idx, shard in enumerate(shards): i = idx + 1 start = shard[0] callback = ProgressCallback() shard = streamer.upload(args.file, start_pos=start, shard_size=shard_size, callback=callback.callback) callback.bar.finish() sys.stdout.flush() if args.verbose: print("\nShard %d - URI: %s\n" % (i, shard.uri)) shard_info.append(shard.uri) print() print("Download this file by using the following command: ") print("upstream download --uri", " ".join(shard_info), "--dest <filename>")
def setUp(self): self.stream = Streamer("http://node1.metadisk.org") self.orig_hash = None self.uploadfile = "tests/1k.testfile" self.downloadfile = "download.testfile" self.shard = Shard( "2032e4fd19d4ab49a74ead0984a5f672c26e60da6e992eaf51f05dc874e94bd7", "1b1f463cef1807a127af668f3a4fdcc7977c647bf2f357d9fa125f13548b1d14")
def setUp(self): self.stream = Streamer("http://node1.metadisk.org") self.orig_hash = None self.uploadfile = "tests/1k.testfile" self.downloadfile = "download.testfile" self.shard = Shard( "2032e4fd19d4ab49a74ead0984a5f672c26e60da6e992eaf51f05dc874e94bd7", "1b1f463cef1807a127af668f3a4fdcc7977c647bf2f357d9fa125f13548b1d14" ) self.args = mock.MagicMock() self.args.verbose = False self.args.server = 'http://node1.metadisk.org' self.args.uri = [self.shard.uri] self.args.file = self.uploadfile self.args.dest = self.downloadfile self.args.shard_size = SizeHelpers.mib_to_bytes(250)
def download(args): """ Controls actions for downloading :param args: Argparse namespace """ shards = [] for uri in args.uri: if args.verbose: print("Creating shard.") shard = Shard() shard.from_uri(uri) shards.append(shard) if args.verbose: print("There are %d shards to download." % len(shards)) streamer = Streamer(args.server) if args.verbose: print("Connecting to %s..." % streamer.server) path, fname = check_and_get_dest(args.dest) savepath = os.path.join(path, fname) for i, shard in enumerate(shards): if args.verbose: print("Downloading file %s..." % shard.uri) else: print("Downloading file %d..." % (i + 1)) sys.stdout.flush() r = streamer.download(shard, slicesize=8096) with open(savepath, 'ab') as f: if args.verbose: print("Writing shard.") for _bytes in r.iter_content(): f.write(_bytes) print("\nDownloaded to %s." % savepath) return fname
def _failing_connection(): Streamer("http://does.not.exist")