+# __END__ C4::OAI::Description
+
+package C4::OAI::ListSets;
+
+use strict;
+use warnings;
+use HTTP::OAI;
+use C4::OAI::Sets;
+
+use base ("HTTP::OAI::ListSets");
+
+sub new {
+ my ( $class, $repository, %args ) = @_;
+
+ my $self = HTTP::OAI::ListSets->new(%args);
+
+ my $token = C4::OAI::ResumptionToken->new(%args);
+ my $sets = GetOAISets;
+ my $pos = 0;
+ foreach my $set (@$sets) {
+ if ($pos < $token->{offset}) {
+ $pos++;
+ next;
+ }
+ my @descriptions;
+ foreach my $desc (@{$set->{'descriptions'}}) {
+ push @descriptions, C4::OAI::Description->new(
+ setDescription => $desc,
+ );
+ }
+ $self->set(
+ HTTP::OAI::Set->new(
+ setSpec => $set->{'spec'},
+ setName => $set->{'name'},
+ setDescription => \@descriptions,
+ )
+ );
+ $pos++;
+ last if ($pos + 1 - $token->{offset}) > $repository->{koha_max_count};
+ }
+
+ $self->resumptionToken(
+ new C4::OAI::ResumptionToken(
+ metadataPrefix => $token->{metadata_prefix},
+ offset => $pos
+ )
+ ) if ( $pos > $token->{offset} );
+
+ return $self;
+}
+
+# __END__ C4::OAI::ListSets;