Revision b088faa2430f519e8b5eeeabcdf96a3b8854639a authored by Lou Burnard on 18 December 2011, 19:08:43 UTC, committed by Lou Burnard on 18 December 2011, 19:08:43 UTC
1 parent ed48956
Raw File
addtoexist.pl
require LWP::UserAgent;
use Getopt::Long;
use Pod::Usage;

$COLLECTION = "/db";
$USER = "admin";
$PASS = "admin";
$HELP = 0;
$PUT = 0;
$QUERY = 0;
$HOST="localhost";
$PORT="8080";
$WEBAPP="exist";
GetOptions(
    "u|user=s" => \$USER,
    "p|password=s" => \$PASS,
    "c|collection=s" => \$COLLECTION,
    "g|get=s" => \$GET,
    "s|store" => \$PUT,
    "r|remove=s" => \$REMOVE,
    "b|binary" => \$BINARY,
    "w|webapp=s" => \$WEBAPP,
    "P|port=s" => \$PORT,
    "h|host=s" => \$HOST,
) or exit(1);

$URL = "http://$USER:$PASS\@$HOST:$PORT/$WEBAPP/rest";
$ua = LWP::UserAgent->new();
if($REMOVE) {
    remove($REMOVE)
} elsif($PUT) {
    store();
} elsif($GET) {
    get($GET);
}

sub store {
    foreach $name (@ARGV) {    
        my $data = readFile($name);
        ($doc = $name) =~ s#.*/##s;
        print "Storing document as $doc to $URL$COLLECTION...\n";
     
        $req = HTTP::Request->new(PUT => "$URL$COLLECTION/$doc");
        if($BINARY) {
            $req->content_type('application/octet-stream');
        } else {
            $req->content_type('text/xml');
        }
        $req->content($data);

        $res = $ua->request($req);
        if($res->is_success) {
            print $res->content . "\n";
        } else {
            print "Error:\n\n" . $res->status_line . "\n";
        }
    }
}

sub remove {
    my($resource) = @_;

    print "Removing resource $resource ...\n";
    if($resource =~ /\/.*/) {
        $u = "$URL$resource";
    } else {
        $u = "$URL$COLLECTION/$resource";
    }
    print "$u\n";
    my $req = HTTP::Request->new(DELETE => $u);
    my $res = $ua->request($req);
    if($res->is_success) {
        print $res->content . "\n";
    } else {
        print "Error:\n\n" . $res->status_line . "\n";
    }
}


sub get {
    my($resource) = @_;
    my $u = $resource =~ /\/.*/ ? "$URL$resource" :
        "$URL$COLLECTION/$resource";
    my $req = HTTP::Request->new(GET => $u);
    my $res = $ua->request($req);
    if($res->is_success) {
        print $res->content . "\n";
    } else {
        print "Error:\n\n" . $res->status_line . "\n";
    }
}

sub readFile {
    my($file) = @_;
    open(XIN, $file);
    binmode XIN;
    my $pos = 0;
    while(($l = sysread(XIN, $xml, 4096, $pos)) > 0) {
        $pos = $pos + $l;
    }
    close(XIN);
    return $xml;
}

back to top