package IdPAccountManager::ServiceProvider; use strict; use IdPAccountManager::Data::Serviceprovider; use IdPAccountManager::Data::Serviceprovider::Manager; use IdPAccountManager::Tools; use Conf; require Exporter; my @ISA = qw(Exporter); my @EXPORT = qw(); use Carp; INIT { ## Set error mode to non fatal IdPAccountManager::Data::Serviceprovider::Manager->error_mode('return'); } sub new { my ($pkg) = shift; my %args = @_; my $self = {}; ## Bless ServiceProvider object bless $self, $pkg; ## Object may be created either with a hashref as argument or an IdPAccountManager::Data::Serviceprovider object ## Second case is usefull when fetching a set of IdPAccountManager::Data::Serviceprovider via IdPAccountManager::Data::Serviceprovider::Manager if (ref($_[0]) eq 'IdPAccountManager::Data::Serviceprovider') { $self->{'persistent'} = $_[0]; }else { $self->{'persistent'} = IdPAccountManager::Data::Serviceprovider->new(%args); } return $self; } sub load { my $self = shift; my %args = @_; return $self->{'persistent'}->load(%args); } sub get { my $self = shift; my $attribute_name = shift; return $self->{'persistent'}->$attribute_name; } sub save { my $self = shift; unless ($self->{'persistent'}->save()) { IdPAccountManager::Tools::do_log('error', "Failed to save Serviceprovider in DB"); return undef; } } ## Delete a test account sub delete { my $self = shift; unless ($self->{'persistent'}->delete()) { IdPAccountManager::Tools::do_log('error', "Failed to delete a Serviceprovider in DB"); return undef; } } ## Print the content of a test account sub print { my $self = shift; my $fd = shift || \*STDOUT; printf $fd "ServiceProvider ID=%s; entityid=%s; displayname=%s; contacts=%s\n", $self->get('id'), $self->get('entityid'), $self->get('displayname'), $self->get('contacts'); return 1. } ## list all test accounts ## Class method sub list_service_providers { my %args = @_; my $persistent_accounts= IdPAccountManager::Data::Serviceprovider::Manager->get_serviceproviders(%args); my $service_providers; foreach my $persistent_sp (@{$persistent_accounts}) { my $service_provider = new IdPAccountManager::ServiceProvider($persistent_sp); push @$service_providers, $service_provider; } return $service_providers; } 1; # Magic true value required at end of module __END__ =head1 NAME IdPAccountManager::ServiceProvider - Manage Service Providers for which test accounts have been requested for the Test Identity Provider =head1 SYNOPSIS =head1 DESCRIPTION =head1 SUBROUTINES/METHODS =head1 AUTHOR Olivier Salaün (olivier.salaun@renater.fr)