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 )