make release tests happy
[catagits/Catalyst-Controller-DBIC-API.git] / lib / Catalyst / Controller / DBIC / API / Validator / Visitor.pm
CommitLineData
8175463b 1package Catalyst::Controller::DBIC::API::Validator::Visitor;
2#ABSTRACT: Provides validation services for inbound requests against whitelisted parameters
3use Moose;
4use namespace::autoclean;
5
6BEGIN { extends 'Data::DPath::Validator::Visitor'; }
7
abd87a67 8=attribute_private DEBUG
9
10Debugging warnings can be enabled by setting the environment variable
11DATA_DPATH_VALIDATOR_DEBUG to a true value.
12
13=cut
14
8175463b 15use constant DEBUG => $ENV{DATA_DPATH_VALIDATOR_DEBUG} || 0;
16
17around visit_array => sub
18{
19 my ($orig, $self, $array) = @_;
20 $self->dive();
21 warn 'ARRAY: '. $self->current_template if DEBUG;
22 if(@$array == 1 && $array->[0] eq '*')
23 {
24 $self->append_text('[reftype eq "HASH" ]');
25 $self->add_template($self->current_template);
26 }
27 else
28 {
29 if($self->current_template =~ /\/$/)
30 {
31 my $temp = $self->current_template;
32 $self->reset_template();
33 $temp =~ s/\/$//;
34 $self->append_text($temp);
35 }
36 $self->$orig($array);
37 }
38 $self->rise();
39};
40
41sub visit_array_entry
42{
abd87a67 43 # to make release-unused-vars.t happy
44 #my ($self, $elem, $index, $array) = @_;
45 my ($self, $elem) = @_;
8175463b 46 $self->dive();
47 warn 'ARRAYENTRY: '. $self->current_template if DEBUG;
48 if(!ref($elem))
49 {
50 $self->append_text($elem . '/*');
51 $self->add_template($self->current_template);
52 }
53 elsif(ref($elem) eq 'HASH')
54 {
55 $self->visit($elem);
56 }
57 $self->rise();
58 $self->value_type('NONE');
59};
60
61around visit_hash => sub
62{
63 my ($orig, $self, $hash) = @_;
64 $self->dive();
65 if($self->current_template =~ /\/$/)
66 {
67 my $temp = $self->current_template;
68 $self->reset_template();
69 $temp =~ s/\/$//;
70 $self->append_text($temp);
71 }
72 warn 'HASH: '. $self->current_template if DEBUG;
73 $self->$orig($hash);
74 $self->rise();
75};
76
77around visit_value => sub
78{
79 my ($orig, $self, $val) = @_;
80
81 if($self->value_type eq 'NONE')
82 {
83 $self->dive();
84 $self->append_text($val . '/*');
85 $self->add_template($self->current_template);
86 warn 'VALUE: ' . $self->current_template if DEBUG;
87 $self->rise();
88 }
89 elsif($self->value_type eq 'HashKey')
90 {
91 $self->append_text($val);
92 warn 'VALUE: ' . $self->current_template if DEBUG;
93 }
94 else
95 {
96 $self->$orig($val);
97 }
98
99};
100
101
102__PACKAGE__->meta->make_immutable;
103
1041;