Net-Hiveminder
view release on metacpan or search on metacpan
lib/Net/Hiveminder.pm view on Meta::CPAN
$self->act('BulkUpdateTasks',
ids => join(' ', @ids),
%args,
);
}
sub complete_tasks {
my $self = shift;
$self->bulk_update(
tasks => \@_,
complete => 1,
);
}
sub braindump {
my $self = shift;
my $text = shift;
if (@_ == 1) {
Carp::carp("You must now pass in an explicit 'tokens => string|arrayref' to have default tokens in Net::Hiveminder->braindump");
unshift @_, 'tokens';
}
my %args = (
tokens => '',
returns => 'summary',
@_,
);
my $tokens = $args{tokens};
if (ref($tokens) eq 'ARRAY') {
$tokens = join ' ', @$tokens;
}
$tokens .= ' ' . join ' ', %{ $self->filter_config };
my $ret = $self->act('ParseTasksMagically', text => $text, tokens => $tokens);
if ($args{returns} eq 'ids') {
return @{ $ret->{content}->{ids} || [] };
}
elsif ($args{returns} eq 'tasks') {
return @{ $ret->{content}->{created} || [] };
}
return $ret->{message};
}
sub upload_text {
my $self = shift;
my $text = shift;
return $self->act(UploadTasks => content => $text, format => 'sync')
->{message};
}
sub upload_file {
my $self = shift;
my $file = shift;
my $text = do { local (@ARGV, $/) = $file; <> };
return $self->upload_text($text);
}
sub download_text {
my $self = shift;
my $query = shift;
return $self->act('DownloadTasks' =>
$query ? (query => $query) : (),
format => 'sync',
)->{content}{result};
}
sub download_file {
my $self = shift;
my $file = shift;
my $text = $self->download_text(@_);
open my $handle, '>', $file
or confess "Unable to open $file for writing: $!";
print $handle $text;
close $handle;
}
my @priorities = (undef, qw/lowest low normal high highest/);
sub priority {
my $self = shift;
my $priority = shift;
# if they pass in a task, DTRT :)
$priority = $priority->{priority}
if ref($priority) eq 'HASH';
return $priorities[$priority];
}
sub done {
my $self = shift;
for (@_) {
my $id = $self->loc2id($_);
$self->update('Task', id => $id, complete => 1);
}
}
sub loc2id {
my $self = shift;
my @ids = map {
my $locator = $_;
# they passed in a hashref, so almost certainly a real task
ref($locator) eq 'HASH'
? $locator->{id}
: do {
$locator =~ s/^#+//; # remove leading #
$LOCATOR->decode($locator);
};
} @_;
( run in 0.708 second using v1.01-cache-2.11-cpan-98e64b0badf )