e JSON::RPC::Common;
$JSON::RPC::Common::VERSION = '0.11';
# ABSTRACT: Transport agnostic JSON RPC helper objects
__PACKAGE__
__END__
=pod
=head1 NAME
JSON::RPC::Common - Transport agnostic JSON
e L<JSON::RPC::Common::Marshal::Text> instead for
# something like this.
use JSON::RPC::Common::Procedure::Call;
# deserialize whatever json text you have into json data:
my $req = from_json($re
quest_body);
# inflate it and get a call object:
my $call = JSON::RPC::Common::Procedure::Call->inflate($req);
warn $call->version;
# this will create a result object of the correct class/versi
age JSON::RPC::Common::Procedure::Return::Version_2_0::Error;
$JSON::RPC::Common::Procedure::Return::Version_2_0::Error::VERSION = '0.11';
use Moose;
# ABSTRACT: JSON-RPC 2.0 error class.
use JSON::R
PC::Common::TypeConstraints qw(JSONValue);
use namespace::clean -except => [qw(meta)];
extends qw(JSON::RPC::Common::Procedure::Return::Error);
has '+message' => (
required => 1,
);
has '+code' =
E__->meta->make_immutable;
__PACKAGE__
__END__
=pod
=head1 NAME
JSON::RPC::Common::Procedure::Return::Version_2_0::Error - JSON-RPC 2.0 error class.
=head1 VERSION
version 0.11
=head1 SYNOPSIS
/perl
package JSON::RPC::Common::Marshal::HTTP;
$JSON::RPC::Common::Marshal::HTTP::VERSION = '0.11';
use Moose;
# ABSTRACT: Convert L<HTTP::Request> and L<HTTP::Response> to/from L<JSON::RPC::Common>
TP::Response;
use namespace::clean -except => [qw(meta)];
extends qw(JSON::RPC::Common::Marshal::Text);
sub _build_json {
JSON->new->utf8(1);
}
has prefer_get => (
isa => "Bool",
is => "rw",
",
lazy_build => 1,
);
sub _build_user_agent {
my $self = shift;
require JSON::RPC::Common;
join(" ", ref($self), $JSON::RPC::Common::VERSION),
}
has content_type => (
isa => "Str",
is => "rw
erl
package JSON::RPC::Common::Procedure::Call;
$JSON::RPC::Common::Procedure::Call::VERSION = '0.11';
use Moose;
# ABSTRACT: JSON RPC Procedure Call base class.
use Try::Tiny;
use JSON::RPC::Common
::TypeConstraints qw(JSONValue);
use JSON::RPC::Common::Procedure::Return;
use Carp qw(croak);
use namespace::clean -except => [qw(meta)];
with qw(JSON::RPC::Common::Message);
has return_class =>
> "ClassName",
is => "rw",
default => "JSON::RPC::Common::Procedure::Return",
);
has error_class => (
isa => "ClassName",
is => "rw",
default => "JSON::RPC::Common::Procedure::Return::Error",
ckage JSON::RPC::Common::Marshal::Text;
$JSON::RPC::Common::Marshal::Text::VERSION = '0.11';
use Moose;
# ABSTRACT: JSON text marshalling for L<JSON::RPC::Common>.
use Carp qw(croak);
use JSON ();
u
e JSON::RPC::Common::Message;
use JSON::RPC::Common::Procedure::Call;
use JSON::RPC::Common::Procedure::Return;
use namespace::clean -except => [qw(meta)];
has json => (
isa => "Object",
is => "r
w(encode decode)],
lazy_build => 1,
);
sub _build_json {
JSON->new;
}
has message_class => (
isa => "ClassName",
is => "rw",
default => "JSON::RPC::Common::Message",
handles => { "inflate_mes
package JSON::RPC::Common::Procedure::Return;
$JSON::RPC::Common::Procedure::Return::VERSION = '0.11';
use Moose;
# ABSTRACT: JSON-RPC procedure return class
use Carp qw(croak);
use JSON::RPC::Com
mon::TypeConstraints qw(JSONValue);
use JSON::RPC::Common::Procedure::Return::Error;
use namespace::clean -except => [qw(meta)];
with qw(JSON::RPC::Common::Message);
around new_from_data => sub {
JSONValue,
is => "rw",
predicate => "has_id",
);
has error_class => (
isa => "ClassName",
is => "rw",
default => "JSON::RPC::Common::Procedure::Return::Error",
);
has error => (
isa => "JSON
perl
package JSON::RPC::Common::Procedure::Return::Error;
$JSON::RPC::Common::Procedure::Return::Error::VERSION = '0.11';
use Moose;
# ABSTRACT: Base class for JSON-RPC errors
use JSON::RPC::Common:
:TypeConstraints qw(JSONValue);
use namespace::clean -except => [qw(meta)];
sub new_dwim {
my ( $class, @args ) = @_;
if ( @args == 1 ) {
if ( blessed($args[0]) and $args[0]->isa($class) ) {
eq 'data' ? $data->{data} : $data);
}
$class->new(%constructor_args);
}
has data => (
isa => JSONValue,
is => "rw",
predicate => "has_data",
);
has message => (
isa => "Str",
is => "rw",
#!/usr/bin/perl
package JSON::RPC::Common::Message;
$JSON::RPC::Common::Message::VERSION = '0.11';
use Moose::Role;
# ABSTRACT: JSON-RPC message role
use Carp qw(croak);
use Class::Load qw();
use n
t->new(@_) }
sub _get_version {
my ( $class, $data ) = @_;
if ( exists $data->{jsonrpc} ) {
return $data->{jsonrpc}; # presumably 2.0
} elsif ( exists $data->{version} ) {
return $data->{vers
( exists $data->{method} ) {
$class = "JSON::RPC::Common::Procedure::Call";
} elsif ( exists $data->{id} or exists $data->{result} ) {
$class = "JSON::RPC::Common::Procedure::Return";
} els
package JSON::RPC::Common::Procedure::Return::Version_2_0;
$JSON::RPC::Common::Procedure::Return::Version_2_0::VERSION = '0.11';
use Moose;
# ABSTRACT: JSON-RPC 2.0 Procedure Return
use JSON::RPC::C
::Procedure::Return::Version_2_0::Error;
use namespace::clean -except => [qw(meta)];
extends qw(JSON::RPC::Common::Procedure::Return);
has '+version' => (
# default => "2.0", # broken, Moose::Meta
re
);
has '+error_class' => (
default => "JSON::RPC::Common::Procedure::Return::Version_2_0::Error",
);
sub deflate {
my $self = shift;
return {
jsonrpc => "2.0",
( $self->has_error
? ( e
l
package JSON::RPC::Common::Procedure::Return::Version_1_0;
$JSON::RPC::Common::Procedure::Return::Version_1_0::VERSION = '0.11';
use Moose;
# ABSTRACT: JSON-RPC 1.0 error class.
use JSON::RPC::Com
::Procedure::Return::Version_1_0::Error;
use namespace::clean -except => [qw(meta)];
extends qw(JSON::RPC::Common::Procedure::Return);
has '+version' => (
# default => "1.0", # broken, Moose::Meta
numbers if looks_like_number
default => sub { "1.0" },
);
has '+error_class' => (
default => "JSON::RPC::Common::Procedure::Return::Version_1_0::Error",
);
sub deflate {
my $self = shift;
retu
age JSON::RPC::Common::Procedure::Return::Version_1_1::Error;
$JSON::RPC::Common::Procedure::Return::Version_1_1::Error::VERSION = '0.11';
use Moose;
# ABSTRACT: JSON-RPC 1.1 error class.
use JSON::R
PC::Common::TypeConstraints qw(JSONValue);
use namespace::clean -except => [qw(meta)];
extends qw(JSON::RPC::Common::Procedure::Return::Error);
has '+message' => (
required => 1,
);
has '+code' =
> (
default => 500,
);
has name => (
is => "rw",
default => "JSONRPCError", # fucking idiots
);
sub deflate {
my $self = shift;
return {
name => $self->name,
message => $self->mess
ge JSON::RPC::Common::Procedure::Call::Version_1_1;
$JSON::RPC::Common::Procedure::Call::Version_1_1::VERSION = '0.11';
use Moose;
# ABSTRACT: JSON-RPC 1.1 Procedure Call
use MRO::Compat;
use JSON::
on::TypeConstraints qw(JSONContainer);
use JSON::RPC::Common::Procedure::Return::Version_1_1;
use Carp qw(croak);
use namespace::clean -except => [qw(meta)];
extends qw(JSON::RPC::Common::Procedur
'+params' => (
isa => JSONContainer,
);
has '+return_class' => (
default => "JSON::RPC::Common::Procedure::Return::Version_1_1",
);
has '+return_class' => (
default => "JSON::RPC::Common::Procedu
age JSON::RPC::Common::Procedure::Return::Version_1_0::Error;
$JSON::RPC::Common::Procedure::Return::Version_1_0::Error::VERSION = '0.11';
use Moose;
# ABSTRACT: JSON-RPC 1.0 error class.
use JSON::R
Common::TypeConstraints qw(JSONDefined);
use namespace::clean -except => [qw(meta)];
extends qw(JSON::RPC::Common::Procedure::Return::Error);
has '+data' => (
isa => JSONDefined,
);
sub make_data
_->meta->make_immutable();
__PACKAGE__
__END__
=pod
=head1 NAME
JSON::RPC::Common::Procedure::Return::Version_1_0::Error - JSON-RPC 1.0 error class.
=head1 VERSION
version 0.11
=head1 SYNOPSIS
/perl
package JSON::RPC::Common::Procedure::Call::Version_1_0;
$JSON::RPC::Common::Procedure::Call::Version_1_0::VERSION = '0.11';
use Moose;
# ABSTRACT: JSON-RPC 1.0 request
use JSON::RPC::Common::
Procedure::Return::Version_1_0;
use namespace::clean -except => [qw(meta)];
extends qw(JSON::RPC::Common::Procedure::Call);
has '+version' => (
# default => "1.0", # broken, Moose::Meta::Method::A
red => 1,
);
has '+return_class' => (
default => "JSON::RPC::Common::Procedure::Return::Version_1_0",
);
has '+error_class' => (
default => "JSON::RPC::Common::Procedure::Return::Version_1_0::Erro
package JSON::RPC::Common::Procedure::Return::Version_1_1;
$JSON::RPC::Common::Procedure::Return::Version_1_1::VERSION = '0.11';
use Moose;
# ABSTRACT: JSON-RPC 1.1 Procedure Return
use JSON::RPC::C
::Procedure::Return::Version_1_1::Error;
use namespace::clean -except => [qw(meta)];
extends qw(JSON::RPC::Common::Procedure::Return);
has '+version' => (
# default => "1.1", # broken, Moose::Meta
numbers if looks_like_number
default => sub { "1.1" },
);
has '+error_class' => (
default => "JSON::RPC::Common::Procedure::Return::Version_1_1::Error",
);
sub deflate {
my $self = shift;
retu
rl
package JSON::RPC::Common::Procedure::Call::Version_2_0;
$JSON::RPC::Common::Procedure::Call::Version_2_0::VERSION = '0.11';
use Moose;
# ABSTRACT: JSON-RPC 2.0 Procedure Call
use JSON::RPC::Comm
on::TypeConstraints qw(JSONContainer);
use JSON::RPC::Common::Procedure::Return::Version_2_0;
use namespace::clean -except => [qw(meta)];
extends qw(JSON::RPC::Common::Procedure::Call);
has '+versi
,
# init_arg => "jsonrpc", # illegal inherit arg. bah. it's meaningless, so we don't care
);
has '+params' => (
isa => JSONContainer,
);
has '+return_class' => (
default => "JSON::RPC::Common::Pr
age JSON::RPC::Common::TypeConstraints;
$JSON::RPC::Common::TypeConstraints::VERSION = '0.11';
# ABSTRACT: Type constraint library
use strict;
use warnings;
use MooseX::Types -declare => [qw(JSONDef
ined JSONValue JSONContainer)];
use MooseX::Types::Moose qw(Value ArrayRef HashRef Undef);
subtype JSONDefined, as Value|ArrayRef|HashRef;
subtype JSONValue, as Undef|Value|ArrayRef|HashRef;
subtyp
_
=pod
=head1 NAME
JSON::RPC::Common::TypeConstraints - Type constraint library
=head1 VERSION
version 0.11
=head1 SYNOPSIS
use JSON::RPC::Common::TypeConstraints qw(JSONValue);
=head1 DESCRI