CDS
view release on metacpan or search on metacpan
$o->{ui}->right(10, $o->{ui}->niceFileSize($sizeByBox{'private'} || 0)), ' ',
$o->{ui}->right(10, $o->{ui}->niceFileSize($sizeByBox{'public'} || 0)), ' ',
$newestDate == 0 ? 'never' : $o->{ui}->niceDateTime($newestDate * 1000));
$countAccounts += 1;
}
$o->{ui}->line($countAccounts, ' accounts traversed');
$o->{ui}->space;
# Mark all objects that are younger than 1 day (so that objects being uploaded right now but not linked yet remain)
$o->{ui}->title('Objects');
$o->startProgress('objects');
my %objects;
my @topFolders = sort grep {$_ !~ /^\./} CDS->listFolder($o->{objectsFolder});
foreach my $topFolder (@topFolders) {
my @files = sort grep {$_ !~ /^\./} CDS->listFolder($o->{objectsFolder}.'/'.$topFolder);
foreach my $filename (@files) {
$o->incrementProgress;
my $hash = pack 'H*', $topFolder.$filename;
my $cmd = shift;
$cmd->collect($o);
# Prepare
my $folderStore = $o->existingFolderStoreOrShowError // return;
my $publicKey = $o->publicKey // return;
# Upload the public key onto the store
my $error = $folderStore->put($publicKey->hash, $publicKey->object);
return $o->{ui}->error('Unable to upload the public key: ', $error) if $error;
# Create the account folder
my $folder = $folderStore->folder.'/accounts/'.$publicKey->hash->hex;
my $permissions = $folderStore->permissions;
$permissions->mkdir($folder, $permissions->accountFolderMode);
return $o->{ui}->error('Unable to create folder "', $folder, '".') if ! -d $folder;
$o->{ui}->pGreen('Account ', $publicKey->hash->hex, ' added.');
return 1;
}
# HTML FOLDER NAME store-put
# HTML TITLE Put
sub help {
my $o = shift;
my $cmd = shift;
my $ui = $o->{ui};
$ui->space;
$ui->command('cds put FILE* [onto STORE*]');
$ui->p('Uploads object files onto object stores. If no stores are provided, the selected store is used. If an upload fails, the program immediately quits with exit code 1.');
$ui->space;
$ui->command('cds put FILE encrypted with AESKEY [onto STORE*]');
$ui->p('Encrypts the object before the upload.');
$ui->space;
$ui->command('cds put object with [HASH* and] FILE â¦');
$ui->p('Creates an object with the HASHes as hash list and FILE as data.');
$ui->space;
$ui->command('cds put public key of KEYPAIR â¦');
$ui->p('Uploads the public key of the indicated key pair onto the store.');
$ui->space;
}
sub put {
}
# Calculate the hash
my $hash = $object->calculateHash;
# Upload the object
my $successfulStore;
for my $store (@{$o->{stores}}) {
my $error = $store->put($hash, $object, $keyPair);
next if $error;
$o->{ui}->pGreen('The object was uploaded onto ', $store->url, '.');
$successfulStore = $store;
}
# Show the corresponding download line
return if ! $successfulStore;
$o->{ui}->space;
$o->{ui}->line('To download the object, type:');
$o->{ui}->line($o->{ui}->gold('cds get ', $hash->hex), $o->{ui}->gray(' on ', $successfulStore->url, @{$o->{get}}));
$o->{ui}->space;
}
( run in 3.843 seconds using v1.01-cache-2.11-cpan-b16cb0d3907 )