X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FREST%2F1.0%2Fdhandler;h=4ff5ee9b92177be8ec34ce11e95a43ca0f5ddf79;hp=085bbb3042cec7df69be538f08f5fc0a63663f5d;hb=7322f2afedcc2f427e997d1535a503613a83f088;hpb=63a268637b2d51a8766412617724b9436439deb6 diff --git a/rt/share/html/REST/1.0/dhandler b/rt/share/html/REST/1.0/dhandler index 085bbb304..4ff5ee9b9 100755 --- a/rt/share/html/REST/1.0/dhandler +++ b/rt/share/html/REST/1.0/dhandler @@ -1,40 +1,40 @@ %# BEGIN BPS TAGGED BLOCK {{{ -%# +%# %# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# -%# +%# +%# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC +%# +%# %# (Except where explicitly superseded by other copyright notices) -%# -%# +%# +%# %# LICENSE: -%# +%# %# This work is made available to you under the terms of Version 2 of %# the GNU General Public License. A copy of that license should have %# been provided with this software, but in any event can be snarfed %# from www.gnu.org. -%# +%# %# This work is distributed in the hope that it will be useful, but %# WITHOUT ANY WARRANTY; without even the implied warranty of %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %# General Public License for more details. -%# +%# %# You should have received a copy of the GNU General Public License %# along with this program; if not, write to the Free Software %# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA %# 02110-1301 or visit their web page on the internet at %# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# +%# +%# %# CONTRIBUTION SUBMISSION POLICY: -%# +%# %# (The following paragraph is not intended to limit the rights granted %# to you to modify and distribute this software under the terms of %# the GNU General Public License and is only of importance to you if %# you choose to contribute your changes and enhancements to the %# community by submitting them to Best Practical Solutions, LLC.) -%# +%# %# By intentionally submitting any modifications, corrections or %# derivatives to this work, or any other work intended for use with %# Request Tracker, to Best Practical Solutions, LLC, you confirm that @@ -43,7 +43,7 @@ %# royalty-free, perpetual, license to use, copy, create derivative %# works based on those contributions, and sublicense and distribute %# those contributions and any derivatives thereof. -%# +%# %# END BPS TAGGED BLOCK }}} %# REST/1.0/dhandler %# @@ -62,7 +62,7 @@ my $object = $m->dhandler_arg; my $name = qr{[\w.-]+}; my $list = '(?:(?:\d+-)?\d+,)*(?:\d+-)?\d+'; -my $label = '[a-zA-Z0-9@_.+-]+'; +my $label = '[^,\\/]+'; my $field = RT::Interface::REST->field_spec; my $labels = "(?:$label,)*$label"; @@ -100,22 +100,22 @@ if ($object eq 'show' || # $REST/show if (my ($type, $oids, $extra) = ($id =~ m#^($name)/($list|$labels)(?:(/.*))?$#o)) { - $extra ||= ''; - my ($attr, $args) = $extra =~ m{^(?:/($name)(?:/(.*))?)?$}o; - my $tids; - if ($attr and $attr eq 'history' and $args) { - ($tids) = $args =~ m#id/(\d.*)#o; - } - # expand transaction and attachment range specifications - # (if applicable) - foreach my $oid (expand_list($oids)) { - if ($tids) { - push(@objects, "$type/$oid/$attr/id/$_") for expand_list($tids); - } else { - push(@objects, "$type/$oid$extra"); - } - } - } + $extra ||= ''; + my ($attr, $args) = $extra =~ m{^(?:/($name)(?:/(.*))?)?$}o; + my $tids; + if ($attr and $attr eq 'history' and $args) { + ($tids) = $args =~ m#id/(\d.*)#o; + } + # expand transaction and attachment range specifications + # (if applicable) + foreach my $oid (expand_list($oids)) { + if ($tids) { + push(@objects, "$type/$oid/$attr/id/$_") for expand_list($tids); + } else { + push(@objects, "$type/$oid$extra"); + } + } + } else { $status = "400 Bad Request"; $output = "Invalid object ID specified: '$id'"; @@ -210,7 +210,7 @@ if ($fields) { $output = "Invalid field specification: $fields"; goto OUTPUT; } - @fields = map lc, split /,/, $fields; + @fields = map lc, split /\s*,\s*/, $fields; @fields{@fields} = (); unless (exists $fields{id}) { unshift @fields, "id"; @@ -242,7 +242,7 @@ foreach $object (@objects) { $handler = "Forms/$type/$attr"; unless ($m->comp_exists($handler)) { - $args = "$attr/$args"; + $args = defined $args ? "$attr/$args" : $attr; $handler = "Forms/$type/default"; unless ($m->comp_exists($handler)) {