| Net-FreeDB2 documentation | Contained in the Net-FreeDB2 distribution. |
Net::FreeDB2::Connection - FreeDB/CDDB abstract connection class
See Net::FreeDB2.
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.
Creates a new Net::FreeDB2::Connection object. By default connect () is called to initiate the connection but see option no_connect. See the implementation for complements/restrictions.
Options for OPT_HASH_REF may include:
Mandatory option to name the connecting client software.
Mandatory option with the client software version string.
The hostname of the client. Defaults to &Sys::Hostname::hostname ().
The user of the client. Defaults to scalar (getpwuid ($>));
The FreeDB/CDDB host. Defaults to freedb.freedb.org.
The port on the FreeDB/CDDB host.
Proxy host.
Port on the proxy host. Defaults to 8080.
Proxy user name to use.
Proxy password to use.
Do not call connect () during instanciation.
Set up a connection to the FreeDB/CDDB server after which the methods lscat (), query (), read (), write (), log (), motd (), discid (), proto (), sites (), stat (), ver (), update () and whom () may be called.
Issues an lscat command on the FreeDB/CDDB database. Returns an ARRAY with available categories.
Queries the FreeDB/CDDB database using ENTRY which is a Net::FreeDB2::Entry object. Returns a Net::FreeDB2::Response::Query object.
Reads an entry from the FreeDB/CDDB database using MATCH which is a Net::FreeDB2::Match object. Returns a Net::FreeDB2::Response::Read object.
Writes the specified Net::FreeDB2::Entry object to the FreeDB/CDDB database. TO BE SPECIFIED
Issues an log command on the FreeDB/CDDB database. TO BE SPECIFIED
Issues an motd command on the FreeDB/CDDB database. Returns an ARRAY containing the motd lines.
Issues an discid command on the FreeDB/CDDB database using the Net::FreeDB2::Entry object ENTRY. Returns the discid as calculated by FreeDB/CDDB.
Issues an proto command on the FreeDB/CDDB database. TO BE SPECIFIED
Issues an sites command on the FreeDB/CDDB database. Returns a Net::FreeDB2::Response::Sites object.
Issues an stat command on the FreeDB/CDDB database. TO BE SPECIFIED
Issues a ver command on the FreeDB/CDDB database. TO BE SPECIFIED
Issues an update command on the FreeDB/CDDB database. TO BE SPECIFIED
Issues a whom command on the FreeDB/CDDB database. TO BE SPECIFIED
Set the client host attribute. VALUE is the value.
Returns the client host attribute.
Set the client user attribute. VALUE is the value.
Returns the client user attribute.
Set the client name attribute. VALUE is the value.
Returns the client name attribute.
Set the client version attribute. VALUE is the value.
Returns the client version attribute.
Returns the client user attribute.
Set the FreeDB/CDDB host attribute. VALUE is the value.
Returns the FreeDB/CDDB host attribute.
Set the FreeDB/CDDB port attribute. VALUE is the value.
Returns the FreeDB/CDDB port attribute.
Set the proxy host attribute. VALUE is the value.
Returns the proxy host attribute.
Set the proxy port attribute. VALUE is the value.
Returns the proxy port attribute.
Set the proxy user attribute. VALUE is the value.
Returns the proxy user attribute.
Set the proxy password attribute. VALUE is the value.
Returns the proxy password attribute.
Set the connection attribute. VALUE is the value.
Returns the connection attribute.
Generally, in exceptional situations, Error::Simple exceptions are thrown. See the implementations of this abstract class for details.
Net::FreeDB2::Entry, Net::FreeDB2::Match, Net::FreeDB2::Response, Net::FreeDB2::Response::Query and Net::FreeDB2::Response::Read
None known (yet).
First development: September 2002
Vincenzo Zocca <Vincenzo@Zocca.com>
Copyright 2002, Vincenzo Zocca.
This file is part of the Net::FreeDB2 module hierarchy for Perl by
Vincenzo Zocca.
The Net::FreeDB2 module hierarchy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
The Net::FreeDB2 module hierarchy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with the Net::FreeDB2 module hierarchy; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
| Net-FreeDB2 documentation | Contained in the Net-FreeDB2 distribution. |
package Net::FreeDB2::Connection; # Copyright 2002, Vincenzo Zocca. # See LICENSE section for usage and distribution rights. 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 { throw Error::Simple ("ERROR: Net::FreeDB2::Connection::motd, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP."); } sub discid { throw Error::Simple ("ERROR: Net::FreeDB2::Connection::discid, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP."); } sub proto { throw Error::Simple ("ERROR: Net::FreeDB2::Connection::proto, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP."); } sub sites { throw Error::Simple ("ERROR: Net::FreeDB2::Connection::sites, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP."); } sub stat { throw Error::Simple ("ERROR: Net::FreeDB2::Connection::stat, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP."); } sub ver { throw Error::Simple ("ERROR: Net::FreeDB2::Connection::ver, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP."); } sub update { throw Error::Simple ("ERROR: Net::FreeDB2::Connection::update, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP."); } sub whom { throw Error::Simple ("ERROR: Net::FreeDB2::Connection::whom, call this method either in package Net::FreeDB2::CDDBP or in package Net::FreeDB2::HTTP."); } sub setClientName { my $self = shift; # Set client name $self->{Net_FreeDB2_Connection}{client_name} = shift; } sub getClientName { my $self = shift; # Return client version return ($self->{Net_FreeDB2_Connection}{client_name}); } sub setClientVersion { my $self = shift; # Set client version $self->{Net_FreeDB2_Connection}{client_version} = shift; } sub getClientVersion { my $self = shift; # Return client name return ($self->{Net_FreeDB2_Connection}{client_version}); } sub setClientHost { my $self = shift; # Set client host $self->{Net_FreeDB2_Connection}{client_host} = shift; } sub getClientHost { my $self = shift; # Return client host return ($self->{Net_FreeDB2_Connection}{client_host}); } sub setClientUser { my $self = shift; # Set client user $self->{Net_FreeDB2_Connection}{client_user} = shift; } sub getClientUser { my $self = shift; # Return client user return ($self->{Net_FreeDB2_Connection}{client_user}); } sub setFreeDBHost { my $self = shift; # Set freedb/cddb host $self->{Net_FreeDB2_Connection}{freedb_host} = shift; } sub getFreeDBHost { my $self = shift; # Return freedb/cddb host return ($self->{Net_FreeDB2_Connection}{freedb_host}); } sub setFreeDBPort { my $self = shift; # Set freedb/cddb port $self->{Net_FreeDB2_Connection}{freedb_port} = shift; } sub getFreeDBPort { my $self = shift; # Return freedb/cddb port return ($self->{Net_FreeDB2_Connection}{freedb_port}); } sub setProxyHost { my $self = shift; # Set proxy host $self->{Net_FreeDB2_Connection}{proxy_host} = shift; } sub getProxyHost { my $self = shift; # Return proxy host return ($self->{Net_FreeDB2_Connection}{proxy_host}); } sub setProxyPort { my $self = shift; # Set proxy port $self->{Net_FreeDB2_Connection}{proxy_port} = shift; } sub getProxyPort { my $self = shift; # Return proxy port return ($self->{Net_FreeDB2_Connection}{proxy_port}); } sub setProxyUser { my $self = shift; # Set proxy user $self->{Net_FreeDB2_Connection}{proxy_user} = shift; } sub getProxyUser { my $self = shift; # Return proxy user return ($self->{Net_FreeDB2_Connection}{proxy_user}); } sub setProxyPasswd { my $self = shift; # Set proxy passwd $self->{Net_FreeDB2_Connection}{proxy_passwd} = shift; } sub getProxyPasswd { my $self = shift; # 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__