version 1.1, 2010/01/31 04:24:55 |
version 1.4, 2010/02/13 22:15:29 |
|
|
package Text::Todo::REST::API::Representations::json; |
package Text::Todo::REST::API::Representations::json; |
|
|
# $AFresh1: text.pm,v 1.4 2010/01/26 06:03:11 andrew Exp $ |
# $AFresh1: json.pm,v 1.3 2010/01/31 04:32:53 andrew Exp $ |
|
|
use base 'Text::Todo::REST::API::Representations'; |
use base 'Text::Todo::REST::API::Representations'; |
|
|
|
|
use JSON; |
use JSON; |
|
|
{ |
{ |
sub content_type { return 'text/plain' } |
sub content_type { return 'application/json' } |
|
|
sub can_render { |
sub can_render { |
my ( $class, $format ) = @_; |
my ( $class, $format ) = @_; |
return if !defined $format; |
return if !defined $format; |
|
|
my %handled_formats = map { $_ => 1 } qw( |
my %handled_formats = map { $_ => 1 } qw( |
text |
json |
txt |
|
); |
); |
|
|
return exists $handled_formats{$format}; |
return exists $handled_formats{$format}; |
} |
} |
|
|
sub render_files { |
sub _render { |
my ( $self, $format, $data ) = @_; |
|
|
|
$data ||= []; |
|
|
|
return to_json($data); |
|
} |
|
|
|
sub render_list { |
|
my ( $self, $format, $input ) = @_; |
my ( $self, $format, $input ) = @_; |
|
|
return if !defined $input; |
if (!defined $input) { |
|
$input = []; |
|
}; |
|
|
my @input = $input; |
if (!ref $input) { |
if ( ref $input eq 'ARRAY' ) { |
$input = [$input]; |
@input = @{$input}; |
|
} |
} |
|
|
return to_json(\@input); |
|
} |
|
|
|
sub render_entry { |
|
my ( $self, $format, $input ) = @_; |
|
return to_json($input); |
return to_json($input); |
} |
} |
|
|
|
sub render_files { _render(@_) } |
|
sub render_entry { _render(@_) } |
|
sub render_list { _render(@_) } |
|
sub render_tags { _render(@_) } |
} |
} |
|
|
1; # Magic true value required at end of module |
1; # Magic true value required at end of module |