Changes to accommodate Action::REST::ForBrowsers
Dave Rolsky [Sat, 22 Jan 2011 15:57:30 +0000 (09:57 -0600)]
lib/Catalyst/Request/REST.pm
lib/Catalyst/Request/REST/ForBrowsers.pm
t/lib/Test/Rest.pm

index 0dacfc6..d6b14d1 100644 (file)
@@ -23,7 +23,7 @@ sub _insert_self_into {
   my $req_class = $app->request_class;
   return if $req_class->isa($class);
   my $req_class_meta = Moose->init_meta( for_class => $req_class );
-  my $role = $self->_related_role;
+  my $role = $class->_related_role;
   return if $req_class_meta->does_role($role);
   if ($req_class eq 'Catalyst::Request') {
     $app->request_class($class);
index cf4a153..7b119c8 100644 (file)
@@ -9,6 +9,8 @@ $VERSION = eval $VERSION;
 extends 'Catalyst::Request::REST';
 with 'Catalyst::TraitFor::Request::REST::ForBrowsers';
 
+sub _related_role { 'Catalyst::TraitFor::Request::REST::ForBrowsers' }
+
 __PACKAGE__->meta->make_immutable;
 
 1;
index 704cff2..854e5c8 100644 (file)
@@ -26,8 +26,15 @@ sub new {
         my $sub = lc($method);
         *$sub = sub {
             my $self = shift;
-            my %p    = validate( @_, { url => { type => SCALAR }, }, );
+            my %p = validate(
+                @_,
+                {
+                    url     => { type => SCALAR },
+                    headers => { type => HASHREF, default => {} },
+                },
+            );
             my $req  = HTTP::Request->new( "$method" => $p{'url'} );
+            $req->header( $_ => $p{headers}{$_} ) for keys %{ $p{headers} };
             $req->content_type( $self->{'content_type'} );
             return $req;
         };
@@ -44,9 +51,11 @@ sub new {
                 {
                     url  => { type => SCALAR },
                     data => 1,
+                    headers => { type => HASHREF, default => {} },
                 },
             );
             my $req = HTTP::Request->new( "$method" => $p{'url'} );
+            $req->header( $_ => $p{headers}{$_} ) for keys %{ $p{headers} };
             $req->content_type( $self->{'content_type'} );
             $req->content_length(
                 do { use bytes; length( $p{'data'} ) }