refactor dispatch some more
[catagits/Web-Simple.git] / lib / Web / Dispatch / Wrapper.pm
index 80e6356..65739fd 100644 (file)
@@ -1,10 +1,15 @@
 package Web::Dispatch::Wrapper;
 
 use strictures 1;
+use Moo;
 use Exporter 'import';
 
 our @EXPORT = qw(dispatch_wrapper redispatch_to response_filter);
 
+extends 'Plack::Middleware';
+
+has 'wrapper' => (is => 'ro', required => 1);
+
 sub dispatch_wrapper (&) {
   my ($code) = @_;
   __PACKAGE__->from_code($code);
@@ -12,7 +17,7 @@ sub dispatch_wrapper (&) {
 
 sub from_code {
   my ($class, $code) = @_;
-  bless(\$code, $class);
+  $class->new(wrapper => $code);
 }
 
 sub redispatch_to {
@@ -34,8 +39,8 @@ sub response_filter (&) {
   });
 }
 
-sub wrap {
-  my $code = ${$_[0]};
+sub to_app {
+  my $code = $_[0]->wrapper;
   my $app = $_[1];
   sub { $code->($_[0], $app) }
 }