# $Id: User.pm 2 Mon Aug 25 12:18 EDT 2008 jpierce $
#
# RT::Client::REST::User -- user object representation.
package RT::Client::REST::User;
use strict;
use warnings;
use vars qw($VERSION);
$VERSION = '0.03';
use Params::Validate qw(:types);
use RT::Client::REST 0.14;
use RT::Client::REST::Object 0.01;
use RT::Client::REST::Object::Exception 0.01;
use RT::Client::REST::SearchResult 0.02;
use base 'RT::Client::REST::Object';
=head1 NAME
RT::Client::REST::User -- user object representation.
=head1 SYNOPSIS
my $rt = RT::Client::REST->new(server => $ENV{RTSERVER});
my $user = RT::Client::REST::User->new(
rt => $rt,
id => $id,
)->retrieve;
=head1 DESCRIPTION
B<RT::Client::REST::User> is based on L<RT::Client::REST::Object>.
The representation allows to retrieve, edit, comment on, and create
users in RT.
Note: RT currently does not allow REST client to search users.
=cut
sub _attributes {{
id => {
validation => {
type => SCALAR,
},
form2value => sub {
shift =~ m~^user/(\d+)$~i;
return $1;
},
value2form => sub {
return 'user/' . shift;
},
},
priveleged => {
validation => {
type => SCALAR,
},
},
name => {
validation => {
type => SCALAR,
},
},
password => {
validation => {
type => SCALAR,
},
},
email_address => {
validation => {
type => SCALAR,
},
rest_name => 'EmailAddress',
},
real_name => {
validation => {
type => SCALAR,
},
rest_name => 'RealName',
},
gecos => {
validation => {
type => SCALAR,
},
},
comments => {
validation => {
type => SCALAR,
},
},
organization => {
validation => {
type => SCALAR,
},
},
address_one => {
validation => {
type => SCALAR,
},
rest_name => 'Address1',
},
address_two => {
validation => {
type => SCALAR,
},
rest_name => 'Address2',
},
city => {
validation => {
type => SCALAR,
},
},
state => {
validation => {
type => SCALAR,
},
},
zip => {
validation => {
type => SCALAR,
},
},
country => {
validation => {
type => SCALAR,
},
},
home_phone => {
validation => {
type => SCALAR,
},
rest_name => 'HomePhone',
},
work_phone => {
validation => {
type => SCALAR,
},
rest_name => 'WorkPhone',
},
cell_phone => {
validation => {
type => SCALAR,
},
rest_name => 'MobilePhone',
},
pager => {
validation => {
type => SCALAR,
},
rest_name => 'PagerPhone',
},
}}
=head1 ATTRIBUTES
=over 2
=item B<id>
For retrieval, you can specify either the numeric ID of the user or his
username. After the retrieval, however, this attribute will be set
to the numeric id.
=item B<name>
This is the username of the user.
=item B<password>
User's password. Reading it will only give you a bunch of stars (what
else would you expect?).
=item B<priveleged>
Can the user have special rights?
=item B<email_address>
E-mail address of the user, EmailAddress.
=item B<real_name>
Real name of the user, RealName.
=item B<gecos>
Gecos.
=item B<comments>
Comments about this user.
=item B<organization>
=item B<address_one>
First line of the street address, Address1.
=item B<address_two>
Second line of the street address, Address2.
=item B<city>
City segment of user's address.
=item B<zip>
ZIP or Postal code segment of user's address.
=item B<country>
Country segment of user's address.
=item B<home_phone>
User's home phone number, HomePhone.
=item B<work_phone>
User's work phone number, WorkPhone.
=item B<cell_phone>
User's cell phone number, MobilePhone.
=item B<pager>
User's pager number, PagerPhone.
=back
=head1 DB METHODS
For full explanation of these, please see B<"DB METHODS"> in
L<RT::Client::REST::Object> documentation.
=over 2
=item B<retrieve>
Retrieve RT user from database.
=item B<store>
Create or update the user.
=item B<search>
Currently RT does not allow REST clients to search users.
=back
=head1 INTERNAL METHODS
=over 2
=item B<rt_type>
Returns 'user'.
=cut
sub rt_type { 'user' }
=back
=head1 SEE ALSO
L<RT::Client::REST>, L<RT::Client::REST::Object>,
L<RT::Client::REST::SearchResult>.
=head1 AUTHOR
Dmitri Tikhonov <dtikhonov@yahoo.com>
=head1 LICENSE
Perl license with the exception of L<RT::Client::REST>, which is GPLed.
=cut
__PACKAGE__->_generate_methods;
1;