Net-FreeDB2
view release on metacpan or search on metacpan
Connection/Connection.pm view on Meta::CPAN
require 5.005_62;
use strict;
use warnings;
use Error qw (:try);
require Exporter;
use AutoLoader qw(AUTOLOAD);
our @ISA = qw(Exporter);
# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.
# This allows declaration use Net::FreeDB2::Connection ':all';
# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
# will save memory.
our %EXPORT_TAGS = ( 'all' => [ qw(
) ] );
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
our @EXPORT = qw(
);
our ( $VERSION ) = '$Revision: 0.8.2.4 $ ' =~ /\$Revision:\s+([^\s]+)/;
sub new {
my $class = shift;
my $self = {};
bless ($self, (ref($class) || $class));
return ($self->_initialize (@_));
}
sub _initialize {
my $self = shift;
my $opt = shift || {};
# Set client_name and client_version
defined ($opt->{client_name}) || throw Error::Simple ('ERROR: Net::FreeDB2::Connection::_initialize, mandatory option \'client_name\' missing.');
$self->setClientName ($opt->{client_name});
defined ($opt->{client_version}) || throw Error::Simple ('ERROR: Net::FreeDB2::Connection::_initialize, mandatory option \'client_version\' missing.');
$self->setClientVersion ($opt->{client_version});
# Set client_host
if ($opt->{client_host}) {
$self->setClientHost ($opt->{client_host});
} else {
use Sys::Hostname;
$self->setClientHost (&Sys::Hostname::hostname ());
}
# Set client_user
if ($opt->{client_user}) {
$self->setClientUser ($opt->{client_user});
} else {
$self->setClientUser (scalar (getpwuid ($>)));
}
# Set freedb_host
if ($opt->{freedb_host}) {
$self->setFreeDBHost ($opt->{freedb_host});
} else {
$self->setFreeDBHost ('freedb.freedb.org');
}
# Set freedb_port
$self->setFreeDBPort ($opt->{freedb_port});
# Set proxy_host
$self->setProxyHost ($opt->{proxy_host});
# Set proxy_port
$self->setProxyPort ($opt->{proxy_port});
# Set proxy_user
$self->setProxyUser ($opt->{proxy_user});
# Set proxy_passwd
$self->setProxyPasswd ($opt->{proxy_passwd});
# Connect
exists ($opt->{no_connect}) || $self->connect ();
# Return instance
return ($self);
}
sub connect {
throw Error::Simple ("ERROR: Net::FreeDB2::Connection::connect, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP.");
}
sub lscat {
throw Error::Simple ("ERROR: Net::FreeDB2::Connection::lscat, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP.");
}
sub query {
throw Error::Simple ("ERROR: Net::FreeDB2::Connection::query, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP.");
}
sub read {
throw Error::Simple ("ERROR: Net::FreeDB2::Connection::read, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP.");
}
sub write {
throw Error::Simple ("ERROR: Net::FreeDB2::Connection::write, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP.");
}
sub help {
throw Error::Simple ("ERROR: Net::FreeDB2::Connection::help, oh come on, RTFM!!!");
}
sub log {
throw Error::Simple ("ERROR: Net::FreeDB2::Connection::log, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP.");
}
sub motd {
Connection/Connection.pm view on Meta::CPAN
# Return proxy passwd
return ($self->{Net_FreeDB2_Connection}{proxy_passwd});
}
sub setConnection {
my $self = shift;
# Set connection
$self->{Net_FreeDB2_Connection}{connection} = shift;
}
sub getConnection {
my $self = shift;
# Return connection
return ($self->{Net_FreeDB2_Connection}{connection});
}
1;
__END__
=head1 NAME
Net::FreeDB2::Connection - FreeDB/CDDB abstract connection class
=head1 SYNOPSIS
See L<Net::FreeDB2>.
=head1 DESCRIPTION
C<Net::FreeDB2::Connection> is an abstract class to represent connections to FreeDB/CDDB servers. After a successfull connection, FreeDB/CDDB queries, reads etc can be made to obtain/provide information from/to FreeDB/CDDB databases.
=head1 CONSTRUCTOR
=over
=item new (OPT_HASH_REF)
Creates a new C<Net::FreeDB2::Connection> object. By default C<connect ()> is called to initiate the connection but see option C<no_connect>. See the implementation for complements/restrictions.
Options for C<OPT_HASH_REF> may include:
=over
=item client_name
Mandatory option to name the connecting client software.
=item client_version
Mandatory option with the client software version string.
=item client_host
The hostname of the client. Defaults to C<&Sys::Hostname::hostname ()>.
=item client_user
The user of the client. Defaults to C<scalar (getpwuid ($E<gt>))>;
=item freedb_host
The FreeDB/CDDB host. Defaults to C<freedb.freedb.org>.
=item freedb_port
The port on the FreeDB/CDDB host.
=item proxy_host
Proxy host.
=item proxy_port
Port on the proxy host. Defaults to C<8080>.
=item proxy_user
Proxy user name to use.
=item proxy_passwd
Proxy password to use.
=item no_connect
Do not call C<connect ()> during instanciation.
=back
=back
=head1 METHODS
=over
=item connect ()
Set up a connection to the FreeDB/CDDB server after which the methods C<lscat ()>, C<query ()>, C<read ()>, C<write ()>, C<log ()>, C<motd ()>, C<discid ()>, C<proto ()>, C<sites ()>, C<stat ()>, C<ver ()>, C<update ()> and C<whom ()> may be called.
=item lscat ()
Issues an C<lscat> command on the FreeDB/CDDB database. Returns an C<ARRAY> with available categories.
=item query (ENTRY)
Queries the FreeDB/CDDB database using C<ENTRY> which is a C<Net::FreeDB2::Entry> object. Returns a C<Net::FreeDB2::Response::Query> object.
=item read (MATCH)
Reads an entry from the FreeDB/CDDB database using C<MATCH> which is a C<Net::FreeDB2::Match> object. Returns a C<Net::FreeDB2::Response::Read> object.
=item write (ENTITY)
Writes the specified C<Net::FreeDB2::Entry> object to the FreeDB/CDDB database. TO BE SPECIFIED
=item log ()
Issues an C<log> command on the FreeDB/CDDB database. TO BE SPECIFIED
( run in 2.526 seconds using v1.01-cache-2.11-cpan-df04353d9ac )