Exception-Reporter-Summarizer-Catalyst
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Exception/Reporter/Summarizer/Catalyst.pm view on Meta::CPAN
use strict;
use warnings;
package Exception::Reporter::Summarizer::Catalyst 0.005;
use parent 'Exception::Reporter::Summarizer';
# ABSTRACT: a summarizer for Catalyst applications
#pod =head1 OVERVIEW
#pod
#pod If added as a summarizer to an L<Exception::Reporter>, this plugin will
#pod summarize Catalyst objects, adding summaries for the request, stash, errors,
#pod user, and session.
#pod
#pod =attr resolve_hostname
#pod
#pod If true, the summary will include the hostname of the remote client. Catalyst
#pod I<always> resolves this hostname the first time it's requested and I<never>
#pod accepts it from the server. That means it might be slow.
#pod
#pod Right now, this defaults to true. It might default to false later. Consider
#pod being explicit if you're concerned about this behavior.
#pod
#pod =cut
use Try::Tiny;
sub new {
my ($class, $arg) = @_;
$arg ||= {};
return bless { resolve_hostname => !! $arg->{resolve_hostname} } => $class;
}
sub resolve_hostname { $_[0]->{resolve_hostname} }
sub can_summarize {
my ($self, $entry) = @_;
return try { $entry->[1]->isa('Catalyst') };
}
sub summarize {
my ($self, $entry) = @_;
my ($name, $c, $arg) = @$entry;
my @summaries = ({
filename => 'catalyst.txt',
%{
$self->dump(
{
class => (ref $c),
version => $c->VERSION,
},
{ basename => 'catalyst' },
)
},
ident => 'Catalyst application ' . (ref $c),
});
push @summaries, $self->summarize_request($c);
# push @summaries, $self->summarize_response($c);
push @summaries, $self->summarize_stash($c);
push @summaries, $self->summarize_errors($c);
push @summaries, $self->summarize_user($c);
push @summaries, $self->summarize_session($c);
return @summaries;
}
sub summarize_request {
my ($self, $c) = @_;
my $req = $c->req;
my $cookie_hash = $req->cookies;
my %cookie_str = map {; $_ => $cookie_hash->{$_}->value } keys %$cookie_hash;
my $to_dump = {
action => $req->action,
address => $req->address,
arguments => $req->arguments,
body_parameters => $req->body_parameters,
cookies => \%cookie_str,
headers => $req->headers,
method => $req->method,
query_parameters => $req->query_parameters,
uri => "" . $req->uri,
uploads => $req->uploads,
path => $req->path,
($self->resolve_hostname ? (hostname => $req->hostname) : ()),
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.883 second using v1.00-cache-2.02-grep-82fe00e-cpan-1925d2aa809 )