Index: /trunk/PS-IPP-PSFTP/lib/PS/IPP/PSFTP.pm
===================================================================
--- /trunk/PS-IPP-PSFTP/lib/PS/IPP/PSFTP.pm	(revision 5262)
+++ /trunk/PS-IPP-PSFTP/lib/PS/IPP/PSFTP.pm	(revision 5263)
@@ -1,5 +1,5 @@
 # Copyright (C) 2005  Joshua Hoblitt
 #
-# $Id: PSFTP.pm,v 1.2 2005-10-10 22:46:55 jhoblitt Exp $
+# $Id: PSFTP.pm,v 1.3 2005-10-11 00:20:18 jhoblitt Exp $
 
 package PS::IPP::PSFTP;
@@ -8,6 +8,9 @@
 use warnings FATAL => qw( all );
 
+use Carp qw( carp );
 use Data::Validate::URI qw( is_uri );
+use LWP::UserAgent;
 use Params::Validate qw( validate SCALAR );
+use PS::IPP::PSFTP::Parser;
 
 sub new
@@ -17,16 +20,45 @@
     my %p = validate(@_,
         {
-            base_url => {
-                type    => SCALAR,
-                callbacks => {
+            base_url    => {
+                type        => SCALAR,
+                callbacks   => {
                     'is valid url' => sub { is_uri( $_[0] ) },
                 },
+            },
+            recipient   => {
+                type        => SCALAR,
+                regex       => qr/\S+/, # string with atleast 1 non WS char
             },
         },
     );
 
-    my $self = bless ({}, ref ($class) || $class);
+    my $self = bless (\%p, ref ($class) || $class);
 
     return $self;
+}
+
+sub list_files
+{
+    my $self = shift;
+
+    validate(@_, {});
+
+    my $url = $self->{base_url}
+              . "/files_available"
+              . "?recipient="
+              . $self->{recipient};
+
+    my $ua = LWP::UserAgent->new;
+    my $response = $ua->get( $url );
+
+    if (! $response->is_success) {
+        carp $response->status_line;
+        return undef;
+    }
+
+    my $parser = PS::IPP::PSFTP::Parser->new;
+    my $records = $parser->parse($response->content);
+
+    return $records ? $records : undef;
 }
 
