whitespace cleanup
[catagits/Catalyst-Runtime.git] / lib / Catalyst / ActionRole / ConsumesContent.pm
index 0766925..28b5350 100644 (file)
@@ -2,14 +2,13 @@ package Catalyst::ActionRole::ConsumesContent;
 
 use Moose::Role;
 
-requires 'match', 'match_captures';
+requires 'match', 'match_captures', 'list_extra_info';
 
 has allowed_content_types => (
   is=>'ro',
   required=>1,
   lazy=>1,
   isa=>'ArrayRef',
-  auto_deref=>1,
   builder=>'_build_allowed_content_types');
 
 has normalized => (
@@ -36,14 +35,16 @@ sub _build_normalized {
 
 sub _build_allowed_content_types {
     my $self = shift;
-    my @proto = split ',', @{$self->attributes->{Consumes}};
-    return map {
+    my @proto = map {split ',', $_ } @{$self->attributes->{Consumes}};
+    my @converted = map {
       if(my $normalized = $self->normalized->{$_}) {
         ref $normalized ? @$normalized : ($normalized);
       } else {
         $_;
       }
     } @proto;
+
+    return \@converted;
 }
 
 around ['match','match_captures'] => sub {
@@ -57,10 +58,18 @@ around ['match','match_captures'] => sub {
 sub can_consume {
     my ($self, $request_content_type) = @_;
     my @matches = grep { lc($_) eq lc($request_content_type) }
-      $self->allowed_content_types;
+      @{$self->allowed_content_types};
     return @matches ? 1:0;
 }
 
+around 'list_extra_info' => sub {
+  my ($orig, $self, @args) = @_;
+  return {
+    %{ $self->$orig(@args) },
+    CONSUMES => $self->allowed_content_types,
+  };
+};
+
 1;
 
 =head1 NAME
@@ -78,21 +87,21 @@ Catalyst::ActionRole::ConsumesContent - Match on HTTP Request Content-Type
       sub is_json       : Chained('start') Consumes('application/json') { ... }
       sub is_urlencoded : Chained('start') Consumes('application/x-www-form-urlencoded') { ... }
       sub is_multipart  : Chained('start') Consumes('multipart/form-data') { ... }
-      
+
       ## Alternatively, for common types...
 
       sub is_json       : Chained('start') Consume(JSON) { ... }
-      sub is_urlencoded : Chained('start') Consume(HTMLForm)URLEncoded { ... }
-      sub is_multipart  : Chained('start') ConsumeFormData { ... }
+      sub is_urlencoded : Chained('start') Consumes(UrlEncoded) { ... }
+      sub is_multipart  : Chained('start') Consumes(Multipart) { ... }
 
       ## Or allow more than one type
-      
+
       sub is_more_than_one
         : Chained('start')
         : Consumes('application/x-www-form-urlencoded')
         : Consumes('multipart/form-data')
       {
-        ## ... 
+        ## ...
       }
 
       1;
@@ -100,7 +109,7 @@ Catalyst::ActionRole::ConsumesContent - Match on HTTP Request Content-Type
 =head1 DESCRIPTION
 
 This is an action role that lets your L<Catalyst::Action> match on the content
-type of the incoming request.  
+type of the incoming request.
 
 Generally when there's a PUT or POST request, there's a request content body
 with a matching MIME content type.  Commonly this will be one of the types
@@ -139,6 +148,10 @@ An array of strings that are the allowed content types for matching this action.
 Boolean.  Does the current request match content type with what this actionrole
 can consume?
 
+=head2 list_extra_info
+
+Add the accepted content type to the debug screen.
+
 =head1 AUTHORS
 
 Catalyst Contributors, see Catalyst.pm