AnyEvent-RPC
view release on metacpan or search on metacpan
lib/AnyEvent/RPC/Enc/YAML.pm view on Meta::CPAN
package AnyEvent::RPC::Enc::YAML;
use common::sense 2;
m{
use strict;
use warnings;
}; # Until cpants will know it make strict
use parent 'AnyEvent::RPC::Enc';
use Carp;
require AnyEvent::RPC; our $VERSION = $AnyEvent::RPC::VERSION;
=head1 NAME
AnyEvent::RPC::Enc::YAML - YAML Encoder for AE::RPC
=head1 DESCRIPTION
Uses YAML::Syck in unicode mode for encoding requests end decode response
=head1 SYNOPSIS
use AnyEvent::RPC;
my $rpc = AnyEvent::RPC->new(
...
type => 'YAML', # or type => '+AnyEvent::RPC::Enc::YAML',
)
=cut
BEGIN {
if (eval {require YAML::Syck; 1}) {
$YAML::Syck::ImplicitUnicode = 1;
*Dump = \&YAML::Syck::Dump;
*Load = \&YAML::Syck::Load;
} else {
croak "Cant load YAML::Syck. Install one to use YAML encoder";
}
}
sub request {
my $self = shift;
my $rpc = shift;
my %args = @_;
$args{data} = Dump( $args{data} ) if $args{data} and ref $args{data};
$args{headers}{'Content-Type'} = 'text/x-yaml';
$self->next::method($rpc,%args);
}
sub decode_response {
my $self = shift;
my $res = shift;
my $data = $res->decoded_content( charset => 'none' );
if ( my $doc = eval { Load( $data ) } ) {
return $doc;
} else {
die "$@";
}
}
1;
( run in 0.753 second using v1.01-cache-2.11-cpan-99c4e6809bf )