refactor serialize actions
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Serialize / YAML / HTML.pm
index 7d6fb31..4773c0b 100644 (file)
@@ -1,52 +1,33 @@
-#
-# Catlyst::Action::Serialize::YAML::HTML.pm
-# Created by: Adam Jacob, Marchex, <adam@hjksolutions.com>
-# Created on: 10/12/2006 03:00:32 PM PDT
-#
-# $Id$
-
 package Catalyst::Action::Serialize::YAML::HTML;
-
-use strict;
-use warnings;
-
-use base 'Catalyst::Action';
-use YAML::Syck;
+use Moose;
+extends 'Catalyst::Action::Serialize::YAML';
 use URI::Find;
+use namespace::clean -except => 'meta';
 
-sub execute {
-    my $self = shift;
-    my ( $controller, $c ) = @_;
-
-    my $stash_key = (
-            $controller->{'serialize'} ?
-                $controller->{'serialize'}->{'stash_key'} :
-                $controller->{'stash_key'} 
-        ) || 'rest';
-    my $app = $c->config->{'name'} || '';
-    my $output = "<html>";
-    $output .= "<title>" . $app . "</title>";
-    $output .= "<body><pre>";
-    my $text = Dump($c->stash->{$stash_key});
-    # Straight from URI::Find
-    my $finder = URI::Find->new(
-                              sub {
-                                  my($uri, $orig_uri) = @_;
-                                  my $newuri;
-                                  if ($uri =~ /\?/) {
-                                      $newuri = $uri . "&content-type=text/html";
-                                  } else {
-                                      $newuri = $uri . "?content-type=text/html";
-                                  }
-                                  return qq|<a href="$newuri">$orig_uri</a>|;
-                              });
-    $finder->find(\$text);
-    $output .= $text;
-    $output .= "</pre>";
-    $output .= "</body>";
-    $output .= "</html>";
-    $c->response->output( $output );
-    return 1;
-}
+around serialize => sub {
+  my $next = shift;
+  my ($self, $data, $c) = @_;
+  my $yaml = $self->$next($data, $c);
+  my $app = $c->config->{name} || '';
+  my $finder = URI::Find->new(sub {
+    my($uri, $orig_uri) = @_;
+    my $newuri;
+    if ($uri =~ /\?/) {
+        $newuri = $uri . "&content-type=text/html";
+    } else {
+        $newuri = $uri . "?content-type=text/html";
+    }
+    return qq|<a href="$newuri">$orig_uri</a>|;
+  });
+  my $output = "<html>";
+  $output .= "<title>" . $app . "</title>";
+  $output .= "<body><pre>";
+  $finder->find(\$yaml);
+  $output .= $yaml;
+  $output .= "</pre>";
+  $output .= "</body>";
+  $output .= "</html>";
+  return $output;
+};
 
 1;