Guest User

Untitled

a guest
Apr 20th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. package Net::Twitter::Role::RateLimit;
  2. use Moose::Role;
  3. use namespace::autoclean;
  4.  
  5. requires qw/ua/;
  6.  
  7. has rate_remaining => ( isa => 'Int', is => 'rw', init_arg => undef, lazy => 1,
  8. default => sub { shift->_ensure_rate('rate_remaining') } );
  9. has rate_reset => ( isa => 'Int', is => 'rw', init_arg => undef, lazy => 1,
  10. default => sub { shift->_ensure_rate('rate_reset' ) } );
  11. has rate_limit => ( isa => 'Int', is => 'rw', init_arg => undef, lazy => 1,
  12. default => sub { shift->_ensure_rate('rate_limit' ) } );
  13.  
  14. sub _ensure_rate {
  15. my ( $self, $attr ) = @_;
  16.  
  17. my $r = $self->rate_limit_status || return;
  18. return $self->{$attr};
  19. }
  20.  
  21. around rate_limit_status => sub {
  22. my $orig = shift;
  23. my $self = shift;
  24.  
  25. my $r = $self->$orig(@_) || return;
  26.  
  27. @{$self}{qw/rate_remaining rate_reset rate_limit/} =
  28. @{$r}{qw/remaining_hits reset_time_in_seconds hourly_limit/};
  29.  
  30. return $r;
  31. };
Add Comment
Please, Sign In to add comment