package BookPub::RDAS::Service;

use Carp;

use lib '/app/tools/common/lib';
use Common::Assert;

use lib '/app/tools/rdas/lib';
use base 'BookPub::Tracker::Service';

sub _validServices {
    (
        BookPub::Tracker::Service::APPLE,        BookPub::Tracker::Service::AMAZON,
        BookPub::Tracker::Service::BARNES_NOBLE, BookPub::Tracker::Service::BORDERS,
        BookPub::Tracker::Service::SONY,         BookPub::Tracker::Service::GOOGLE,
    );
}

sub validPhysicalServices {
    ( BookPub::Tracker::Service::AMAZON, BookPub::Tracker::Service::BARNES_NOBLE, BookPub::Tracker::Service::BORDERS, );
}

sub GetAllServiceIDs {
    return shift->_validServices();
}

sub _initProperties {
    my ( $self, $hrProperties ) = @_;

    die "Service ID required" unless ( $hrProperties->{service_id} );
    die "Service ID is not supported in RDAS" unless ( $self->_isValidServiceID( $hrProperties->{service_id} ) );

    return $self->SUPER::_initProperties($hrProperties);
}

sub _isValidServiceID {
    my $self = shift;
    my $serviceID = shift || return;

    for my $id ( $self->_validServices ) {
        return 1 if ( $id == $serviceID );
    }

    return;
}

1;
