File Coverage

File:lib/App/TimeTracker/Command/Post2IRC.pm
Coverage:66.7%

linestmtbrancondsubpodtimecode
1package App::TimeTracker::Command::Post2IRC;
2
2
2
2
1394
6
48
use strict;
3
2
2
2
10
4
59
use warnings;
4
2
2
2
2
2
2
81
95
29
7
7
22
use 5.010;
5
6# ABSTRACT: TimeTracker post to irc plugin
7
8
2
2
2
7
6
25
use Moose::Role;
9
2
2
2
6803
20582
48
use LWP::UserAgent;
10
2
2
2
451
859
465
use Digest::SHA1 qw(sha1_hex);
11
12has 'irc_quiet' => (is=>'ro',isa=>'Bool');
13
14after 'cmd_start' => sub {
15    my $self = shift;
16    return if $self->irc_quiet;
17    my $task = $self->_current_task;
18    $self->_post_to_irc(start => $task);
19};
20
21after 'cmd_stop' => sub {
22    my $self = shift;
23    return if $self->irc_quiet;
24    return unless $self->_current_command eq 'cmd_stop';
25    my $task = App::TimeTracker::Data::Task->previous($self->home);
26    $self->_post_to_irc(stop => $task);
27};
28
29sub _post_to_irc {
30
0
    my ($self, $status, $task) = @_;
31
0
    my $cfg = $self->config->{post2irc};
32
0
    return unless $cfg;
33
34
0
    my $ua = LWP::UserAgent->new;
35
0
    my $message = $task->user
36        . ( $status eq 'start' ? ' is now' : ' stopped' )
37        . ' working on '
38        . $task->say_project_tags;
39
0
    my $token = sha1_hex($message, $cfg->{secret});
40
0
    my $res = $ua->get($cfg->{host}.'?message='.$message.'&token='.$token);
41
0
    unless ($res->is_success) {
42
0
        say "Could not post to IRC...";
43    }
44}
45
46
2
2
2
10
5
25
no Moose::Role;
471;
48