Notify::XMPP


プロトタイプ以前のシロモノ。

だけど、jabber.jp経由でjabber.jpとかgmail.comに送れたので晒してみる。

package Plagger::Plugin::Notify::XMPP;
our $VERSION = '0.01';
use strict;
use warnings;
use base qw( Plagger::Plugin );

use Net::XMPP;

sub register {
    my($self, $context) = @_;
    $context->register_hook(
                            $self,
                            'publish.entry' => \&notify,
                           );
}

sub notify {
    my($self, $context, $args) = @_;

    my $xmpp = Net::XMPP::Client->new(debuglevel=>0);
    my $server_host = $self->conf->{server_host} || 'localhost';
    my $server_port = $self->conf->{server_port} || '5222';
    my $tls         = $self->conf->{tls} || 0;
    my $username    = $self->conf->{username} || die "fixme";
    my $password    = $self->conf->{password} || die "fixme";
    my $to          = $self->conf->{to} || die "fixme";

    my $on_auth = sub {
        $xmpp->MessageSend(
                        to => $to,
                        subject => $args->{entry}->title_text,
                        body    => $args->{entry}->title_text."\n".$args->{entry}->body_text,
                       );
        $xmpp->Disconnect();
    };
    $xmpp->Connect(
                   hostname => $server_host,
                   port     => $server_port,
                   tls      => $tls,
                  );
    $xmpp->SetCallBacks(onauth => $on_auth);
    $xmpp->Execute(
                   hostname => $server_host,
                   port     => $server_port,
                   tls      => $tls,
                   username => $username,
                   password => $password,
                  );
}

1;