--- trunk/lib/Frey/Server.pm 2008/07/08 16:18:13 64 +++ trunk/lib/Frey/Server.pm 2008/07/09 13:11:26 67 @@ -42,15 +42,46 @@ warn $req->request->header('User_Agent'); #warn dump( $req ); - if ( $path =~ m!/~/([^/]+)(?:/([^/]*))?! ) { - my $f = Frey::Introspect->new( package => $1 ); - $f->html( $req ); - } + eval { + + if ( $path =~ m!/~/([^/]+)(?:/([^/]*))?! ) { + my $f = Frey::Introspect->new( package => $1 ); + $f->html( $req ); + } + + if ( $path =~ m!/ob/([^/]+)(?:/([^/]*))?! ) { + my $f = Frey::ObjectBrowser->new; + $f->html( $req ); + } + + }; + + if ( $@ ) { + warn $@; + #$req->conn->send_error( 404 ); # FIXME this should probably be 500, but we can't ship page with it + $req->print( qq{
$@} ); + + } else { + + my $f = Frey->new; + my $classes = Continuity::Widget::DomNode->create( + ul => [ + map { + warn dump( $_ ); + my ( $package, $path ) = %$_; + ( li => [ + a => { href => '/~/' . $package . '/' } => [ $package ], + ' ', + a => { href => '/ob/' . $package } => [ 'browse' ], + " $path" + ] ) + } @{ $f->classes } + ], + )->to_string; + $req->print( $classes ); - if ( $path =~ m!/ob/([^/]+)(?:/([^/]*))?! ) { - my $f = Frey::ObjectBrowser->new; - $f->html( $req ); } + # If this is a request for the pushtream, then give them that if($path =~ /pushstream/) { pushstream($req); @@ -61,22 +92,6 @@ send_message($req); } - my $f = Frey->new; - my $classes = Continuity::Widget::DomNode->create( - ul => [ - map { - warn dump( $_ ); - my ( $package, $path ) = %$_; - ( li => [ - a => { href => '/~/' . $package . '/' } => [ $package ], - ' ', - a => { href => '/ob/' . $package } => [ 'browse' ], - " $path" - ] ) - } @{ $f->classes } - ], - )->to_string; - $req->print( $classes ); } # Here we accept a connection to the browser, and keep it open. Meanwhile we