use Moose;
my $meta = __PACKAGE__->meta;
sub BUILD {
my ($self, $attributes) = @_;
$meta->add_attribute('billing_address', is => 'rw');
$self->billing_address(Net::Braintree::Address->new($attributes->{billing_address})) if ref($attributes->{billing_address}) eq 'HASH';
delete($attributes->{billing_address});
$self->set_attributes_from_hash($self, $attributes);
}
sub create {
my ($class, $params) = @_;
$class->gateway->credit_card->create($params);
}
sub delete {
my ($class, $token) = @_;
$class->gateway->credit_card->delete($token);
}
sub update {
my($class, $token, $params) = @_;
$class->gateway->credit_card->update($token, $params);
}
sub find {
my ($class, $token) = @_;
$class->gateway->credit_card->find($token);
}
sub gateway {
Net::Braintree->configuration->gateway;
}
sub masked_number {
my $self = shift;
return $self->bin . "******" . $self->last_4;
}
sub is_default {
return shift->default;
}
1;