$OpenInteract2::Request::Apache2::VERSION
=
sprintf
(
"%d.%02d"
,
q$Revision: 1.2 $
=~ /(\d+)\.(\d+)/);
my
(
$log
);
my
@FIELDS
=
qw( apache )
;
OpenInteract2::Request::Apache2->mk_accessors(
@FIELDS
);
my
(
$done
);
sub
init {
my
(
$self
,
$params
) =
@_
;
$log
||= get_logger( LOG_REQUEST );
$log
->is_info &&
$log
->info(
"Creating Apache 2.x request"
);
my
$r
=
$params
->{apache};
unless
(
ref
$r
) {
$log
->error(
"No 'apache' object for creating request"
);
oi_error
"Cannot initialize the OpenInteract2::Request object - "
,
"pass in an Apache2 request object in 'apache'"
;
}
$self
->apache(
$r
);
unless
(
$done
) {
$done
++;
}
my
$apache_uri
=
$r
->parsed_uri;
my
$full_url
=
$apache_uri
->path;
my
$query_args
=
$apache_uri
->query;
if
(
$query_args
) {
$full_url
.=
"?$query_args"
;
}
$log
->is_debug &&
$log
->debug(
"Got URL from apache2 '$full_url'"
);
$self
->assign_request_url(
$full_url
);
my
$cgi
= CGI->new(
$r
);
OpenInteract2::Request::CGI::_assign_params_from_cgi(
$self
,
$cgi
);
my
$in
=
$r
->headers_in();
$self
->referer(
$in
->{
'Referer'
} );
$self
->user_agent(
$in
->{
'User-Agent'
} );
$self
->cookie_header(
$in
->{
'Cookie'
} );
$self
->language_header(
$in
->{
'Accept-Language'
} );
$self
->server_name(
$r
->get_server_name );
$self
->remote_host(
$r
->connection->remote_addr->ip_get );
$log
->is_info &&
$log
->info(
"Finished creating Apache 2.x request"
);
return
$self
;
my
$apache
= Apache::Request->new(
$params
->{apache} );
$self
->apache(
$apache
);
$log
->is_debug &&
$log
->debug(
"Created Apache::Request object and set in OI request"
);
my
$url
=
$apache
->parsed_uri;
my
$request_path
=
$url
->path;
$log
->is_debug &&
$log
->debug(
"Got URL from apache '$request_path'"
);
$self
->assign_request_url(
$request_path
);
my
$num_params
= 0;
foreach
my
$field
(
$apache
->param() ) {
my
@values
=
$apache
->param(
$field
);
if
(
scalar
@values
> 1 ) {
$self
->param(
$field
, \
@values
);
}
else
{
$self
->param(
$field
,
$values
[0] );
}
$num_params
++;
}
$log
->is_debug &&
$log
->debug(
"Set all $num_params parameters ok"
);
my
$num_uploads
= 0;
my
@upload_names
=
$apache
->upload();
$log
->is_debug &&
$log
->debug(
"Got upload names: "
,
join
(
", "
,
@upload_names
) );
foreach
my
$upload_name
(
@upload_names
) {
$log
->is_debug &&
$log
->debug(
"Checking for upload in upload name '$upload_name'..."
);
my
$upload
=
$apache
->upload(
$upload_name
);
$log
->is_debug &&
$log
->debug(
"Upload retrieved isa: "
,
ref
$upload
);
next
unless
(
ref
$upload
);
my
$oi_upload
= OpenInteract2::Upload->new(
{
name
=>
$upload
->name,
content_type
=>
$upload
->type,
size
=>
$upload
->size,
filehandle
=>
$upload
->bb,
filename
=>
$upload
->filename,
});
$self
->_set_upload(
$upload
->name,
$oi_upload
);
$num_uploads
++;
}
$log
->is_debug &&
$log
->debug(
"Set all $num_uploads uploaded files"
);
my
$in
=
$apache
->headers_in();
$self
->referer(
$in
->{
'Referer'
} );
$self
->user_agent(
$in
->{
'User-Agent'
} );
$self
->cookie_header(
$in
->{
'Cookie'
} );
$self
->language_header(
$in
->{
'Accept-Language'
} );
$self
->server_name(
$apache
->get_server_name );
$self
->remote_host(
$apache
->connection->remote_addr->ip_get );
$log
->is_info &&
$log
->info(
"Finished creating Apache 2.x request"
);
return
$self
;
}
1;