Commit | Line | Data |
5fabf3ec |
1 | package Catalyst::Service::WithContext; |
2 | use Moose::Role; |
3 | |
4 | use Bread::Board::Types; |
5 | |
6 | with 'Bread::Board::Service'; |
7 | |
8 | has accept_context_sub => ( |
9 | is => 'ro', |
10 | isa => 'Str', |
11 | default => 'ACCEPT_CONTEXT', |
12 | ); |
13 | |
14 | around 'get' => sub { |
38215fbf |
15 | my ( $orig, $self, %params ) = @_; |
5fabf3ec |
16 | |
38215fbf |
17 | my $context = delete $params{context}; |
18 | |
19 | my $instance = $self->$orig(%params); |
5fabf3ec |
20 | my $ac_sub = $self->accept_context_sub; |
21 | |
22 | if ( $instance->can($ac_sub) ) { |
38215fbf |
23 | return $instance->$ac_sub( @$context ); |
5fabf3ec |
24 | } |
25 | |
26 | return $instance; |
27 | }; |
28 | |
29 | no Moose::Role; |
30 | 1; |