Index: /trunk/Nebulous-Server/Changes
===================================================================
--- /trunk/Nebulous-Server/Changes	(revision 13047)
+++ /trunk/Nebulous-Server/Changes	(revision 13048)
@@ -2,5 +2,6 @@
 
 0.05
-    - add Nebulous::Server->find_keys()
+    - add Nebulous::Client->find_objects()
+    - add Nebulous::Server->find_objects()
     - add neb-touch
     - add neb-df
Index: /trunk/Nebulous-Server/MANIFEST
===================================================================
--- /trunk/Nebulous-Server/MANIFEST	(revision 13047)
+++ /trunk/Nebulous-Server/MANIFEST	(revision 13048)
@@ -100,4 +100,5 @@
 t/62_client_delete_instance.t
 t/63_client_stat.t
+t/64_client_find_objects.t
 t/90_nebclient.t
 t/TEST.PL
Index: /trunk/Nebulous/Changes
===================================================================
--- /trunk/Nebulous/Changes	(revision 13047)
+++ /trunk/Nebulous/Changes	(revision 13048)
@@ -2,5 +2,6 @@
 
 0.05
-    - add Nebulous::Server->find_keys()
+    - add Nebulous::Client->find_objects()
+    - add Nebulous::Server->find_objects()
     - add neb-touch
     - add neb-df
Index: /trunk/Nebulous/MANIFEST
===================================================================
--- /trunk/Nebulous/MANIFEST	(revision 13047)
+++ /trunk/Nebulous/MANIFEST	(revision 13048)
@@ -100,4 +100,5 @@
 t/62_client_delete_instance.t
 t/63_client_stat.t
+t/64_client_find_objects.t
 t/90_nebclient.t
 t/TEST.PL
Index: /trunk/Nebulous/lib/Nebulous/Client.pm
===================================================================
--- /trunk/Nebulous/lib/Nebulous/Client.pm	(revision 13047)
+++ /trunk/Nebulous/lib/Nebulous/Client.pm	(revision 13048)
@@ -1,5 +1,5 @@
 # Copyright (c) 2004  Joshua Hoblitt
 #
-# $Id: Client.pm,v 1.24 2007-04-23 20:45:08 jhoblitt Exp $
+# $Id: Client.pm,v 1.25 2007-04-27 00:09:22 jhoblitt Exp $
 
 package Nebulous::Client;
@@ -383,4 +383,40 @@
 }
 
+sub find_objects {
+    my $self = shift;
+
+    my ( $pattern ) = validate_pos( @_,
+        {
+            type        => SCALAR,
+            optional    => 1,
+        },
+    );
+
+    $log->debug( "entered - @_" );
+
+    my $response = $self->{ 'server' }->find_objects( $pattern );
+    if ( $response->fault ) {
+        $log->error( $response->faultcode, " - ", $response->faultstring );
+        $log->debug( "leaving" );
+
+        return undef;
+    }
+
+    my $keys = $response->result;
+
+    $log->debug( "server found: @$keys" );
+
+#    foreach my $path ( @{ $uris } ) {
+#        $path = _get_file_path( $path );
+#    }
+
+    $log->debug( "leaving" );
+
+# aparently empty arrays are being turned into undef by SOAP::Lite so the
+# behavior of this function is different then it's ::Server counter part
+
+    return $keys;
+}
+
 sub find_instances {
     my $self = shift;
Index: /trunk/Nebulous/t/64_client_find_objects.t
===================================================================
--- /trunk/Nebulous/t/64_client_find_objects.t	(revision 13048)
+++ /trunk/Nebulous/t/64_client_find_objects.t	(revision 13048)
@@ -0,0 +1,78 @@
+#!/usr/bin/perl
+
+# Copryight (C) 2004-2005  Joshua Hoblitt
+#
+# $Id: 64_client_find_objects.t,v 1.1 2007-04-27 00:09:22 jhoblitt Exp $
+
+use strict;
+use warnings FATAL => qw( all );
+
+use Apache::Test qw( -withtestmore );
+
+plan tests => 6;
+
+use lib qw( ./t ./lib );
+
+use Nebulous::Client;
+use Nebulous::Util qw( :standard );
+use Test::Nebulous;
+
+my $hostport = Apache::Test->config->{ 'hostport' };
+
+Test::Nebulous->setup;
+
+{
+    # key
+    my $neb = Nebulous::Client->new(
+        proxy => "http://$hostport/nebulous",
+    );
+    $neb->create( "foo" );
+
+    my $keys = $neb->find_objects();
+
+    is($keys, undef, 'number of keys found');
+}
+
+Test::Nebulous->setup;
+
+{
+    # key
+    my $neb = Nebulous::Client->new(
+        proxy => "http://$hostport/nebulous",
+    );
+    $neb->create( "foo" );
+
+    my $keys = $neb->find_objects( "foo" );
+
+    is(scalar @$keys, 1, 'number of keys found');
+    is($keys->[0], "foo", "key name");
+}
+
+Test::Nebulous->setup;
+
+{
+    # key
+    my $neb = Nebulous::Client->new(
+        proxy => "http://$hostport/nebulous",
+    );
+    $neb->create( "foo" );
+    $neb->replicate( "foo" );
+
+    my $keys = $neb->find_objects( "foo" );
+
+    is(scalar @$keys, 1, 'number of keys found');
+    is($keys->[0], "foo", "key name");
+}
+
+Test::Nebulous->setup;
+
+eval {
+    my $neb = Nebulous::Client->new(
+        proxy => "http://$hostport/nebulous",
+    );
+
+    $neb->find_objects( "foo", 3 );
+};
+like( $@, qr/1 was expected/, "too many params" );
+
+Test::Nebulous->cleanup;
