version 1.1, 2010/01/26 04:30:13 |
version 1.3, 2010/02/13 21:48:28 |
|
|
package Text::Todo::REST::API::Actions::GET; |
package Text::Todo::REST::API::Actions::GET; |
|
|
# $AFresh1: Representations.pm,v 1.2 2010/01/23 07:04:43 andrew Exp $ |
# $AFresh1: GET.pm,v 1.2 2010/01/31 03:10:39 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!"); |
return $self->_fail("Unable to find entry [$entry]!"); |
} |
} |
|
|
sub get_list { |
sub get_list { |
|
|
my $dir = $todo->file('todo_dir'); |
my $dir = $todo->file('todo_dir'); |
|
|
if ( !$dir ) { |
if ( !$dir ) { |
return $self->fail('Unable to find todo_dir'); |
return $self->_fail('Unable to find todo_dir'); |
} |
} |
|
|
my $file_regex = $options->{file_regex}; |
my $file_regex = $options->{file_regex}; |
|
|
} |
} |
|
|
sub get_tags { |
sub get_tags { |
my ( $self, $todo, $tag ) = @_; |
my ( $self, $todo, $options) = @_; |
|
my $tag = $self->_which_key($options, 'tags'); |
return [ $todo->listtag($tag) ]; |
return [ $todo->listtag($tag) ]; |
|
} |
|
|
|
sub _which_key { |
|
my ($self, $key, $type) = @_; |
|
|
|
if ( !defined $key ) { |
|
return $self->_fail(caller() . ' requires arguments'); |
|
} |
|
elsif ( ref $key eq 'ARRAY' ) { |
|
$key = $key->[0]; |
|
} |
|
elsif ( ref $key eq 'HASH' ) { |
|
if ( exists $key->{$type} ) { |
|
$key = $key->{$type}; |
|
} |
|
else { |
|
return $self->_fail(caller() . ' requires key [' . $type . ']'); |
|
} |
|
} |
|
|
|
return $key; |
} |
} |
|
|
sub _fail { |
sub _fail { |