Added recursive -r flag to prove example
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Engine / Apache / MP20 / Apreq.pm
1 package Catalyst::Engine::Apache::MP20::Apreq;
2
3 use strict;
4 use base 'Catalyst::Engine::Apache::MP20::Base';
5
6 use Apache2::Request ();
7 use Apache2::Upload  ();
8
9 =head1 NAME
10
11 Catalyst::Engine::Apache::MP20::Apreq - Apreq class for MP 2.0 Engines
12
13 =head1 SYNOPSIS
14
15 See L<Catalyst>.
16
17 =head1 DESCRIPTION
18
19 This is the Catalyst engine specialized for Apache mod_perl version 2.0.
20
21 =head1 OVERLOADED METHODS
22
23 This class overloads some methods from C<Catalyst::Engine::Apache::MP20::Base>.
24
25 =over 4
26
27 =item $c->prepare_parameters
28
29 =cut
30
31 sub prepare_parameters {
32     my $c = shift;
33
34     my @params;
35
36     if ( my $table = $c->apache->param ) {
37
38         $table->do( sub {
39             my ( $field, $value ) = @_;
40             push( @params, $field, $value );
41             return 1;
42         });
43
44         $c->request->param(@params);
45     }
46 }
47
48 =item $c->prepare_request($r)
49
50 =cut
51
52 sub prepare_request {
53     my ( $c, $r ) = @_;
54     $c->apache( Apache2::Request->new($r) );
55 }
56
57 =item $c->prepare_uploads
58
59 =cut
60
61 sub prepare_uploads {
62     my $c = shift;
63
64     my @uploads;
65
66     $c->apache->upload->do( sub {
67         my ( $field, $upload ) = @_;
68
69         my $object = Catalyst::Request::Upload->new(
70             filename => $upload->filename,
71             size     => $upload->size,
72             tempname => $upload->tempname,
73             type     => $upload->type
74         );
75
76         push( @uploads, $field, $object );
77
78         return 1;
79     });
80
81     $c->request->upload(@uploads);
82 }
83
84 =back
85
86 =head1 SEE ALSO
87
88 L<Catalyst>, L<Catalyst::Engine>, L<Catalyst::Engine::Apache::MP20::Base>.
89
90 =head1 AUTHOR
91
92 Sebastian Riedel, C<sri@cpan.org>
93 Christian Hansen C<ch@ngmedia.com>
94
95 =head1 COPYRIGHT
96
97 This program is free software, you can redistribute it and/or modify it under
98 the same terms as Perl itself.
99
100 =cut
101
102 1;