The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Bootylicious::PingbackIteratorFinder;

use strict;
use warnings;

use base 'Mojo::Base';

__PACKAGE__->attr('iterator');

use Bootylicious::IteratorSearchable;

sub new {
    my $self = shift->SUPER::new(@_);

    Carp::croak q/Iterator is a required parameter/ unless $self->iterator;

    return $self;
}

sub find {
    my $self = shift;
    my ($source_uri) = @_;

    my $iterator = Bootylicious::IteratorSearchable->new($self->iterator);

    return $iterator->find_first(
        sub {
            my ($iterator, $elem) = @_;

            return unless $elem->source_uri eq $source_uri;

            return $elem;
        }
    );
}

1;