3c98df49bdec0f272d9336f58f0914a7a1c52043
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Engine / Apache / MP19 / Apreq.pm
1 package Catalyst::Engine::Apache::MP19::Apreq;
2
3 use strict;
4 use base 'Catalyst::Engine::Apache::MP19::Base';
5
6 use Apache::Request ();
7 use Apache::Upload  ();
8
9 =head1 NAME
10
11 Catalyst::Engine::Apache::MP19::Apreq - Apreq class for MP 1.9 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 1.99.
20
21 =head1 OVERLOADED METHODS
22
23 This class overloads some methods from C<Catalyst::Engine::Apache::MP19::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     $c->apache->param->do( sub {
37         my ( $field, $value ) = @_;
38         push( @params, $field, $value );
39         return 1;
40     });
41
42     $c->request->param(@params);
43 }
44
45 =item $c->prepare_request($r)
46
47 =cut
48
49 sub prepare_request {
50     my ( $c, $r ) = @_;
51     $c->apache( Apache::Request->new($r) );
52 }
53
54 =item $c->prepare_uploads
55
56 =cut
57
58 sub prepare_uploads {
59     my $c = shift;
60
61     # This is a workaround for a know bug with libapreq <= 2.0.4
62     # http://svn.apache.org/viewcvs.cgi?rev=122925&view=rev
63     
64     my @uploads;    
65
66     for my $field ( $c->request->param ) {
67
68         for my $upload ( $c->apache->upload($field) ) {
69
70             my $object = Catalyst::Request::Upload->new(
71                 filename => $upload->filename,
72                 size     => $upload->size,
73                 tempname => $upload->tempname,
74                 type     => $upload->type
75             );
76
77             push( @uploads, $field, $object );
78         }
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::MP19::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;