#!/usr/bin/perl

=head1 NAME

listrecords - list records in an OAI-PMH archive

=head1 SYNOPSIS

    oai-listrecords --baseURL=http://preprint.chemweb.com/CPS/OAI
	[ --metadataPrefix --from --until --set ]

=head1 DESCRIPTION

A command line utility to listing the sets that belong to an OAI-PMH 
archive.

=head1 AUTHORS

=over 4 

=item * Ed Summers <ehs@pobox.com>

=back

=cut

use strict;
use Getopt::Long;
use Net::OAI::Harvester;
use Pod::Usage;

my ( $url, $metadataPrefix, $from, $until, $set ); 

GetOptions(
    'baseURL:s'		=> \$url,
    'metadataPrefix:s'	=> \$metadataPrefix,
    'from:s'		=> \$from,
    'until:s'		=> \$until,
    'set:s'		=> \$set,
);

if ( !$metadataPrefix ) { 
    print STDERR "no --metadataPrefix specified so defaulting to oai_dc\n";
    $metadataPrefix = 'oai_dc';
}

if ( !$url or !$metadataPrefix ) { 
    pod2usage( { -verbose => 0 } );
}

my $harvester = Net::OAI::Harvester->new( baseURL => $url );
my %opts = ( 'metadataPrefix'	=> $metadataPrefix );
$opts{ 'from' } = $from if $from;
$opts{ 'until' } = $until if $until;
$opts{ 'set' } = $set if $set;

my $records = $harvester->listRecords( %opts );

if ( $records->errorCode() ) { 
    print STDERR $records->errorString(); 
    exit(1);
}

while ( my $r = $records->next() ) { 
    print $r->header()->identifier(),"\n";
    print $r->metadata()->asString(),"\n\n";
}
