Index: trunk/Nebulous/lib/Nebulous/Server.pm
===================================================================
--- trunk/Nebulous/lib/Nebulous/Server.pm	(revision 5496)
+++ trunk/Nebulous/lib/Nebulous/Server.pm	(revision 5498)
@@ -1,5 +1,5 @@
 # Copyright (c) 2004  Joshua Hoblitt
 #
-# $Id: Server.pm,v 1.13 2005-11-09 01:31:07 jhoblitt Exp $
+# $Id: Server.pm,v 1.14 2005-11-10 21:31:26 jhoblitt Exp $
 
 package Nebulous::Server;
@@ -75,4 +75,6 @@
             callbacks   => {
                 'is + integer' => sub { $_[0] =~ /^\d+$/ },
+                # check that the class requested is valid
+                'is valid class id' => sub { _is_valid_class_id( $_[0] ) },
             },
             default     => 0,
@@ -96,24 +98,4 @@
     # check that the comment isn't too long
     # check that the volume requested is valid
-
-    # check that the class requested is valid
-    if ( $class ) {
-        my $class_id;
-        eval {
-            my $query = $db->prepare_cached( $sql->get_class ); 
-            $query->execute( $class );
-            ( $class_id ) = $query->fetchrow_array;
-
-            $query->finish;
-        };
-        if ( $@ ) {
-            $db->rollback;
-            $log->logdie( "database error: $@" );
-        }
-
-        unless ( $class_id ) {
-            $log->logdie( "Invalid class ID: $class" );
-        }
-    }
 
     my $uri;
@@ -701,4 +683,23 @@
 }
 
+sub _is_valid_class_id {
+    my $class = shift;
+
+    my $class_id;
+    eval {
+        my $query = $db->prepare_cached( $sql->get_class ); 
+        $query->execute( $class );
+        ( $class_id ) = $query->fetchrow_array;
+
+        $query->finish;
+    };
+    if ( $@ ) {
+        $db->rollback;
+        $log->logdie( "database error: $@" );
+    }
+
+    return ( defined $class_id ) ? 1 : undef;
+}
+
 1;
 
