Business-CyberSource
view release on metacpan or search on metacpan
lib/Business/CyberSource/Request.pm view on Meta::CPAN
package Business::CyberSource::Request;
use 5.010;
use strict;
use warnings;
use namespace::autoclean;
our $VERSION = '0.010008'; # VERSION
use Moose;
extends 'Business::CyberSource::Message';
with qw(
MooseX::RemoteHelper::CompositeSerialization
);
use MooseX::Types::CyberSource qw( PurchaseTotals Service Items InvoiceHeader OtherTax ShipFrom ShipTo );
use Module::Runtime qw( use_module );
our @CARP_NOT = ( 'Class::MOP::Method::Wrapped', __PACKAGE__ );
before serialize => sub { ## no critic qw( Subroutines::RequireFinalReturn )
my $self = shift;
if ( !$self->has_total && ( !$self->has_items || $self->items_is_empty ) ) {
die ## no critic ( ErrorHandling::RequireCarping )
use_module('Business::CyberSource::Exception::ItemsOrTotal')->new;
}
};
sub add_item {
my ( $self, $args ) = @_;
my $item;
unless ( blessed $args
&& $args->isa('Business::CyberSource::RequestPart::Item') )
{
$item =
use_module('Business::CyberSource::RequestPart::Item')->new($args);
}
else {
$item = $args;
}
$self->items( [] ) if !$self->has_items;
return $self->_push_item($item);
}
sub _build_service {
return use_module('Business::CyberSource::RequestPart::Service')->new;
}
has comments => (
remote_name => 'comments',
isa => 'Str',
traits => ['SetOnce'],
is => 'rw',
);
has service => (
isa => Service,
is => 'ro',
lazy_build => 1,
required => 1,
coerce => 1,
reader => undef,
( run in 1.078 second using v1.01-cache-2.11-cpan-39bf76dae61 )