version 1.2, 2010/01/31 03:10:39 |
version 1.6, 2010/02/18 05:34:31 |
|
|
package Text::Todo::REST::API::Actions::GET; |
package Text::Todo::REST::API::Actions::GET; |
|
|
# $AFresh1: GET.pm,v 1.1 2010/01/26 04:30:13 andrew Exp $ |
# $AFresh1: GET.pm,v 1.5 2010/02/16 04:09:53 andrew Exp $ |
|
|
use warnings; |
use warnings; |
use strict; |
use strict; |
|
|
} |
} |
|
|
sub get_entry { |
sub get_entry { |
my ( $self, $todo, $key ) = @_; |
my ( $self, $todo, $options ) = @_; |
|
my $entry = $self->_which_key( $options, 'entry' ); |
|
|
if ( !$key ) { |
|
return $self->_fail("get_entry requires arguments"); |
|
} |
|
elsif ( ref $key eq 'ARRAY' ) { |
|
return self->get_entry( $_->[0] ); |
|
} |
|
elsif ( ref $key eq 'HASH' ) { |
|
if ( exists $key->{entry} ) { |
|
$key = $key->{entry}; |
|
} |
|
else { |
|
return $self->_fail('get_entry requires key [entry]'); |
|
} |
|
} |
|
|
|
my $list = $self->get_list($todo); |
my $list = $self->get_list($todo); |
|
|
if ( $key =~ /^[[:xdigit:]]{32}$/xms ) { |
if ( $entry =~ /^[[:xdigit:]]{32}$/xms ) { |
my $search = lc $key; |
my $search = lc $entry; |
|
|
foreach my $e ( @{$list} ) { |
foreach my $e ( @{$list} ) { |
if ( $search eq $e->{md5} ) { |
if ( $search eq $e->{md5} ) { |
|
|
} |
} |
} |
} |
} |
} |
elsif ( $key =~ /^\d+$/xms ) { |
elsif ( $entry =~ /^\d+$/xms ) { |
return $list->[ $key - 1 ]; |
return $list->[ $entry - 1 ]; |
} |
} |
|
|
return $self->_fail("Unable to find entry [$key]!"); |
return $self->_fail("Unable to find entry [$entry]!"); |
} |
} |
|
|
sub get_list { |
sub get_list { |
|
|
line => $line++, |
line => $line++, |
md5 => md5_hex( $_->text ), |
md5 => md5_hex( $_->text ), |
text => $_->text, |
text => $_->text, |
|
done => $_->done, |
}, |
}, |
$todo->list ); |
$todo->list ); |
return \@list; |
return \@list; |
|
|
} |
} |
|
|
sub get_tags { |
sub get_tags { |
my ( $self, $todo, $tag ) = @_; |
my ( $self, $todo, $options ) = @_; |
return [ $todo->listtag($tag) ]; |
my $tag = $self->_which_key( $options, 'tags' ); |
|
if ($tag) { |
|
return [ $todo->listtag($tag) ]; |
|
} |
|
else { |
|
return $todo->known_tags; |
|
} |
|
} |
|
|
|
sub _which_key { |
|
my ( $self, $key, $type ) = @_; |
|
|
|
return if !defined $key; |
|
|
|
if ( ref $key eq 'ARRAY' ) { |
|
$key = $key->[0]; |
|
} |
|
elsif ( ref $key eq 'HASH' ) { |
|
$key = $key->{$type}; |
|
} |
|
|
|
return $key; |
} |
} |
|
|
sub _fail { |
sub _fail { |