Net::LD...l::Paged(3)

okay bestie, welcome to the Net::LD...l::Paged(3) page from the User Contributed Perl Documentation ✨ this one is lowkey iconic because it’s all about paged LDAP results, and yes we’re gonna get into every detail. no skips. periodt. πŸ’…

✨ NAME ✨

Net::LDAP::Control::Paged β€” LDAPv3 Paged results control object πŸŽ€

🌈 SYNOPSIS 🌈

okay so here’s the whole vibe in code, bestie β€” copy it exactly, don’t freestyle the syntax:

        use Net::LDAP;
        use Net::LDAP::Control::Paged;
        use Net::LDAP::Constant qw( LDAP_CONTROL_PAGED );

        $ldap = Net::LDAP->new( "ldap.mydomain.eg" );

        $page = Net::LDAP::Control::Paged->new( size => 100 );

        @args = ( base     => "cn=subnets,cn=sites,cn=configuration,$BASE_DN",
                  scope    => "subtree",
                  filter   => "(objectClass=subnet)",
                  callback => \&process_entry, # Call this sub for each entry
                  control  => [ $page ],
        );

        my $cookie;
        while (1) {
          # Perform search
          my $mesg = $ldap->search( @args );

          # Only continue on LDAP_SUCCESS
          $mesg->code  and last;

          # Get cookie from paged control
          my($resp)  = $mesg->control( LDAP_CONTROL_PAGED )  or last;
          $cookie    = $resp->cookie;

          # Only continue if cookie is nonempty (= we're not done)
          last  if (!defined($cookie) || !length($cookie));

          # Set cookie in paged control
          $page->cookie($cookie);
        }

        if (defined($cookie) && length($cookie)) {
          # We had an abnormal exit, so let the server know we do not want any more
          $page->cookie($cookie);
          $page->size(0);
          $ldap->search( @args );
        }

πŸ’– DESCRIPTION πŸ’–

Net::LDAP::Control::Paged provides an interface for the creation and manipulation of objects that represent the pagedResultsControl as described by RFC 2696. literally the paged-results control object of the moment. πŸ’–

The control is allowed on LDAP search requests (search in Net::LDAP) only. On other operations it will β€” depending on the value of the parameter critical β€” either be ignored or lead to errors. so yeah, search-only, bestie, don’t try to make it do extra side quests. no cap. 🫢

πŸŽ€ CONSTRUCTOR ARGUMENTS πŸŽ€

In addition to the constructor arguments described in Net::LDAP::Control, the following are provided. yes queen, these two:

  • cookie β€” The value to use as the cookie. This is not normally set when an object is created, but is set from the cookie value returned by the server. This associates a search with a previous search, so the server knows to return the page of entries following the entries it returned the previous time. it’s giving β€œremember where we left off” energy. πŸͺ
  • size β€” The page size that is required. This is the maximum number of entries that the server will return to the search request. literally the page-size limit, bestie. πŸ“

πŸ¦‹ METHODS πŸ¦‹

As with Net::LDAP::Control, each constructor argument described above is also available as a method on the object which will return the current value for the attribute if called without an argument, and set a new value for the attribute if called with an argument. so cookie and size both have main character energy as methods too. call with no arg = get; call with an arg = set. slay. πŸ’…

πŸ‘‘ SEE ALSO πŸ‘‘

πŸ’œ AUTHOR πŸ’œ

Graham Barr <gbarr@pobox.com>

Please report any bugs, or post any suggestions, to the perl-ldap mailing list <perl-ldap@perl.org> 🫢

Copyright (c) 2000-2004 Graham Barr. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. πŸ’–


xoxo bestie β€” this was perl v5.42.0 on 2024-01-02, from Net::LD...l::Paged(3). πŸ’…βœ¨

πŸ“¦ where this page comes from