[Jifty-commit] r6805 - jifty/trunk/lib/Jifty/Plugin
Jifty commits
jifty-commit at lists.jifty.org
Wed Apr 22 02:13:49 EDT 2009
Author: sartak
Date: Wed Apr 22 02:13:49 2009
New Revision: 6805
Added:
jifty/trunk/lib/Jifty/Plugin/RequestInspector.pm
Log:
Begin adding a RequestInspector plugin
Added: jifty/trunk/lib/Jifty/Plugin/RequestInspector.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/lib/Jifty/Plugin/RequestInspector.pm Wed Apr 22 02:13:49 2009
@@ -0,0 +1,67 @@
+package Jifty::Plugin::RequestInspector;
+use base qw/Jifty::Plugin/;
+use strict;
+use warnings;
+
+my $current_inspection;
+my @requests;
+
+sub init {
+ my $self = shift;
+ return if $self->_pre_init;
+
+ Jifty::Handler->add_trigger(before_request => \&before_request);
+ Jifty::Handler->add_trigger(after_request => \&after_request);
+}
+
+sub new_request_inspection {
+ my ($self, $cgi) = @_;
+
+ return {
+ id => 1 + @requests,
+ time => DateTime->now,
+ url => $cgi->url(-absolute => 1, -path_info => 1),
+ };
+}
+
+sub inspector_plugins {
+ return grep {
+ $_->can('inspect_before_request') || $_->can('inspect_after_request')
+ } Jifty->plugins;
+}
+
+sub before_request {
+ my ($self, $handler, $cgi) = @_;
+
+ return unless $self->should_handle_request($cgi);
+
+ $current_inspection = $self->new_request_inspection;
+ push @requests, $current_inspection;
+
+ for my $plugin ($self->inspector_plugins) {
+ next unless $plugin->can('inspect_before_request');
+ my $plugin_data = $plugin->inspect_before_request($cgi);
+ $current_inspection->{plugin_data}{$plugin->name} = $plugin_data;
+ }
+}
+
+sub after_request {
+ my ($self, $handler, $cgi) = @_;
+
+ if ($current_inspection) {
+ for my $plugin ($self->inspector_plugins) {
+ next unless $plugin->can('inspect_after_request');
+ my $plugin_data = $current_inspection->{plugin_data}{$plugin->name};
+ $plugin->inspect_after_request($plugin_data, $cgi);
+ }
+ }
+
+ undef $current_inspection;
+}
+
+sub should_handle_request {
+ return 1;
+}
+
+1;
+
More information about the Jifty-commit
mailing list