PATCH: RT 3.6.0 REST interface - hard-coded value prevents extension of REST API

When extending the REST API for the AT extension, I came across this
problem. I hope I’ve diagnosed it correctly. This patch certainly fixes
the problem and doesn’t seem to cause any other problems. I’ve been
using the patch for several months now.

To reproduce
/usr/local/rt/bin/rt create -t asset set Name=test9 Status=qa

Unknown object type: Servers

This is a problem in $rtroot/share/html/REST/1.0/dhandler at line 144

$k->{type} never exists as this would be a CLI Field=Value setting and
there is no “Type” field for any RT types. This would normally go
unnoticed. However, in AT, “Type” is an Asset subtype and hard-wired as
a basic field type for all Assets. Looking for a “Type” form field to
set the RT object type finds this and sets it to something that is an
unknown RT object type (like “Servers” or “Storage” for example).

Patch below.

*** dhandler-3.6.orig 2006-06-07 16:15:48.783029976 -0700
— /usr/local/rt3.6rc3/share/html/REST/1.0/dhandler 2006-06-07
16:18:45.180213528 -0700
*** 141,147 ****
my ($type, $id);

          # Look for matching types in the ID, form, and URL.

! $type = exists $k->{type} ? $k->{type} : $utype;
$type =~ s|^(?:$utype)?|$utype/| if $utype;
$type =~ s|/$||;

— 141,148 ----
my ($type, $id);

          # Look for matching types in the ID, form, and URL.

! $type = $utype || $k->{id};
! $type =~ s|^([^/]+)/\d+$|$1| if !$utype;
$type =~ s|^(?:$utype)?|$utype/| if $utype;
$type =~ s|/$||;