File Coverage

blib/lib/JSON/RPC/Spec/Common.pm
Criterion Covered Total %
statement 37 37 100.0
branch n/a
condition 5 8 62.5
subroutine 13 13 100.0
pod n/a
total 55 58 94.8


line stmt bran cond sub pod time code
1             package JSON::RPC::Spec::Common;
2 9     9   102675 use Moo::Role;
  9         22  
  9         60  
3 9     9   5538 use Carp ();
  9         18  
  9         299  
4 9     9   5059 use JSON::MaybeXS qw(JSON);
  9         126731  
  9         1677  
5              
6             has coder => (
7             is => 'lazy',
8             isa => sub {
9             my $self = shift;
10             $self->can('encode') or Carp::croak('method encode required.');
11             $self->can('decode') or Carp::croak('method decode required.');
12             },
13             );
14              
15             has [qw(_callback_key _jsonrpc)] => (is => 'lazy');
16              
17             has [qw(_id _is_notification)] => (is => 'rw');
18              
19 9     9   131 use namespace::clean;
  9         22  
  9         117  
20              
21             sub _build_coder {
22 7     7   227594 JSON->new->utf8;
23             }
24              
25             sub _build__callback_key {
26 12     12   349 '_callback';
27             }
28              
29             sub _build__jsonrpc {
30 13     13   691 '2.0';
31             }
32              
33             sub _error {
34 35     35   72 my ($self, $error) = @_;
35             return +{
36 35         861 jsonrpc => $self->_jsonrpc,
37             error => $error,
38             id => $self->_id
39             };
40             }
41              
42             sub _rpc_invalid_request {
43 22     22   52 my ($self, $msg) = @_;
44 22   100     126 $msg //= 'Invalid Request';
45 22         82 my $error = {
46             code => -32600,
47             message => $msg
48             };
49 22         68 $self->_is_notification(undef);
50 22         99 return $self->_error($error);
51             }
52              
53             sub _rpc_method_not_found {
54 4     4   16 my ($self, $msg) = @_;
55 4   50     18 $msg //= 'Method not found';
56 4         18 my $error = {
57             code => -32601,
58             message => $msg
59             };
60 4         15 return $self->_error($error);
61             }
62              
63             sub _rpc_invalid_params {
64 2     2   9 my ($self, $msg) = @_;
65 2   50     9 $msg //= 'Invalid params';
66 2         9 my $error = {
67             code => -32602,
68             message => $msg
69             };
70 2         7 return $self->_error($error);
71             }
72              
73             sub _rpc_internal_error {
74 4     4   11 my ($self, @args) = @_;
75 4         12 my $error = {
76             code => -32603,
77             message => 'Internal error',
78             @args
79             };
80 4         10 return $self->_error($error);
81             }
82              
83             sub _rpc_parse_error {
84 3     3   13 my ($self, $msg) = @_;
85 3   50     23 $msg //= 'Parse error';
86 3         11 my $error = {
87             code => -32700,
88             message => $msg
89             };
90 3         12 return $self->_error($error);
91             }
92              
93             1;
94             __END__