package JSON::RPC::Spec;
use Moo;
use Carp ();
use version; our $VERSION = version->declare("v1.0.7");
use Try::Tiny;
use Router::Simple;
use JSON::RPC::Spec::Procedure;
use JSON::RPC::Spec::Client;
w
ith qw(
JSON::RPC::Spec::Common
);
use constant DEBUG => $ENV{PERL_JSON_RPC_SPEC_DEBUG} || 0;
has router => (
is => 'lazy',
isa => sub {
my $self = shift;
$self->can('matc
;
}
sub _build__procedure {
JSON::RPC::Spec::Procedure->new(router => shift->router);
}
sub _build__client {
JSON::RPC::Spec::Client->new;
}
sub _parse_json {
my ($self, $extra_args) =
package JSON::RPC::Spec::Procedure;
use Moo;
use Carp ();
use Try::Tiny;
with qw(
JSON::RPC::Spec::Common
);
use constant DEBUG => $ENV{PERL_JSON_RPC_SPEC_DEBUG} || 0;
has router => (
is
ternal_error(data => $err);
}
return $error;
}
return +{
jsonrpc => $self->_jsonrpc,
result => $result,
id => $self->_id
};
}
# trigger regis
_END__
=encoding utf-8
=head1 NAME
JSON::RPC::Spec::Procedure - Subclass of JSON::RPC::Spec
=head1 DESCRIPTION
JSON::RPC::Spec::Procedure is Subclass of JSON::RPC::Spec.
=head1 FUNCTIONS
=head2
package JSON::RPC::Spec::Common;
use Moo::Role;
use Carp ();
use JSON::MaybeXS qw(JSON);
has coder => (
is => 'lazy',
isa => sub {
my $self = shift;
$self->can('encode') or C
},
);
has [qw(_callback_key _jsonrpc)] => (is => 'lazy');
has [qw(_id _is_notification)] => (is => 'rw');
use namespace::clean;
sub _build_coder {
JSON->new->utf8;
}
sub _build__callbac
k_key {
'_callback';
}
sub _build__jsonrpc {
'2.0';
}
sub _error {
my ($self, $error) = @_;
return +{
jsonrpc => $self->_jsonrpc,
error => $error,
id =
package JSON::RPC::Spec::Client;
use Moo;
use Carp ();
with qw(
JSON::RPC::Spec::Common
);
use namespace::clean;
sub compose {
my ($self, $method, $params, $id) = @_;
my @args;
if (de
jsonrpc => $self->_jsonrpc,
method => $method,
params => $params,
@args
}
);
}
1;
__END__
=encoding utf-8
=head1 NAME
JSON::RPC::Spec:
nt - Yet another JSON-RPC 2.0 Client Implementation
=head1 FUNCTIONS
=head2 compose
use JSON::RPC::Spec::Client;
my $rpc_client = JSON::RPC::Spec::Client->new;
my $json_string = $rpc_cl