From: ivan Date: Wed, 11 Apr 2007 18:15:19 +0000 (+0000) Subject: B:OP:HTTPS: set response_page, response_code, response_headers X-Git-Tag: BUSINESS_ONLINEPAYMENT_3_00_08~5 X-Git-Url: http://git.freeside.biz/gitweb/?p=Business-OnlinePayment.git;a=commitdiff_plain;h=442ce3915cfcdb6586dddab405711004e82d663c B:OP:HTTPS: set response_page, response_code, response_headers --- diff --git a/OnlinePayment.pm b/OnlinePayment.pm index 9b251c8..2dc51db 100644 --- a/OnlinePayment.pm +++ b/OnlinePayment.pm @@ -6,7 +6,7 @@ use Carp; require 5.005; -$VERSION = '3.00_07'; +$VERSION = '3.00_08'; $VERSION = eval $VERSION; # modperlstyle: convert the string into a number # Remember subclasses we have "wrapped" submit() with _pre_submit() diff --git a/OnlinePayment/HTTPS.pm b/OnlinePayment/HTTPS.pm index 5520e9c..1f84069 100644 --- a/OnlinePayment/HTTPS.pm +++ b/OnlinePayment/HTTPS.pm @@ -6,7 +6,7 @@ use URI::Escape; use Tie::IxHash; use base qw(Business::OnlinePayment); -$VERSION = '0.06'; +$VERSION = '0.07'; $DEBUG = 0; BEGIN { @@ -139,14 +139,29 @@ sub https_get { keys %$post_data ); } + $self->build_subs(qw( response_page response_code response_headers )); + if ( $ssl_module eq 'Net::SSLeay' ) { import Net::SSLeay qw(get_https make_headers); my $headers = make_headers(%headers); - get_https( $self->server, $self->port, $path, $headers, "", - $opts->{"Content-Type"} ); - } - elsif ( $ssl_module eq 'Crypt::SSLeay' ) { + + my( $res_page, $res_code, @res_headers ) = + get_https( $self->server, + $self->port, + $path, + $headers, + "", + $opts->{"Content-Type"}, + ); + + $self->response_page( $res_page ); + $self->response_code( $res_code ); + $self->response_headers( { @res_headers } ); + + ( $res_page, $res_code, @res_headers ); + + } elsif ( $ssl_module eq 'Crypt::SSLeay' ) { import HTTP::Request::Common qw(GET); @@ -161,14 +176,19 @@ sub https_get { } my $res = $ua->request( GET($url) ); - ( - $res->content, $res->code, - map { $_ => $res->header($_) } $res->header_field_names - ); - } - else { + my @res_headers = map { $_ => $res->header($_) } + $res->header_field_names; + + $self->response_page( $res->content ); + $self->response_code( $res->code ); + $self->response_headers( { @res_headers } ); + + ( $res->content, $res->code, @res_headers ); + + } else { die "unknown SSL module $ssl_module"; } + } =item https_post [ \%options ] SCALAR | HASHREF | FIELD => VALUE, ... @@ -232,6 +252,8 @@ sub https_post { map { " $_ => " . $post_data->{$_} . "\n" } keys %$post_data ); } + $self->build_subs(qw( response_page response_code response_headers )); + if ( $ssl_module eq 'Net::SSLeay' ) { import Net::SSLeay qw(post_https make_headers make_form); @@ -244,10 +266,23 @@ sub https_post { } my $raw_data = ref($post_data) ? make_form(%$post_data) : $post_data; - post_https( $self->server, $self->port, $self->path, $headers, - $raw_data, $opts->{"Content-Type"} ); - } - elsif ( $ssl_module eq 'Crypt::SSLeay' ) { + + my( $res_page, $res_code, @res_headers ) = + post_https( $self->server, + $self->port, + $self->path, + $headers, + $raw_data, + $opts->{"Content-Type"}, + ); + + $self->response_page( $res_page ); + $self->response_code( $res_code ); + $self->response_headers( { @res_headers } ); + + ( $res_page, $res_code, @res_headers ); + + } elsif ( $ssl_module eq 'Crypt::SSLeay' ) { import HTTP::Request::Common qw(POST); @@ -276,14 +311,19 @@ sub https_post { $res = $ua->request($req); } - ( - $res->content, $res->code, - map { $_ => $res->header($_) } $res->header_field_names - ); - } - else { + my @res_headers = map { $_ => $res->header($_) } + $res->header_field_names; + + $self->response_page( $res->content ); + $self->response_code( $res->code ); + $self->response_headers( { @res_headers } ); + + ( $res->content, $res->code, @res_headers ); + + } else { die "unknown SSL module $ssl_module"; } + } =back