version 1.11, 2010/01/24 04:38:21 |
version 1.12, 2010/01/26 03:51:49 |
|
|
package Text::Todo::REST::API; |
package Text::Todo::REST::API; |
|
|
# $AFresh1: API.pm,v 1.10 2010/01/24 04:17:39 andrew Exp $ |
# $AFresh1: API.pm,v 1.11 2010/01/24 04:38:21 andrew Exp $ |
|
|
use warnings; |
use warnings; |
use strict; |
use strict; |
|
|
if ( $options{action} eq 'entry' && @{ $options{args} } ) { |
if ( $options{action} eq 'entry' && @{ $options{args} } ) { |
$options{entry} = shift @{ $options{args} }; |
$options{entry} = shift @{ $options{args} }; |
if ( @{ $options{args} } ) { |
if ( @{ $options{args} } ) { |
$options{action} = lc shift @{ $options{args} }; |
$options{action} .= q{_} . lc shift @{ $options{args} }; |
} |
} |
} |
} |
|
|
|
|
return $self->_handle_action( 'GET', @args ); |
return $self->_handle_action( 'GET', @args ); |
} |
} |
|
|
|
sub get_entry_done { |
|
my ( $self, $todo, $key ) = @_; |
|
my $entry = $self->get_entry( $todo, $key ); |
|
|
|
return $todo->list->[ $entry->{line} - 1 ]->done; |
|
} |
|
|
sub get_entry { |
sub get_entry { |
my ( $self, $todo, $key ) = @_; |
my ( $self, $todo, $key ) = @_; |
|
|
|
|
return $self->fail("get_entry requires arguments"); |
return $self->fail("get_entry requires arguments"); |
} |
} |
elsif ( ref $key eq 'ARRAY' ) { |
elsif ( ref $key eq 'ARRAY' ) { |
my @entries; |
return self->get_entry( $_->[0] ); |
foreach ( @{$key} ) { |
|
push @entries, $self->get_entry($_); |
|
} |
|
return @entries; |
|
} |
} |
elsif ( ref $key eq 'HASH' ) { |
elsif ( ref $key eq 'HASH' ) { |
if ( exists $key->{entry} ) { |
if ( exists $key->{entry} ) { |
|
|
|
|
my $list = $self->get_list($todo); |
my $list = $self->get_list($todo); |
|
|
my $entry; |
|
if ( $key =~ /^[[:xdigit:]]{32}$/xms ) { |
if ( $key =~ /^[[:xdigit:]]{32}$/xms ) { |
my $search = lc $key; |
my $search = lc $key; |
|
|
ENTRY: foreach my $e ( @{$list} ) { |
foreach my $e ( @{$list} ) { |
if ( $search eq $e->{md5} ) { |
if ( $search eq $e->{md5} ) { |
$entry = $e; |
return $e; |
last ENTRY; |
|
} |
} |
} |
} |
} |
} |
elsif ( $key =~ /^\d+$/xms ) { |
elsif ( $key =~ /^\d+$/xms ) { |
$entry = $list->[ $key - 1 ]; |
return $list->[ $key - 1 ]; |
} |
} |
|
|
if ( !$entry ) { |
return $self->fail("Unable to find entry!"); |
return $self->fail("Unable to find entry!"); |
|
} |
|
|
|
return $entry; |
|
} |
} |
|
|
sub get_list { |
sub get_list { |