| InfoSys-FreeDB documentation | Contained in the InfoSys-FreeDB distribution. |
InfoSys::FreeDB::Response::Stat - FreeDB stat response
require InfoSys::FreeDB;
# Create a HTTP connection
my $fact = InfoSys::FreeDB->new();
my $conn = $fact->create_connection( {
client_name => 'testing-InfoSys::FreeDB',
client_version => $InfoSys::FreeDB::VERSION,
} );
# Get stat from FreeDB
my $res = $conn->stat();
# Write a bit of stat to STDERR
use IO::Handle;
my $fh = IO::Handle->new_from_fd( fileno(STDERR), 'w' );
$fh->print( "\n", $res->get_proto_cur(), "\n" );
FreeDB stat response
InfoSys::FreeDB::Response::Stat contains information about FreeDB stat responses.
Creates a new InfoSys::FreeDB::Response::Stat object. OPT_HASH_REF is a hash reference used to pass initialization options. OPT_HASH_REF is mandatory. On error an exception Error::Simple is thrown.
Options for OPT_HASH_REF may include:
database_entriesPassed to set_database_entries().
getsPassed to set_gets().
postingPassed to set_posting().
proto_curPassed to set_proto_cur().
proto_maxPassed to set_proto_max().
quotesPassed to set_quotes().
strip_extPassed to set_strip_ext().
updatesPassed to set_updates().
users_curPassed to set_users_cur().
users_maxPassed to set_users_max().
Options for OPT_HASH_REF inherited through package InfoSys::FreeDB::Response may include:
codePassed to set_code(). Mandatory option.
errorPassed to set_error().
resultPassed to set_result(). Mandatory option.
Creates a new InfoSys::FreeDB::Response::Stat object from the specified content reference. CONTENT_REF is a string reference. On error an exception Error::Simple is thrown.
This method is inherited from package InfoSys::FreeDB::Response. Returns the response code.
Returns the total number of entries in the database.
Returns the server's current operating protocol level.
Returns the maximum supported protocol level.
This method is inherited from package InfoSys::FreeDB::Response. Returns the response result text.
Returns the number of users currently connected to the server.
Returns the number of users that can concurrently connect to the server.
This method is inherited from package InfoSys::FreeDB::Response. Returns whether the response has an error or not.
Returns whether the client is allowed to get log information or not.
Returns whether the client is allowed to post new entries or not.
Returns whether the quoted arguments are enabled or not.
Returns whether the extended data is stripped by the server before presented to the user or not.
Returns whether the client is allowed to initiate a database update or not.
This method is inherited from package InfoSys::FreeDB::Response. Set the response code. VALUE is the value. On error an exception Error::Simple is thrown.
Set the total number of entries in the database. VALUE is the value. On error an exception Error::Simple is thrown.
This method is inherited from package InfoSys::FreeDB::Response. State that the response has an error. VALUE is the value. On error an exception Error::Simple is thrown.
State that the client is allowed to get log information. VALUE is the value. On error an exception Error::Simple is thrown.
State that the client is allowed to post new entries. VALUE is the value. On error an exception Error::Simple is thrown.
Set the server's current operating protocol level. VALUE is the value. On error an exception Error::Simple is thrown.
Set the maximum supported protocol level. VALUE is the value. On error an exception Error::Simple is thrown.
State that the quoted arguments are enabled. VALUE is the value. On error an exception Error::Simple is thrown.
This method is inherited from package InfoSys::FreeDB::Response. Set the response result text. VALUE is the value. On error an exception Error::Simple is thrown.
State that the extended data is stripped by the server before presented to the user. VALUE is the value. On error an exception Error::Simple is thrown.
State that the client is allowed to initiate a database update. VALUE is the value. On error an exception Error::Simple is thrown.
Set the number of users currently connected to the server. VALUE is the value. On error an exception Error::Simple is thrown.
Set the number of users that can concurrently connect to the server. VALUE is the value. On error an exception Error::Simple is thrown.
InfoSys::FreeDB, InfoSys::FreeDB::Connection, InfoSys::FreeDB::Connection::CDDBP, InfoSys::FreeDB::Connection::HTTP, InfoSys::FreeDB::Entry, InfoSys::FreeDB::Entry::Track, InfoSys::FreeDB::Match, InfoSys::FreeDB::Response, InfoSys::FreeDB::Response::DiscId, InfoSys::FreeDB::Response::Hello, InfoSys::FreeDB::Response::LsCat, InfoSys::FreeDB::Response::Motd, InfoSys::FreeDB::Response::Proto, InfoSys::FreeDB::Response::Query, InfoSys::FreeDB::Response::Quit, InfoSys::FreeDB::Response::Read, InfoSys::FreeDB::Response::SignOn, InfoSys::FreeDB::Response::Sites, InfoSys::FreeDB::Response::Ver, InfoSys::FreeDB::Response::Whom, InfoSys::FreeDB::Response::Write::1, InfoSys::FreeDB::Response::Write::2, InfoSys::FreeDB::Site
None known (yet.)
First development: September 2003 Last update: December 2003
Vincenzo Zocca
Copyright 2003 by Vincenzo Zocca
This file is part of the InfoSys::FreeDB module hierarchy for Perl by
Vincenzo Zocca.
The InfoSys::FreeDB 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 InfoSys::FreeDB 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 InfoSys::FreeDB module hierarchy; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
| InfoSys-FreeDB documentation | Contained in the InfoSys-FreeDB distribution. |
package InfoSys::FreeDB::Response::Stat; use 5.006; use base qw( InfoSys::FreeDB::Response ); use strict; use warnings; use AutoLoader qw(AUTOLOAD); use Error qw(:try); our $STAT_DB_ENTRIES_RX = '^\s*database\s+entries\s*:\s*(\S+)'; our $STAT_GETS_RX = '^\s*gets\s*:\s*(\S+)'; our $STAT_POSTING_RX = '^\s*posting\s*:\s*(\S+)'; our $STAT_PROTO_CUR_RX = '^\s*current\s+proto\s*:\s*(\S+)'; our $STAT_PROTO_MAX_RX = '^\s*max\s+proto\s*:\s*(\S+)'; our $STAT_QUOTES_RX = '^\s*quotes\s*:\s*(\S+)'; our $STAT_STRIP_EXT = '^\s*strip\s+ext\s*:\s*(\S+)'; our $STAT_UPDATES_RX = '^\s*updates\s*:\s*(\S+)'; our $STAT_USERS_CUR_RX = '^\s*current\s+users\s*:\s*(\S+)'; our $STAT_USERS_MAX_RX = '^\s*max\s+users\s*:\s*(\S+)'; # Package version our ($VERSION) = '$Revision: 0.92 $' =~ /\$Revision:\s+([^\s]+)/; 1; __END__
sub new_from_content_ref { my $class = shift; my $content_ref = shift; # Convert $opt->{content_ref} to @content_ref my @content_ref = split(/[\n\r]+/, ${$content_ref} ); # Parse first line my $line = shift(@content_ref); my ($code) = $line =~ /^\s*(\d{3})\s/; defined ($code) || throw Error::Simple ('ERROR: InfoSys::FreeDB::Response::Stat::new_from_content_ref, first line of specified \'content_ref\' does not contain a code.'); my %opt; if ($code == 210) { pop(@content_ref); %opt = ( code => $code, result => 'Ok', message_text => join("\n", @content_ref), ); foreach my $line (@content_ref) { my $val; if ( ($val) = $line =~ /$STAT_DB_ENTRIES_RX/i ) { $opt{database_entries} = $val; last; } elsif ( ($val) = $line =~ /$STAT_GETS_RX/i ) { $opt{gets} = $val =~ /yes/i; next; } elsif ( ($val) = $line =~ /$STAT_POSTING_RX/i ) { $opt{posting} = $val =~ /yes/i; next; } elsif ( ($val) = $line =~ /$STAT_PROTO_CUR_RX/i ) { $opt{proto_cur} = $val; next; } elsif ( ($val) = $line =~ /$STAT_PROTO_MAX_RX/i ) { $opt{proto_max} = $val; next; } elsif ( ($val) = $line =~ /$STAT_QUOTES_RX/i ) { $opt{quotes} = $val =~ /yes/i; next; } elsif ( ($val) = $line =~ /$STAT_STRIP_EXT/i ) { $opt{strip_ext} = $val =~ /yes/i; next; } elsif ( ($val) = $line =~ /$STAT_USERS_CUR_RX/i ) { $opt{users_cur} = $val; next; } elsif ( ($val) = $line =~ /$STAT_USERS_MAX_RX/i ) { $opt{users_max} = $val; next; } } } else { throw Error::Simple ("ERROR: InfoSys::FreeDB::Response::Stat::new_from_content_ref, unknown code '$code' returned. Allowed code is 210."); } # Create a new object and return it return( $class->new( \%opt ) ); } sub _initialize { my $self = shift; my $opt = defined($_[0]) ? shift : {}; # Check $opt ref($opt) eq 'HASH' || throw Error::Simple("ERROR: InfoSys::FreeDB::Response::Stat::_initialize, first argument must be 'HASH' reference."); # database_entries, SINGLE exists( $opt->{database_entries} ) && $self->set_database_entries( $opt->{database_entries} ); # gets, BOOLEAN exists( $opt->{gets} ) && $self->set_gets( $opt->{gets} ); # posting, BOOLEAN exists( $opt->{posting} ) && $self->set_posting( $opt->{posting} ); # proto_cur, SINGLE exists( $opt->{proto_cur} ) && $self->set_proto_cur( $opt->{proto_cur} ); # proto_max, SINGLE exists( $opt->{proto_max} ) && $self->set_proto_max( $opt->{proto_max} ); # quotes, BOOLEAN exists( $opt->{quotes} ) && $self->set_quotes( $opt->{quotes} ); # strip_ext, BOOLEAN exists( $opt->{strip_ext} ) && $self->set_strip_ext( $opt->{strip_ext} ); # updates, BOOLEAN exists( $opt->{updates} ) && $self->set_updates( $opt->{updates} ); # users_cur, SINGLE exists( $opt->{users_cur} ) && $self->set_users_cur( $opt->{users_cur} ); # users_max, SINGLE exists( $opt->{users_max} ) && $self->set_users_max( $opt->{users_max} ); # Call the superclass' _initialize $self->SUPER::_initialize($opt); # Return $self return($self); } sub _value_is_allowed { return(1); } sub get_database_entries { my $self = shift; return( $self->{InfoSys_FreeDB_Response_Stat}{database_entries} ); } sub get_proto_cur { my $self = shift; return( $self->{InfoSys_FreeDB_Response_Stat}{proto_cur} ); } sub get_proto_max { my $self = shift; return( $self->{InfoSys_FreeDB_Response_Stat}{proto_max} ); } sub get_users_cur { my $self = shift; return( $self->{InfoSys_FreeDB_Response_Stat}{users_cur} ); } sub get_users_max { my $self = shift; return( $self->{InfoSys_FreeDB_Response_Stat}{users_max} ); } sub is_gets { my $self = shift; if ( $self->{InfoSys_FreeDB_Response_Stat}{gets} ) { return(1); } else { return(0); } } sub is_posting { my $self = shift; if ( $self->{InfoSys_FreeDB_Response_Stat}{posting} ) { return(1); } else { return(0); } } sub is_quotes { my $self = shift; if ( $self->{InfoSys_FreeDB_Response_Stat}{quotes} ) { return(1); } else { return(0); } } sub is_strip_ext { my $self = shift; if ( $self->{InfoSys_FreeDB_Response_Stat}{strip_ext} ) { return(1); } else { return(0); } } sub is_updates { my $self = shift; if ( $self->{InfoSys_FreeDB_Response_Stat}{updates} ) { return(1); } else { return(0); } } sub set_database_entries { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'database_entries', $val ) || throw Error::Simple("ERROR: InfoSys::FreeDB::Response::Stat::set_database_entries, the specified value '$val' is not allowed."); # Assignment $self->{InfoSys_FreeDB_Response_Stat}{database_entries} = $val; } sub set_gets { my $self = shift; if (shift) { $self->{InfoSys_FreeDB_Response_Stat}{gets} = 1; } else { $self->{InfoSys_FreeDB_Response_Stat}{gets} = 0; } } sub set_posting { my $self = shift; if (shift) { $self->{InfoSys_FreeDB_Response_Stat}{posting} = 1; } else { $self->{InfoSys_FreeDB_Response_Stat}{posting} = 0; } } sub set_proto_cur { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'proto_cur', $val ) || throw Error::Simple("ERROR: InfoSys::FreeDB::Response::Stat::set_proto_cur, the specified value '$val' is not allowed."); # Assignment $self->{InfoSys_FreeDB_Response_Stat}{proto_cur} = $val; } sub set_proto_max { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'proto_max', $val ) || throw Error::Simple("ERROR: InfoSys::FreeDB::Response::Stat::set_proto_max, the specified value '$val' is not allowed."); # Assignment $self->{InfoSys_FreeDB_Response_Stat}{proto_max} = $val; } sub set_quotes { my $self = shift; if (shift) { $self->{InfoSys_FreeDB_Response_Stat}{quotes} = 1; } else { $self->{InfoSys_FreeDB_Response_Stat}{quotes} = 0; } } sub set_strip_ext { my $self = shift; if (shift) { $self->{InfoSys_FreeDB_Response_Stat}{strip_ext} = 1; } else { $self->{InfoSys_FreeDB_Response_Stat}{strip_ext} = 0; } } sub set_updates { my $self = shift; if (shift) { $self->{InfoSys_FreeDB_Response_Stat}{updates} = 1; } else { $self->{InfoSys_FreeDB_Response_Stat}{updates} = 0; } } sub set_users_cur { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'users_cur', $val ) || throw Error::Simple("ERROR: InfoSys::FreeDB::Response::Stat::set_users_cur, the specified value '$val' is not allowed."); # Assignment $self->{InfoSys_FreeDB_Response_Stat}{users_cur} = $val; } sub set_users_max { my $self = shift; my $val = shift; # Check if isa/ref/rx/value is allowed &_value_is_allowed( 'users_max', $val ) || throw Error::Simple("ERROR: InfoSys::FreeDB::Response::Stat::set_users_max, the specified value '$val' is not allowed."); # Assignment $self->{InfoSys_FreeDB_Response_Stat}{users_max} = $val; }