The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package AnySan::Provider::FriendFeed;
use strict;
use warnings;
use base 'AnySan::Provider';
our @EXPORT = qw(friend_feed);
use AnySan;
use AnySan::Receive;
use AnyEvent::FriendFeed::Realtime;

sub friend_feed {
    my(%config) = @_;

    my $self = __PACKAGE__->new(
        client => undef,
        config => \%config,
    );

    my $client = AnyEvent::FriendFeed::Realtime->new(
        username   => $config{user},
        remote_key => $config{remote_key},
        request    => $config{request},
        on_entry   => sub {
            my $entry = shift;
            my $receive; $receive = AnySan::Receive->new(
                provider      => 'friend_feed',
                event         => 'entry',
                message       => $entry->{body},
                nickname      => $config{nickname} || '',
                from_nickname => $entry->{from}->{name},
                attribute     => {
                    id         => $entry->{id},
                    url        => $entry->{url},
                    geo        => $entry->{geo},
                    icon_url   => $entry->{thumbnails}->[0]->{url},
                    created_at => $entry->{date},
                },
                cb            => sub { $self->event_callback($receive, @_) },
            );
            AnySan->broadcast_message($receive);
        }
    );
    $self->{client} = $client;

    return $self;
}

sub event_callback {
    my($self, $receive, $type, @args) = @_;

    if ($type eq 'reply') {
        warn 'send_replay is not suportted.';
    }
}

sub send_message {
    warn 'send_message is not suportted.';
}

1;