The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Moxy::Plugin::StickyUA;
use strict;
use warnings;
use base qw/Moxy::Plugin/;

use HTML::StickyQuery;

sub register {
    my ($class, $context) = @_;

    $context->register_hook(response_filter => sub { $class->response_filter(@_) });
}

# Add moxy_user_agent query to cross domain links
sub response_filter {
    my ($class, $context, $args) = @_;

    return unless $args->{response}->header('Content-Type') =~ /html/;

    # 'regexp' option for H::SQ doesn't work against URI domains :/
    my $filter = HTML::StickyQuery->new(
        abs => 1,
        keep_original => 1,
    );

    ${$args->{content_ref}} = $filter->sticky(
        scalarref => $args->{content_ref},
        param => {
            moxy_user_agent => $args->{agent}->{agent} || "",
        },
    );
}

1;

__END__

=head1 NAME

Moxy::Plugin::StickyUA - Save User-Agent between cross domain links

=head1 TODO

ON/OFF by ControlPanel

=head1 AUTHOR

Tatsuhiko Miyagawa

=cut