+ # get header data, get request_id from %content if defined for ease of use
+ my %req_headers = %{ $self->param("headers") || {} };
+ if ( defined $content{"request_id"} ) {
+ $req_headers{"X-VPS-REQUEST-ID"} = $content{"request_id"};
+ }
+ unless ( defined( $req_headers{"X-VPS-REQUEST-ID"} ) ) {
+ $req_headers{"X-VPS-REQUEST-ID"} = $self->request_id();
+ }
+
+ my %options = (
+ "Content-Type" => "text/namevalue",
+ "headers" => \%req_headers,
+ );
+
+ $self->path( $self->param("path_transaction") );
+ my ( $tpage, $tresp, %tresp_headers ) =
+ $self->https_post( \%options, \%params );
+
+ $self->param(
+ "transaction_response" => {
+ page => $tpage,
+ response => $tresp,
+ headers => \%tresp_headers,
+ },
+ );
+
+ # $tpage should contain name=value[[&name=value]...] pairs
+ my $cgi = CGI->new("$tpage");
+
+ if ( $cgi->param("RESULT") eq "0" ) {
+ my $response_id = $tresp_headers{"X-VPS-RESPONSE-ID"};
+ $options{headers}->{"X-VPS-RESPONSE-ID"} = $response_id;
+ $self->path( $self->param("path_commit") );
+ my ( $cpage, $cresp, %cresp_headers ) =
+ $self->https_post( \%options, \%params );
+ $self->param(
+ "commit_response" => {
+ page => $cpage,
+ response => $cresp,
+ headers => \%cresp_headers,
+ },
+ );
+ my $comcgi = CGI->new("$cpage");
+
+ # merge commit results with transaction
+ foreach my $p ( $comcgi->param() ) {
+ $cgi->param( $p => $comcgi->param($p) );
+ }
+ }