Acme-Free-Advice-Unsolicited

 view release on metacpan or  search on metacpan

lib/Acme/Free/Advice/Unsolicited.pm  view on Meta::CPAN

    #
    sub _http ($uri) {
        state $http
            //= HTTP::Tiny->new( default_headers => { Accept => 'application/json' }, agent => sprintf '%s/%.2f ', __PACKAGE__, our $VERSION );
        my $res = $http->get($uri);    # {success} is true even when advice is not found but we'll at least know when we have valid JSON
        $res->{success} ? decode_json( $res->{content} ) : ();
    }
    #
    sub advice ( $advice_id //= () ) {
        my $res = _http( 'https://kk-advice.koyeb.app/api/advice' . ( $advice_id ? '/' . $advice_id : '' ) );
        defined $res->{error} ? () : bless $res, __PACKAGE__;
    }

    sub all () {
        my $res = _http('https://kk-advice.koyeb.app/api/advice/all');
        map { bless $_, __PACKAGE__ } @{ $res // [] };
    }
}
1;
__END__



( run in 0.612 second using v1.01-cache-2.11-cpan-65fba6d93b7 )