File Coverage

blib/lib/CGI/Lazy/Utility/Debug.pm
Criterion Covered Total %
statement 9 126 7.1
branch 0 24 0.0
condition 0 2 0.0
subroutine 3 15 20.0
pod 9 12 75.0
total 21 179 11.7


line stmt bran cond sub pod time code
1             package CGI::Lazy::Utility::Debug;
2              
3 1     1   5 use strict;
  1         3  
  1         38  
4              
5 1     1   6 use Data::Dumper;
  1         2  
  1         60  
6 1     1   26 use File::Basename;
  1         2  
  1         1844  
7              
8             #-------------------------------------------------------------------------------------------------------------------------------
9             sub cookie {
10 0     0 1   my $self = shift;
11 0           my $q = $self->q;
12              
13 0           print $q->header,
14             $q->start_html({-title => 'CGI Test Page'}),
15             $q->h1('Cookies'),
16             $q->table($q->th('Param'), $q->th('Value'),
17             map {
18 0           $q->TR($q->th({-style => "text-align:center"}, $_), $q->td({-style => "text-align:center"}, $q->cookie($_)))
19             } $q->cookie()
20             );
21              
22             }
23              
24             #-------------------------------------------------------------------------------------------------------------------------------
25             sub config {
26 0     0 0   my $self = shift;
27            
28 0           return $self->q->config;
29             }
30              
31             #-------------------------------------------------------------------------------------------------------------------------------
32             sub defaultFile {
33 0     0 0   my $self = shift;
34              
35 0           return $self->{_defaultFile};
36             }
37              
38             #-------------------------------------------------------------------------------------------------------------------------------
39             sub dump {
40 0     0 1   my $self = shift;
41              
42 0           my $fulloutput = "
\n";
43              
44 0           foreach my $thing (@_) {
45 0 0         if (ref $thing) {
46 0           my $output = Dumper($thing);
47              
48 0           $output =~ s/\n/
/g;
49 0           $output =~ s/ / /g;
50 0           $output =~ s/\t/     /g;
51              
52 0           $fulloutput .= $output;
53             } else {
54 0           $fulloutput .= $thing;
55             }
56             }
57              
58 0           $fulloutput .= "\n";
59              
60 0           return $fulloutput;
61             }
62              
63             #-------------------------------------------------------------------------------------------------------------------------------
64             sub edump {
65 0     0 1   my $self = shift;
66              
67 0           my $filename = $self->config->debugfile;
68 0 0         $filename = $self->defaultFile unless $filename;
69              
70 0 0         open OF, ">> /tmp/$filename" or $self->q->errorHandler->couldntOpenDebugFile($filename, $!);
71 0           local $\=$/;
72              
73 0           print OF '-'x20 . $self->timestamp() . '-'x20;
74              
75 0           foreach my $thing (@_) {
76 0 0         if (ref $thing) {
77 0           print OF Dumper($thing);
78             } else {
79 0           print OF $thing;
80             }
81             }
82              
83 0           print OF '-'x40;
84 0           print OF "\n\n";
85              
86 0           close OF;
87             }
88              
89             #-------------------------------------------------------------------------------------------------------------------------------
90             sub edumpreplace {
91 0     0 1   my $self = shift;
92              
93 0           my $filename = $self->config->debugfile;
94 0 0         $filename = $self->defaultFile unless $filename;
95              
96 0 0         open OF, ">> /tmp/$filename" or $self->q->errorHandler->couldntOpenDebugFile($filename, $!);
97 0           local $\=$/;
98              
99 0           print OF '-'x20 . $self->timestamp() . '-'x20;
100              
101 0           foreach my $thing (@_) {
102 0 0         if (ref $thing) {
103 0           print OF Dumper($thing);
104             } else {
105 0           print OF $thing;
106             }
107             }
108              
109 0           print OF '-'x40;
110 0           print OF "\n\n";
111              
112 0           close OF;
113             }
114              
115             #-------------------------------------------------------------------------------------------------------------------------------
116             sub eparam {
117 0     0 1   my $self = shift;
118              
119 0           my $q = $self->q;
120              
121 0           my @list = $q->param();
122 0           my %param;
123              
124 0           foreach (@list) {
125 0           my @values = $q->param($_);
126 0           $param{$_} = \@values;
127             }
128              
129 0           my $filename = $self->config->debugfile;
130 0 0         $filename = $self->defaultFile unless $filename;
131              
132 0 0         open OF, ">> /tmp/$filename" or $self->q->errorHandler->couldntOpenDebugFile($filename, $!);
133              
134 0           local $\=$/;
135              
136 0           print OF '-'x20 . $self->timestamp() . '-'x20;
137 0           foreach my $key (keys %param) {
138 0           foreach (@{$param{$key}}) {
  0            
139 0           print OF "$key \t => \t $_";
140             }
141              
142             }
143              
144 0           foreach my $thing (@_) {
145 0 0         if (ref $thing) {
146 0           print OF Dumper($thing);
147             } else {
148 0           print OF $thing;
149             }
150             }
151              
152 0           print OF '-'x40;
153 0           print OF "\n\n";
154              
155 0           close OF;
156              
157             }
158              
159             #-------------------------------------------------------------------------------------------------------------------------------
160             sub param {
161 0     0 1   my $self = shift;
162              
163 0           my $q = $self->q;
164              
165 0           my @list = $q->param();
166 0           my %param;
167              
168 0           foreach (@list) {
169 0           my @values = $q->param($_);
170 0           $param{$_} = \@values;
171             }
172              
173 0           my $fulloutput;
174              
175 0           $fulloutput .= $q->div({-id => 'debug'},
176             $q->start_html({-title => 'CGI Test Page'}),
177             $q->h1('CGI Parameters'),
178             $q->table({-border => 1}, $q->th('Param'), $q->th('Value'),
179 0           map { my $name = $_;
180 0           map { $q->TR($q->th({-style => "text-align:center"}, $name), $q->td({-style => "text-align:center"}, $_))} @{$param{$name}};
  0            
  0            
181            
182             } keys %param
183             )
184             );
185              
186 0           foreach my $thing (@_) {
187 0 0         if (ref $thing) {
188 0           my $output = Dumper($thing);
189              
190 0           $output =~ s/\n/
/g;
191 0           $output =~ s/ / /g;
192 0           $output =~ s/\t/     /g;
193              
194 0           $fulloutput .= $output;
195             } else {
196 0           $fulloutput .= $thing;
197             }
198             }
199              
200 0           return $fulloutput;
201             }
202              
203             #-------------------------------------------------------------------------------------------------------------------------------
204             sub env {
205 0     0 1   my $self = shift;
206              
207 0           my $q = $self->q;
208              
209 0           my %env_info = (
210             SERVER_SOFTWARE => "the server software",
211             SERVER_NAME => "the server hostname or IP address",
212             GATEWAY_INTERFACE => "the CGI specification revision",
213             SERVER_PROTOCOL => "the server protocol name",
214             SERVER_PORT => "the port number for the server",
215             REQUEST_METHOD => "the HTTP request method",
216             PATH_INFO => "the extra path info",
217             PATH_TRANSLATED => "the extra path info translated",
218             DOCUMENT_ROOT => "the server document root directory",
219             SCRIPT_NAME => "the script name",
220             QUERY_STRING => "the query string",
221             REMOTE_HOST => "the hostname of the client",
222             REMOTE_ADDR => "the IP address of the client",
223             AUTH_TYPE => "the authentication method",
224             REMOTE_USER => "the authenticated username",
225             REMOTE_IDENT => "the remote user is (RFC 931): ",
226             CONTENT_TYPE => "the media type of the data",
227             CONTENT_LENGTH => "the length of the request body",
228             HTTP_ACCEPT => "the media types the client acccepts",
229             HTTP_USER_AGENT => "the browser the client is using",
230             HTTP_REFERER => "the URL of the feferring page",
231             HTTP_COOKIE => "The cookie(s) the client sent"
232             );
233              
234             # Add additional variables defined by web server or browser
235 0           foreach my $name (keys %ENV) {
236 0 0         $env_info{$name} = "an extra variable provided by this server"
237             unless exists $env_info{$name};
238             }
239              
240 0           my $fulloutput;
241              
242 0   0       $fulloutput .= $q->div({-id => 'debug'}, $q->start_html({-title => 'A List of Envirornment Variables'}),
243             $q->h1('CGI Enviornment Variables'),
244             $q->table({-border => 1},
245             $q->Tr($q->th('Variable Name'), $q->th('Description'), $q->th('Value')),
246 0           map { $q->Tr($q->td($q->b($_)),$q->td($env_info{$_}), $q->i($q->td(($ENV{$_} || 'Not Defined')))) }
247             sort keys %env_info,
248             )
249             );
250              
251 0           return $fulloutput;
252             }
253              
254             #-------------------------------------------------------------------------------------------------------------------------------
255             sub q {
256 0     0 0   my $self = shift;
257              
258 0           return $self->{_q};
259             }
260              
261             #-------------------------------------------------------------------------------------------------------------------------------
262             sub new {
263 0     0 1   my $class = shift;
264 0           my $q = shift;
265              
266 0           my ($file, $path, $suffix) = fileparse($0);
267 0           $file .= ".log";
268              
269 0           my $self = {_q => $q, _defaultFile => $file};
270              
271 0           return bless $self, $class;
272             }
273              
274             #-------------------------------------------------------------------------------------------------------------------------------
275             sub timestamp {
276 0     0 1   my ($sec, $min, $hour, $mday, $mon, $year) = (localtime(time))[0..5];
277 0           $year += 1900;
278              
279 0           my $seconds = sprintf("%02d", $sec);
280 0           my $minutes = sprintf("%02d", $min);
281 0           my $hours = sprintf("%02d", $hour);
282 0           my $day = sprintf("%02d", $mday);
283              
284 0           my %monthname = (
285             0=>'Jan',
286             1=>'Feb',
287             2=>'Mar',
288             3=>'Apr',
289             4=>'May',
290             5=>'Jun',
291             6=>'Jul',
292             7=>'Aug',
293             8=>'Sep',
294             9=>'Oct',
295             10=>'Nov',
296             11=>'Dec',
297             );
298              
299 0           my $monthname = $monthname{$mon};
300              
301 0           return "$year-$monthname-$day-$hours:$minutes:$seconds";
302              
303              
304             }
305              
306             1
307              
308             __END__