Business-PaperlessTrans

 view release on metacpan or  search on metacpan

lib/Business/PaperlessTrans/Client.pm  view on Meta::CPAN

package Business::PaperlessTrans::Client;
use strict;
use warnings;
use namespace::autoclean;

our $VERSION = '0.002000'; # VERSION

use Moose;
use Class::Load 0.20 'load_class';
use Data::Printer alias => 'Dumper';
use Carp;

use MooseX::Types::Path::Class     qw( File Dir           );
use File::ShareDir::ProjectDistDir qw( dist_file dist_dir );

use XML::Compile::WSDL11;
use XML::Compile::SOAP11;
use XML::Compile::Transport::SOAPHTTP;

with 'MooseY::RemoteHelper::Role::Client';

sub submit {
	my ( $self, $request ) = @_;

	my %request = %{ $self->_finalize_request( $request ) };

	Dumper %request if $self->debug >= 1;

	my ( $answer, $trace ) = $self->_get_call( $request->type )->( %request );

	carp "REQUEST >\n"  . $trace->request->as_string  if $self->debug > 1;
	carp "RESPONSE <\n" . $trace->response->as_string if $self->debug > 1;

	Dumper $answer  if $self->debug >= 1;

	my $res = $answer->{parameters}{$request->type . 'Result'};

	my $res_c = 'Business::PaperlessTrans::Response::' . $request->type;

	return load_class( $res_c )->new( $res );
}

sub _finalize_request {
	my ( $self, $request ) = @_;

	my %request;
	if ( $request->type eq 'TestConnection' ) {
		%request = ( %{ $request->serialize },
			token => {
				TerminalID  => $self->user,
				TerminalKey => $self->pass,
			},
		);
	}
	else {
		%request = ( req => {
			%{ $request->serialize },
			Token => {
				TerminalID  => $self->user,
				TerminalKey => $self->pass,
			},
			TestMode => $self->test ? 'True' : 'False',
		});
	}



( run in 1.326 second using v1.01-cache-2.11-cpan-39bf76dae61 )