has
'PreauthAction'
,
is
=>
'ro'
,
init_arg
=>
undef
,
default
=>
sub
{
undef
};
has
'ctx'
,
is
=>
'ro'
,
required
=> 0;
has
'title'
,
is
=>
'ro'
,
isa
=> Maybe[Str],
default
=>
sub
{
undef
};
has
'subtitle'
,
is
=>
'ro'
,
isa
=> Maybe[Str],
default
=>
sub
{
undef
};
sub
class_name {
my
$self
=
shift
;
blessed
$self
||
$self
;
}
sub
BUILD {
my
$self
=
shift
;
$self
->info or
$self
->info(
$self
->_default_error_info )
}
sub
stringify {
my
$self
=
shift
;
$self
->info ||
$self
->_default_error_info
}
sub
_default_error_info {
my
$self
=
shift
;
my
$type
=
$self
->error_type ||
$self
->class_name;
"Actor: unspecified '$type' error\n"
}
sub
is_error { 1 }
sub
error_type {
my
$self
=
shift
;
my
$class
=
$self
->class_name;
(
split
(/Rapi::Blog::PreAuth::Actor::Error::/,
$class
,2))[1];
}
sub
throw {
my
(
$self
,
@args
) =
@_
;
my
$msg
= (
defined
$args
[0] && !
ref
(
$args
[0])) ? (
shift
@args
) :
undef
;
my
%opts
= (
ref
(
$_
[0]) eq
'HASH'
) ? %{
$_
[0] } :
@_
;
$opts
{info} ||=
$msg
||
$self
->_default_error_info;
die
$self
->new(\
%opts
)
}
sub
execute {
die
(
shift
) }
sub
call_execute {
die
(
shift
) }
1;