# $Id: Queue.pm 2 2007-12-23 02:16:25Z dtikhonov $ # # RT::Client::REST::Queue -- queue object representation. package RT::Client::REST::Queue; use strict; use warnings; use vars qw($VERSION); $VERSION = '0.02'; use Params::Validate qw(:types); use RT::Client::REST 0.20; use RT::Client::REST::Object 0.01; use RT::Client::REST::Object::Exception 0.01; use RT::Client::REST::SearchResult 0.02; use RT::Client::REST::Ticket; use base 'RT::Client::REST::Object'; =head1 NAME RT::Client::REST::Queue -- queue object representation. =head1 SYNOPSIS my $rt = RT::Client::REST->new(server => $ENV{RTSERVER}); my $queue = RT::Client::REST::Queue->new( rt => $rt, id => 'General', )->retrieve; =head1 DESCRIPTION B is based on L. The representation allows to retrieve, edit, comment on, and create queue in RT. Note: RT currently does not allow REST client to search queues. =cut sub _attributes {{ id => { validation => { type => SCALAR, }, form2value => sub { shift =~ m~^queue/(\d+)$~i; return $1; }, value2form => sub { return 'queue/' . shift; }, }, name => { validation => { type => SCALAR, }, }, description => { validation => { type => SCALAR, }, }, correspond_address => { validation => { type => SCALAR, }, rest_name => 'CorrespondAddress', }, comment_address => { validation => { type => SCALAR, }, rest_name => 'CommentAddress', }, initial_priority => { validation => { type => SCALAR, }, rest_name => 'InitialPriority', }, final_priority => { validation => { type => SCALAR, }, rest_name => 'FinalPriority', }, default_due_in => { validation => { type => SCALAR, }, rest_name => 'DefaultDueIn', }, }} =head1 ATTRIBUTES =over 2 =item B For retrieval, you can specify either the numeric ID of the queue or its name (case-sensitive). After the retrieval, however, this attribute will be set to the numeric id. =item B This is the name of the queue. =item B Queue description. =item B Correspond address. =item B Comment address. =item B Initial priority. =item B Final priority. =item B Default due in. =back =head1 DB METHODS For full explanation of these, please see B<"DB METHODS"> in L documentation. =over 2 =item B Retrieve queue from database. =item B Create or update the queue. =item B Currently RT does not allow REST clients to search queues. =back =head1 QUEUE-SPECIFIC METHODS =over 2 =item B Get tickets that are in this queue (note: this may be a lot of tickets). Note: tickets with status "deleted" will not be shown. Object of type L is returned which then can be used to get to objects of type L. =cut sub tickets { my $self = shift; $self->_assert_rt_and_id; return RT::Client::REST::Ticket ->new(rt => $self->rt) ->search(limits => [ {attribute => 'queue', operator => '=', value => $self->id}, ]); } =back =head1 INTERNAL METHODS =over 2 =item B Returns 'queue'. =cut sub rt_type { 'queue' } =back =head1 SEE ALSO L, L, L, L. =head1 AUTHOR Dmitri Tikhonov =head1 LICENSE Perl license with the exception of L, which is GPLed. =cut __PACKAGE__->_generate_methods; 1;