From a2634d1eb978366d85a9b55153a90bd001950933 Mon Sep 17 00:00:00 2001 From: franck cuny Date: Wed, 2 Jun 2010 11:37:31 +0200 Subject: role to handle format informations --- lib/MooseX/Net/API/Role/Format.pm | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 lib/MooseX/Net/API/Role/Format.pm diff --git a/lib/MooseX/Net/API/Role/Format.pm b/lib/MooseX/Net/API/Role/Format.pm new file mode 100644 index 0000000..32dbc98 --- /dev/null +++ b/lib/MooseX/Net/API/Role/Format.pm @@ -0,0 +1,41 @@ +package MooseX::Net::API::Role::Format; + +use Moose::Role; +use Moose::Util::TypeConstraints; + +sub content_type { + { json => {value => 'application/json', module => 'JSON',}, + yaml => {value => 'text/x-yaml', module => 'YAML'}, + xml => {value => 'text/xml', module => 'XML::Simple'}, + }; +} + +subtype Format => as 'Str' => where { + my $format = shift; + grep {/^$format$/} keys %{content_type()}; +}; + +enum 'FormatMode' => qw(content-type append); + +has api_format => ( + is => 'rw', + isa => 'Format', + lazy => 1, + default => sub { + my $self = shift; + $self->meta->get_option('api_format'); + } +); + +has api_format_mode => ( + is => 'rw', + isa => 'FormatMode', + lazy => 1, + default => sub { + my $self = shift; + my $mode = $self->meta->get_option('api_format_mode'); + $mode || 'append'; + } +); + +1; -- cgit 1.4.1