Acme-Free-Advice-Slip
view release on metacpan or search on metacpan
lib/Acme/Free/Advice/Slip.pm view on Meta::CPAN
$res->{success} ? decode_json( $res->{content} ) : ();
}
#
sub advice ( $slip_id //= () ) {
my $res = _http( 'https://api.adviceslip.com/advice' . ( $slip_id ? '/' . $slip_id : '' ) );
defined $res->{slip} ? bless $res->{slip}, __PACKAGE__ : ();
}
sub search ($query) {
my $res = _http( 'https://api.adviceslip.com/advice/search/' . $query );
map { bless $_, __PACKAGE__ } @{ $res->{slips} // [] };
}
}
1;
__END__
=encoding utf-8
=head1 NAME
Acme::Free::Advice::Slip - Seek Advice from the Advice Slip API
script/advice_slip.pl view on Meta::CPAN
#~ @ARGV = qw[-json -id 2];
#~ @ARGV = qw[-help];
#
my $raw = 0;
my ( $id, $query );
sub _echo ($slip) { # JSON::Tiny is loaded in Acme::Free::Advice::* anyway
$raw ?
JSON::Tiny::encode_json(
builtin::blessed $slip ? {%$slip} : [
map {
{%$_}
} @$slip
]
) :
$slip;
}
GetOptions( 'json' => \$raw, 'help' => sub { pod2usage( -exitval => 1 ) }, 'id=i' => \$id, 'search=s' => \$query );
if ( defined $query ) {
my @slips = Acme::Free::Advice::Slip::search($query);
exit say $raw ? '[]' : 'No advice matches query' unless +@slips;
( run in 1.367 second using v1.01-cache-2.11-cpan-49f99fa48dc )