File Coverage

blib/lib/Articulate/Role/Service.pm
Criterion Covered Total %
statement 12 21 57.1
branch 0 2 0.0
condition n/a
subroutine 4 5 80.0
pod 0 1 0.0
total 16 29 55.1


line stmt bran cond sub pod time code
1             package Articulate::Role::Service;
2 9     9   4554 use strict;
  9         16  
  9         353  
3 9     9   47 use warnings;
  9         18  
  9         259  
4 9     9   41 use Moo::Role;
  9         14  
  9         58  
5             with 'Articulate::Role::Component';
6              
7 9     9   8048 use Class::Inspector;
  9         23201  
  9         2581  
8              
9             has verbs => (
10             is => 'rw',
11             default => sub {
12             my $self = shift;
13             return {
14             map { m/^(handle_(.*))$/; $2 => $1; }
15             grep { /^handle_/ }
16             @{ Class::Inspector->methods(ref $self) },
17             };
18             },
19             coerce => sub {
20             my $original = shift;
21             if ( ref $original eq ref {} ) {
22             return $original;
23             }
24             elsif ( ref $original eq ref {} ) {
25             return { map { $_ => "handle_$_"; } @$original };
26             }
27             return { $original => "handle_$original" }
28             },
29             );
30              
31             sub process_request {
32 0     0 0   my $self = shift;
33 0           my $request = shift;
34 0           my $verbs = $self->verbs;
35 0           my $verb = $request->verb;
36 0 0         if ( exists $verbs->{ $verb } ) {
37 0           my $method = $verbs->{ $verb };
38 0           $request->app($self->app);
39 0           return $self->$method($request, @_);
40             }
41 0           return undef; # whatever else the user wants, we can't provide it
42             }
43              
44             with 'Articulate::Role::Component';
45              
46             1;