X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FPlugin%2FSubRequest.pm;fp=lib%2FCatalyst%2FPlugin%2FSubRequest.pm;h=803fef08c71444706868ae23b9a439ab0a504cf2;hb=87c672dbfc58a2557adea6cfb7843c661cffbc61;hp=12c663ad2a2ceb86529558991bcbb19660ee793c;hpb=de181610daf7b06c5b36aad8eacfe2a1664f6334;p=catagits%2FCatalyst-Plugin-SubRequest.git diff --git a/lib/Catalyst/Plugin/SubRequest.pm b/lib/Catalyst/Plugin/SubRequest.pm index 12c663a..803fef0 100644 --- a/lib/Catalyst/Plugin/SubRequest.pm +++ b/lib/Catalyst/Plugin/SubRequest.pm @@ -4,7 +4,7 @@ use strict; use warnings; use Time::HiRes qw/tv_interval/; -our $VERSION = '0.15'; +our $VERSION = '0.16'; =head1 NAME @@ -14,16 +14,29 @@ Catalyst::Plugin::SubRequest - Make subrequests to actions in Catalyst use Catalyst 'SubRequest'; - $c->subreq('/test/foo/bar', { template => 'magic.tt' }); + my $res_body = $c->subreq('/test/foo/bar', { template => 'magic.tt' }); - $c->subreq( { path => '/test/foo/bar', - body => $body }, - { template => 'magic.tt' }); + my $res_body = $c->subreq( { + path => '/test/foo/bar', + body => $body + }, { + template => 'magic.tt' + }); + + # Get the full response object + my $res = $c->subreq_res('/test/foo/bar', { + template => 'mailz.tt' + }, { + param1 => 23 + }); + $c->log->warn( $res->content_type ); =head1 DESCRIPTION Make subrequests to actions in Catalyst. Uses the catalyst dispatcher, so it will work like an external url call. +Methods are provided both to get the body of the response and the full +response (L) object. =head1 METHODS @@ -34,16 +47,36 @@ dispatcher, so it will work like an external url call. =item sub_request Takes a full path to a path you'd like to dispatch to. -If the path is passed as a hash ref then it can include body, action, match and path. -Any additional parameters are put into the stash. + +If the path is passed as a hash ref then it can include body, action, +match and path. + +An optional second argument as hashref can contain data to put into the +stash of the subrequest. + +An optional third argument as hashref can contain data to pass as +parameters to the subrequest. + +Returns the body of the response. + +=item subreq_res [path as string or hash ref], [stash as hash ref], [parameters as hash ref] + +=item sub_request_response + +Like C, but returns a full L object. =back =cut *subreq = \&sub_request; +*subreq_res = \&sub_request_response; sub sub_request { + return shift->sub_request_response( @_ )->body ; +} + +sub sub_request_response { my ( $c, $path, $stash, $params ) = @_; $path =~ s#^/##; @@ -93,7 +126,7 @@ sub sub_request { $c->stats->profile( end => 'subrequest: /' . $path ) if ($c->debug); - return $inner_ctx->response->body; + return $inner_ctx->response; } =head1 SEE ALSO