package JSON::RPC::Simple;
use strict;
use warnings;
use Scalar::Util qw(blessed refaddr);
use Carp qw(croak);
our $VERSION = '0.05';
our $ClientClass = "JSON::RPC::Simple::Client";
sub connect {
kg = shift;
require JSON::RPC::Simple::Client;
my $self = $ClientClass->new(@_);
return $self;
}
sub dispatch_to {
my $pkg = shift;
require JSON::RPC::Simple::Dispatche
return $method_attributes{refaddr $code};
}
my $method_attr_re = qr{
^
JSONRpcMethod
(?:\(\)|\(
\s*
(\w+ (\s*,\s* \w+)*)?
\s*
package JSON::RPC::Simple::Client;
use strict;
use warnings;
use Carp qw(croak);
use LWP::UserAgent;
use JSON qw();
use URI::Escape qw();
require JSON::RPC::Simple;
use constant DEFAULT_TIMEOUT =>
180;
use constant JSON_RPC_HTTP_HEADERS => (
Content_Type => "application/json; charset=UTF-8",
Accept => 'application/json',
);
sub new {
my ($pkg, $uri, $attrs) = @
$attrs eq "HASH";
my $agent = delete $attrs->{agent} || "JSON::RPC::Simple " .
JSON::RPC::Simple->VERSION;
package JSON::RPC::Simple::Dispatcher;
use strict;
use warnings;
use Carp qw(croak);
use HTTP::Response;
use JSON qw();
sub new {
my ($pkg, $args) = @_;
$args = {} unless ref $args eq "HAS
",
json => JSON->new->utf8,
error_handler => undef,
%$args,
target => {}
}, $pkg;
return $self;
}
sub json {
my $self = shift;
$self->{json} = shift i
f @_;
return $self->{json};
}
sub error_handler {
my $self = shift;
$self->{error_handler} = shift if @_;
return $self->{error_handler};
}
sub charset {
my $self = shift;