=================================================================== RCS file: /cvs/todotxt/Text-Todo-REST-API/lib/Text/Todo/REST/API/Actions/GET.pm,v retrieving revision 1.2 retrieving revision 1.6 diff -u -r1.2 -r1.6 --- todotxt/Text-Todo-REST-API/lib/Text/Todo/REST/API/Actions/GET.pm 2010/01/31 03:10:39 1.2 +++ todotxt/Text-Todo-REST-API/lib/Text/Todo/REST/API/Actions/GET.pm 2010/02/18 05:34:31 1.6 @@ -1,6 +1,6 @@ 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 strict; @@ -31,27 +31,13 @@ } 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); - if ( $key =~ /^[[:xdigit:]]{32}$/xms ) { - my $search = lc $key; + if ( $entry =~ /^[[:xdigit:]]{32}$/xms ) { + my $search = lc $entry; foreach my $e ( @{$list} ) { if ( $search eq $e->{md5} ) { @@ -59,11 +45,11 @@ } } } - elsif ( $key =~ /^\d+$/xms ) { - return $list->[ $key - 1 ]; + elsif ( $entry =~ /^\d+$/xms ) { + return $list->[ $entry - 1 ]; } - return $self->_fail("Unable to find entry [$key]!"); + return $self->_fail("Unable to find entry [$entry]!"); } sub get_list { @@ -74,6 +60,7 @@ line => $line++, md5 => md5_hex( $_->text ), text => $_->text, + done => $_->done, }, $todo->list ); return \@list; @@ -97,8 +84,29 @@ } sub get_tags { - my ( $self, $todo, $tag ) = @_; - return [ $todo->listtag($tag) ]; + my ( $self, $todo, $options ) = @_; + 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 {