#!/usr/bin/env perl use strict; use warnings; use feature qw(say); use IO::Async::Loop; use Net::Async::Github; use Time::Duration; use Log::Any::Adapter qw(Stdout), log_level => 'info'; my $token = shift or die "need a token"; my $loop = IO::Async::Loop->new; $loop->add( my $gh = Net::Async::Github->new( token => $token, ) ); $gh->core_rate_limit->remaining->subscribe(sub { printf "Have %d Github requests remaining\n", $_; }); say "First request should hit the API"; $gh->repos ->take(1) ->each(sub { printf "* %s has %d open issues and %d forks\n", $_->name, $_->open_issues_count, $_->forks_count; }) ->await; say "Second request should hit the cache - your rate limit quota should not be affected"; $gh->repos ->take(1) ->each(sub { printf "* %s has %d open issues and %d forks\n", $_->name, $_->open_issues_count, $_->forks_count; }) ->await;