Skip to content
Snippets Groups Projects
ServiceProvider.pm 2.76 KiB
Newer Older
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)