X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FTest%2FRest.pm;h=704cff2f14efbc0b0bc3151a97313da7b226798d;hb=930013e6f19b25a090c3f8839495ad8d9b15ff6d;hp=581409345aa830ef7a991992003b86f3a2d0937c;hpb=7ad87df957f65463dba321ebe616e2581b7ff58f;p=catagits%2FCatalyst-Action-REST.git diff --git a/t/lib/Test/Rest.pm b/t/lib/Test/Rest.pm index 5814093..704cff2 100644 --- a/t/lib/Test/Rest.pm +++ b/t/lib/Test/Rest.pm @@ -1,86 +1,61 @@ -# -# Rest.pm -# Created by: Adam Jacob, Marchex, -# 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, + my $ref = { + 'ua' => LWP::UserAgent->new, 'content_type' => $p{'content_type'}, }; bless $ref, $self; } -sub get { - my $self = shift; - my %p = validate(@_, - { - url => { type => SCALAR }, - }, - ); - my $req = HTTP::Request->new('GET' => $p{'url'}); - $req->content_type($self->{'content_type'}); - return $req; -} - -sub delete { - my $self = shift; - my %p = validate(@_, - { - url => { type => SCALAR }, - }, - ); - my $req = HTTP::Request->new('DELETE' => $p{'url'}); - $req->content_type($self->{'content_type'}); - return $req; -} - -sub put { - my $self = shift; - my %p = validate(@_, - { - url => { type => SCALAR }, - data => 1, - }, - ); - my $req = HTTP::Request->new('PUT' => $p{'url'}); - $req->content_type($self->{'content_type'}); - $req->content_length(do { use bytes; length($p{'data'}) }); - $req->content($p{'data'}); - return $req; -} - -sub post { - my $self = shift; - my %p = validate(@_, - { - url => { type => SCALAR }, - data => { required => 1 }, - }, - ); - my $req = HTTP::Request->new('POST' => $p{'url'}); - $req->content_type($self->{'content_type'}); - $req->content_length(do { use bytes; length($p{'data'}) }); - $req->content($p{'data'}); - return $req; +{ + my @non_data_methods = qw(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 $req = HTTP::Request->new( "$method" => $p{'url'} ); + $req->content_type( $self->{'content_type'} ); + return $req; + }; + } + + my @data_methods = qw(PUT POST); + foreach my $method (@data_methods) { + no strict 'refs'; + my $sub = lc($method); + *{$sub} = sub { + my $self = shift; + my %p = validate( + @_, + { + url => { type => SCALAR }, + data => 1, + }, + ); + my $req = HTTP::Request->new( "$method" => $p{'url'} ); + $req->content_type( $self->{'content_type'} ); + $req->content_length( + do { use bytes; length( $p{'data'} ) } + ); + $req->content( $p{'data'} ); + return $req; + }; + } } - 1;