AnyEvent-Gmail-Feed
view release on metacpan or search on metacpan
example/gmail-notifier view on Meta::CPAN
#!/usr/bin/perl
package GmailNotifier;
use Moose;
use AnyEvent;
use AnyEvent::Gmail::Feed;
use Mac::Growl ':all';
with 'MooseX::Getopt';
has 'username' => (is => 'rw', isa => 'Str', required => 1);
has 'password' => (is => 'rw', isa => 'Str', required => 1);
has 'interval' => (is => 'rw', isa => 'Int', default => 60);
sub run {
my ($self, %args) = @_;
my %seen;
RegisterNotifications('GmailNotifier', ['email.arrived'], ['email.arrived']);
AnyEvent::Gmail::Feed->new(
username => $self->username,
password => $self->password,
interval => $self->interval,
on_new_entry => sub {
my $entry = shift;
warn "send notify: " . $entry->summary;
PostNotification('GmailNotifier', 'email.arrived', $entry->title, $entry->summary);
},
);
AnyEvent->condvar->recv;
}
lib/AnyEvent/Gmail/Feed.pm view on Meta::CPAN
use AnyEvent;
use AnyEvent::HTTP;
use MIME::Base64;
use XML::Atom::Feed;
sub new {
my ($class, %args) = @_;
my $username = delete $args{username};
my $password = delete $args{password};
my $label = delete $args{label};
my $interval = delete $args{interval} || 60;
unless ($username && $password) {
die "both username and password are required";
}
my $self = bless {}, $class;
my $auth = MIME::Base64::encode( join(":", $username, $password) );
my $headers = {Authorization => "Basic $auth"};
my $uri = 'https://mail.google.com/mail/feed/atom/';
$uri .= $label . '/' if $label; ## 'unread' or whatever
my %seen;
my $timer;
my $checker; $checker = sub {
http_get $uri, headers => $headers, sub {
my ($body, $hdr) = @_;
lib/AnyEvent/Gmail/Feed.pm view on Meta::CPAN
AnyEvent::Gmail::Feed - Subscribe to Gmail feed
=head1 SYNOPSIS
use AnyEvent;
use AnyEvent::Gmail::Feed;
AnyEvent::Gmail::Feed->new(
username => $user, #required
password => $pass, #required
label => $label, #optional (eg. 'unread')
interval => $interval, #optional (60s by default)
on_new_entry => sub {
my $entry = shift; #XML::Atom::Entry instance
use Data::Dumper; warn Dumper $entry->as_xml;
},
);
AnyEvent->condvar->recv;
=head1 DESCRIPTION
( run in 0.467 second using v1.01-cache-2.11-cpan-49f99fa48dc )