Remove not_implemented from the list of allowed methods
[catagits/Catalyst-Action-Serialize-Data-Serializer.git] / t / lib / Test / Rest.pm
index bb748e9..7032cc8 100644 (file)
@@ -1,21 +1,17 @@
-#
-# Rest.pm
-# Created by: Adam Jacob, Marchex, <adam@marchex.com>
-# Created on: 10/16/2006 11:11:25 AM PDT
-#
-# $Id: $
-
 package Test::Rest;
 
-use strict;
-use warnings;
+use Moose;
+use namespace::autoclean;
 
 use LWP::UserAgent;
 use Params::Validate qw(:all);
 
 sub new {
     my $self = shift;
-    my %p    = validate( @_, { content_type => { type => SCALAR }, }, );
+    my %p    = validate( @_, { 
+            content_type => { type => SCALAR }, 
+        }, 
+    );
     my $ref  = {
         'ua'           => LWP::UserAgent->new,
         'content_type' => $p{'content_type'},
@@ -24,14 +20,21 @@ sub new {
 }
 
 {
-    my @non_data_methods = qw(GET DELETE OPTIONS);
+    my @non_data_methods = qw(HEAD GET DELETE OPTIONS);
     foreach my $method (@non_data_methods) {
         no strict 'refs';
         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;
         };
@@ -48,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'} ) }