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 )