App-TimeTracker-Command-RT
view release on metacpan or search on metacpan
lib/App/TimeTracker/Command/RT.pm view on Meta::CPAN
package App::TimeTracker::Command::RT;
use strict;
use warnings;
use 5.010;
our $VERSION = "3.000";
# ABSTRACT: App::TimeTracker RT plugin
use App::TimeTracker::Utils qw(error_message warning_message);
use Moose::Role;
use RT::Client::REST;
use RT::Client::REST::Ticket;
use Try::Tiny;
use Unicode::Normalize;
has 'rt' => (
is => 'rw',
isa => 'TT::RT',
coerce => 1,
documentation => 'RT: Ticket number',
predicate => 'has_rt'
);
has 'rt_client' => (
is => 'ro',
isa => 'Maybe[RT::Client::REST]',
lazy_build => 1,
traits => ['NoGetopt'],
predicate => 'has_rt_client'
);
has 'rt_ticket' => (
is => 'ro',
isa => 'Maybe[RT::Client::REST::Ticket]',
lazy_build => 1,
traits => ['NoGetopt'],
);
sub _build_rt_ticket {
my ($self) = @_;
if ( my $ticket = $self->init_rt_ticket( $self->_current_task ) ) {
return $ticket;
}
}
sub _build_rt_client {
my $self = shift;
my $config = $self->config->{rt};
unless ($config) {
error_message("Please configure RT in your TimeTracker config");
return;
}
return try {
my $client = RT::Client::REST->new(
server => $config->{server},
timeout => $config->{timeout},
);
$client->login(
username => $config->{username},
password => $config->{password} );
return $client;
}
catch {
error_message("Could not log in to RT: $_");
return;
};
}
before [ 'cmd_start', 'cmd_continue', 'cmd_append' ] => sub {
my $self = shift;
return unless $self->has_rt;
( run in 1.778 second using v1.01-cache-2.11-cpan-39bf76dae61 )