- my $record = GetMarcBiblio($biblionumber, 1);
-
- if ($format eq 'iso2709') {
- $output .= $record->as_usmarc();
- }
- elsif ($format eq 'ris') {
- $output .= marc2ris($record);
- }
- elsif ($format eq 'bibtex') {
- $output .= marc2bibtex($record, $biblionumber);
+ my $contents = $shelf->get_contents;
+ # CSV
+ if ($format =~ /^\d+$/) {
+ my @biblios;
+ while ( my $content = $contents->next ) {
+ push @biblios, $content->biblionumber->biblionumber;
+ }
+ $output = marc2csv(\@biblios, $format);
+ }
+ else { #Other formats
+ while ( my $content = $contents->next ) {
+ my $biblionumber = $content->biblionumber->biblionumber;
+ my $record = GetMarcBiblio($biblionumber, 1);
+ if ($format eq 'iso2709') {
+ $output .= $record->as_usmarc();
+ }
+ elsif ($format eq 'ris') {
+ $output .= marc2ris($record);
+ }
+ elsif ($format eq 'bibtex') {
+ $output .= marc2bibtex($record, $biblionumber);
+ }
+ }
+ }
+ print $query->header(
+ -type => 'application/octet-stream',
+ -'Content-Transfer-Encoding' => 'binary',
+ -attachment=>"shelf.$format");
+ print $output;
+ exit;
+ } else {
+ push @messages, { type => 'error', code => 'unauthorized' };