Apache-Sling
view release on metacpan or search on metacpan
lib/Apache/Sling/Content.pm view on Meta::CPAN
Authn => $authn,
Message => q{},
Response => \$response,
Verbose => $verbose,
Log => $log
};
bless $content, $class;
return $content;
}
#}}}
#{{{sub set_results
sub set_results {
my ( $content, $message, $response ) = @_;
$content->{'Message'} = $message;
$content->{'Response'} = $response;
return 1;
}
#}}}
#{{{sub add
sub add {
my ( $content, $remote_dest, $properties ) = @_;
my $res = Apache::Sling::Request::request(
\$content,
Apache::Sling::ContentUtil::add_setup(
$content->{'BaseURL'}, $remote_dest, $properties
)
);
my $success = Apache::Sling::ContentUtil::add_eval($res);
my $message = "Content addition to \"$remote_dest\" ";
$message .= ( $success ? 'succeeded!' : 'failed!' );
$content->set_results( "$message", $res );
return $success;
}
#}}}
#{{{ sub command_line
sub command_line {
my ( $content, @ARGV ) = @_;
my $sling = Apache::Sling->new;
my $config = $content->config( $sling, @ARGV );
return $content->run( $sling, $config );
}
#}}}
#{{{sub config
sub config {
my ( $content, $sling, @ARGV ) = @_;
my $content_config = $content->config_hash( $sling, @ARGV );
GetOptions(
$content_config, 'auth=s',
'help|?', 'log|L=s',
'man|M', 'pass|p=s',
'threads|t=s', 'url|U=s',
'user|u=s', 'verbose|v+',
'add|a', 'additions|A=s',
'copy|c', 'delete|d',
'exists|e', 'filename|n=s',
'local|l=s', 'move|m',
'property|P=s', 'remote|r=s',
'remote-source|S=s', 'replace|R',
'view|V'
) or $content->help();
return $content_config;
}
#}}}
#{{{sub config_hash
sub config_hash {
my ( $content, $sling, @ARGV ) = @_;
my $add;
my $additions;
my $copy;
my $delete;
my $exists;
my $filename;
my $local;
my $move;
my @property;
my $remote;
my $remote_source;
my $replace;
my $view;
my %content_config = (
'auth' => \$sling->{'Auth'},
'help' => \$sling->{'Help'},
'log' => \$sling->{'Log'},
'man' => \$sling->{'Man'},
'pass' => \$sling->{'Pass'},
'threads' => \$sling->{'Threads'},
'url' => \$sling->{'URL'},
'user' => \$sling->{'User'},
'verbose' => \$sling->{'Verbose'},
'add' => \$add,
'additions' => \$additions,
'copy' => \$copy,
'delete' => \$delete,
'exists' => \$exists,
'filename' => \$filename,
'local' => \$local,
'move' => \$move,
'property' => \@property,
'remote' => \$remote,
'remote-source' => \$remote_source,
'replace' => \$replace,
'view' => \$view
);
return \%content_config;
}
#}}}
#{{{sub copy
sub copy {
my ( $content, $remote_src, $remote_dest, $replace ) = @_;
my $res = Apache::Sling::Request::request(
\$content,
Apache::Sling::ContentUtil::copy_setup(
$content->{'BaseURL'}, $remote_src, $remote_dest, $replace
)
);
my $success = Apache::Sling::ContentUtil::copy_eval($res);
my $message = "Content copy from \"$remote_src\" to \"$remote_dest\" ";
$message .= ( $success ? 'completed!' : 'did not complete successfully!' );
$content->set_results( "$message", $res );
return $success;
}
#}}}
#{{{sub check_exists
sub check_exists {
my ( $content, $remote_dest ) = @_;
my $res = Apache::Sling::Request::request(
\$content,
Apache::Sling::ContentUtil::exists_setup(
$content->{'BaseURL'}, $remote_dest
)
);
my $success = Apache::Sling::ContentUtil::exists_eval($res);
my $message = "Content \"$remote_dest\" ";
$message .= ( $success ? 'exists!' : 'does not exist!' );
$content->set_results( "$message", $res );
return $success;
}
#}}}
#{{{sub del
sub del {
my ( $content, $remote_dest ) = @_;
my $res = Apache::Sling::Request::request(
\$content,
Apache::Sling::ContentUtil::delete_setup(
$content->{'BaseURL'}, $remote_dest
)
);
my $success = Apache::Sling::ContentUtil::delete_eval($res);
my $message = "Content \"$remote_dest\" ";
$message .= ( $success ? 'deleted!' : 'was not deleted!' );
$content->set_results( "$message", $res );
return $success;
}
#}}}
#{{{ sub help
sub help {
print <<"EOF";
Usage: perl $0 [-OPTIONS [-MORE_OPTIONS]] [--] [PROGRAM_ARG1 ...]
The following options are accepted:
--additions or -A (file) - File containing list of content to be uploaded.
--add or -a - Add content.
--auth (type) - Specify auth type. If ommitted, default is used.
--copy or -c - Copy content.
--delete or -d - Delete content.
--filename or -n (filename) - Specify file name to use for content upload.
--help or -? - view the script synopsis and options.
--local or -l (localPath) - Local path to content to upload.
--log or -L (log) - Log script output to specified log file.
--man or -M - view the full script documentation.
--move or -m - Move content.
--pass or -p (password) - Password of user performing content manipulations.
--property or -P (property) - Specify property to set on node.
--remote or -r (remoteNode) - specify remote destination under JCR root to act on.
--remote-source or -S (remoteSrc) - specify remote source node under JCR root to act on.
--replace or -R - when copying or moving, overwrite remote destination if it exists.
--threads or -t (threads) - Used with -A, defines number of parallel
processes to have running through file.
--url or -U (URL) - URL for system being tested against.
--user or -u (username) - Name of user to perform content manipulations as.
--verbose or -v or -vv or -vvv - Increase verbosity of output.
--view or -V (actOnGroup) - view details for specified group in json format.
Options may be merged together. -- stops processing of options.
Space is not required between options and their arguments.
For full details run: perl $0 --man
EOF
return 1;
}
#}}}
#{{{ sub man
sub man {
my ($content) = @_;
print <<'EOF';
content perl script. Provides a means of uploading content into sling from the
command line. The script also acts as a reference implementation for the
Content perl library.
EOF
$content->help();
print <<"EOF";
Example Usage
* Authenticate and add a node at /test:
perl $0 -U http://localhost:8080 -a -r /test -u admin -p admin
* Authenticate and add a node at /test with property p1 set to v1:
perl $0 -U http://localhost:8080 -a -r /test -P p1=v1 -u admin -p admin
* Authenticate and add a node at /test with property p1 set to v1, and p2 set to v2:
perl $0 -U http://localhost:8080 -a -r /test -P p1=v1 -P p2=v2 -u admin -p admin
* View json for node at /test:
perl $0 -U http://localhost:8080 -V -r /test
* Check whether node at /test exists:
perl $0 -U http://localhost:8080 -V -r /test
* Authenticate and copy content at /test to /test2
perl $0 -U http://localhost:8080 -c -S /test -r /test2 -u admin -p admin
* Authenticate and move content at /test to /test2, replacing test2 if it already exists
perl $0 -U http://localhost:8080 -m -S /test -r /test2 -R -u admin -p admin
( run in 0.527 second using v1.01-cache-2.11-cpan-39bf76dae61 )