package Dakkar::TweetArchive; use 5.024; use Moo; use experimental 'signatures'; use Net::Twitter; use Types::Standard qw(Str InstanceOf); use namespace::clean; has [qw(consumer_key consumer_secret access_token access_token_secret)] => ( is => 'ro', required => 1, isa => Str, ); has client => ( is => 'lazy', isa => InstanceOf['Net::Twitter'], ); sub _build_client($self) { my $nt = Net::Twitter->new( traits => [ qw/API::RESTv1_1 OAuth RetryOnError/, AutoCursor => { max_calls => 16, force_cursor => 1, array_accessor => 'users', methods => [qw/friends followers/], }, ], consumer_key => $self->consumer_key, consumer_secret => $self->consumer_secret, ); $nt->access_token($self->access_token); $nt->access_token_secret($self->access_token_secret); return $nt; } sub home_timeline($self,$since_id) { return $self->client->home_timeline({ include_entities => 1, trim_user => 0, exclude_replies => 0, ( $since_id ? ( since_id => $since_id ) : () ), count => 200, }); } sub friends($self) { return $self->client->friends({count=>200}); } sub followers($self) { return $self->client->followers({count=>200}); } 1;