slackget10::Network::Connection - A wrapper for network operation in slack-get


Version 1.0.0


This class is anoter wrapper for slack-get. It will encapsulate all nework operation. This class can chang a lot before the release and it may be rename in slackget10::NetworkConnection.

Some words about subclass

This class is a wrapper for subclass like slackget10::Network::Connection::HTTP or slackget10::Network::Connection::FTP. You can add a class for a new protocol (and update this constructor) very simply but you must know that all class the slackget10::Network::Connection::* must have the following methods (the format is : <method name(<arguments>)> : <returned value>, parmaeters between [] are optionnals):

        - test_server : a float (the server response time)
        - fetch_file([$remote_filename],[$local_file]) : a boolean (1 or 0). NOTE: this method store the fetched file on the hard disk. If $local_file is not defined, fetch() must store the file in <update-directory>.
        - fetch_all : a boolean (1 or 0)
        - get_file([$remote_filename]) : the file content



        use slackget10::Network::Connection;
        my $connection = slackget10::Network::Connection->new('');
        my $file = $connection->get_file('FILELIST.TXT');
        or :
        my $connection = slackget10::Network::Connection->new('');
        my $file = $connection->get_file;
        or :
        my $connection = slackget10::Network::Connection->new(
                        host => '',
                        path => '/mirror/linuxpackages/Slackware-10.1/',
                        files => ['FILELIST.TXT','PACKAGES.TXT','CHECKSUMS.md5'], # Be carefull that it's the files parameter not file. file is the current working file.
                        config => $config,
                        mode => 'normal'
        $connection->fetch_all or die "An error occur during the download\n";
        or (the recommended way) :
        my $connection = slackget10::Network::Connection->new(
                        host => '',
                        path => '/mirror/linuxpackages/Slackware-10.1/',
                        config => $config,
                        mode => 'normal'
        my $file = $connection->get_file('FILELIST.TXT') or die "[ERROR] unable to download FILELIST.TXT\n";
        or :
        my $status = $connection->fetch('FILELIST.TXT',"$config->{common}->{'update-directory'}/".$server->shortname."/cache/FILELIST.TXT");
        ie "[ERROR] unable to download FILELIST.TXT\n" unless ($status);

The global way (3) is not recommended because of the lake of control on the downloaded file. For example, if there is only 1 download which fail, fetch_all will return undef and you don't know which download have failed.

The simpliest ways (1) and (2) are not recommended because you didn't give a slackget10::Config object to the connection. So you have to manage by yourself all tasks needed to a proper work (like charset encoding, moving file to proper destination, etc.). In this case don't forget that the download methods file save file in the current directory.

The recommended way is to give to the constructor the following arguments :

        host : the host (with the protocol, do not provide '' provide The protocol will be automatically extract)
        path : the path to the working directory on the server (Ex: '/pub/linux/distributions/slackware/slackware-10.1/'). Don't provide a 'file' argument.
        config : the slackget10::Config object of the application
        mode : a mode between 'normal' or 'secure'. This is only when you attempt to connect to a daemon (front-end/daemon or daemon/daemon connection). 'secure' use SSL connection.



Take a string as argument and return TRUE (1) if $string is an http or ftp URL and FALSE (0) else

        print "$string is a valid URL\n" if($connection->is_url($string)) ;


extract the following informations from $url :

        - the protocol 
        - the server
        - the file (with its total path)

For example :


Will extract :

        - protocol = ftp
        - host =
        - file = /pub/linux/distributions/slackware/slackware-current/slackware/n/dhcp-3.0.1-i486-1.tgz

This method return TRUE (1) if all goes well, else return FALSE (0)


Remove extra slash (/) in the URL and return the URL.

        my $url = $connection->strip_slash('') ;



The common accessors are :


return the protocol of the current Connection object as a string :

        my $proto = $connection->protocol ;


return the host of the current Connection object as a string :

        my $host = $connection->host ;


return the file of the current Connection object as a string :

        my $file = $connection->file ;


return the list of files of the current Connection object as an array reference :

        my $arrayref = $connection->files ;


return the path of the current Connection object as a string :

        my $path = $connection->path ;


DUPUIS Arnaud, <>


Please report any bugs or feature requests to, or through the web interface at I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.



Copyright 2005 DUPUIS Arnaud, All Rights Reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.