—package
Weather::OpenWeatherMap::Error;
$Weather::OpenWeatherMap::Error::VERSION
=
'0.005004'
;
use
strictures 2;
use
Carp;
use
Types::Standard -all;
use
Moo;
use
overload
bool
=>
sub
{ 1 },
'""'
=>
sub
{
shift
->as_string },
fallback
=> 1;
has
request
=> (
required
=> 1,
is
=>
'ro'
,
isa
=> InstanceOf[
'Weather::OpenWeatherMap::Request'
],
);
has
source
=> (
required
=> 1,
is
=>
'ro'
,
isa
=>
sub
{
$_
[0] eq
'api'
||
$_
[0] eq
'internal'
||
$_
[0] eq
'http'
or
die
"Expected one of: api, internal, http"
},
);
has
status
=> (
required
=> 1,
is
=>
'ro'
,
isa
=> Str,
);
sub
as_string {
my
(
$self
) =
@_
;
my
$src
=
uc
$self
->source;
my
$msg
=
$self
->status;
"($src) $msg"
}
1;
=pod
=head1 NAME
Weather::OpenWeatherMap::Error - Internal and API error objects
=head1 SYNOPSIS
# Usually received from Weather::OpenWeatherMap
=head1 DESCRIPTION
These objects contain information on internal or backend (API) errors; they
are generally thrown by L<Weather::OpenWeatherMap> or emitted by
L<POEx::Weather::OpenWeatherMap> in response to a failed request.
These objects overload stringification (see L</as_string>).
These objects consume L<StackTrace::Auto>.
=head2 ATTRIBUTES
=head3 request
The original L<Weather::OpenWeatherMap::Request> object that caused the
error to occur.
=head3 source
The source of the error, one of: C<api>, C<internal>, C<http>
=head3 status
The error/status message string.
=head2 METHODS
=head3 as_string
Returns a stringified representation of the error in the form:
C<< (uc $err->source) $err->status >>
=head1 SEE ALSO
L<Weather::OpenWeatherMap>
L<StackTrace::Auto>
L<Devel::StackTrace>
=head1 AUTHOR
Jon Portnoy <avenj@cobaltirc.org>
=cut