<%doc>
This Mason default handler component handles requests for RESTful resources
</%doc>
<%args>
$user
$manager
</%args>
<%init>

delete $ARGS{user};
delete $ARGS{showheader};

my $resource = $m->dhandler_arg;

my $DEBUG = 0;
if ( $DEBUG ){
    $r->content_type(q{text/html; charset=utf-8});
    print '%ARGS is  <pre>', Dumper(%ARGS), '</pre><br>';
    print "req comp: ", $m->request_comp->name, "<br>";
    print "URI: ", $r->uri, "<br>";
    print "METHOD: ", $r->method, "<br>";
    print "content_type : ", $r->content_type, "<br>";
    print "resource: ", $resource, "<br>";
    $m->abort;
}

# Handle generic requests
# Remember that we'll only hit this code if there isn't a 
# specific component for the given request
#
use Netdot::REST;
delete $ARGS{manager};
my $rest = Netdot::REST->new(user=>$user, manager=>$manager);
eval {
    $rest->handle_resource(resource=>$resource, r=>$r, %ARGS);
};

my $e;
if ( $e = Netdot::Util::Exception->caught('Netdot::Util::Exception::REST') ){
    $m->clear_and_abort($e->code);
}elsif ( $e = $@ ){
    die $e;
}

</%init>
