[rt-users] Perl API Help
Garry T. Williams
garry.williams at cbeyond.net
Mon Jan 29 11:53:45 EST 2007
On Monday 29 January 2007 10:59, John Arends wrote:
> I have the book right next to me. (It is a very good book, and buying it
> was the least I could do to support this project.)
>
> The problem is the book just touches on the subject. As someone who is
> trying to learn perl I can't pick up enough to figure out what to do
> from the chapter on the perl API.
Trying to learn Perl and trying to learn the RT API at the same time
is *very* ambitious.
The Wiki is your friend.
The various modules in RT do have manual pages, too. For example, to
find out what methods are available for a RT::Ticket object, just
issue this command:
$ perldoc /path/to/rt/lib/RT/Ticket_Overlay.pm
Another fine source of information is the code itself. Especially the
embedded test code in each module. Of course this is quite a
challenge, if you do not know Perl. :-(
> Maybe if someone gives a couple examples, I can work with that.
>
> A few things I would like to do (in no particular order):
# initialization for a RT batch program
#
# NOTE: NO ERROR CHECKING below -- very bad -- see the code to
# find out how to check return values from various methods
use warnings;
use strict;
use lib '/path/to/rt/lib';
use RT::Interface::CLI;
RT::LoadConfig();
RT::Init();
open my $fh, '> /path/to/log/file'
or die "can't open /path/to/log/file: $!\n";
> -see a list of all the members of a group
my $group = RT::Group->new($RT::SystemUser);
$group->LoadUserDefinedGroup('my group name');
my $users = $group->UserMembersObj();
while (my $user = $users->Next()) {
print $fh $user->Name(), "\n";
}
> -add/remove a user from a group
my $group = RT::Group->new($RT::SystemUser);
$group->LoadUserDefinedGroup('my group name');
my $user = RT::User->new($RT::SystemUser);
$user->Load('my_user_id');
$group->AddMember($user->PrincipalId());
# remove from group left as an exercise
> -create a user
my $user = RT::User->new($RT::SystemUser);
$user->Create(Name => 'my_user_id',
Password => 'secret',
RealName => 'John Doe',
EmailAddress => j at foo.invalid',
Privileged => 0);
> -set a user as privileged
> -create a ticket (and populate a custom field while doing it)
These are left as an exercise for the reader. Use the code, Luke.
:-)
--
Garry T. Williams --- 678-370-2438
More information about the rt-users
mailing list