File Coverage

blib/lib/Dancer/Plugin/Transformator.pm
Criterion Covered Total %
statement 15 28 53.5
branch 0 6 0.0
condition n/a
subroutine 5 8 62.5
pod n/a
total 20 42 47.6


line stmt bran cond sub pod time code
1 2     2   354610 use strict;
  2         5  
  2         64  
2 2     2   8 use warnings;
  2         2  
  2         67  
3              
4             package Dancer::Plugin::Transformator;
5              
6             # ABSTRACT: Dancer plugin for Net::NodeTransformator
7              
8 2     2   595 use Dancer ':syntax';
  2         202096  
  2         7  
9 2     2   1565 use Dancer::Plugin;
  2         2481  
  2         149  
10 2     2   494 use Net::NodeTransformator;
  2         73562  
  2         621  
11              
12             our $VERSION = '0.001'; # VERSION
13             our $CLASS = __PACKAGE__;
14              
15             our $NNT;
16              
17             sub _get_instance {
18 0     0     my $config = plugin_setting;
19 0 0         if ( $config->{connect} ) {
20 0           return Net::NodeTransformator->new( $config->{connect} );
21             }
22             else {
23 0 0         unless ($NNT) {
24 0           $NNT = Net::NodeTransformator->standalone;
25             }
26 0           return $NNT;
27             }
28             }
29              
30             register transform => sub {
31 0     0     my ( $engine, $input, $data ) = @_;
32 0           my $nnt = _get_instance();
33 0           $nnt->transform( $engine, $input, $data );
34             };
35              
36             register transform_output => sub {
37 0     0     my ( $engine, $data ) = @_;
38 0 0         var $CLASS = [] unless exists vars->{$CLASS};
39 0           push @{ vars->{$CLASS} } => { engine => $engine, data => $data };
  0            
40             };
41              
42             hook after => sub {
43             my $response = shift;
44             if ( exists vars->{$CLASS} ) {
45             my $nnt = _get_instance();
46             my $transforms = delete vars->{$CLASS};
47             foreach my $transform (@$transforms) {
48             $response->content(
49             $nnt->transform(
50             $transform->{engine}, $response->content,
51             $transform->{data}
52             )
53             );
54             }
55             }
56             };
57              
58             register_plugin;
59              
60             __END__