#!/usr/local/bin/perl -w
###########################################
# pidgin-stockwatch
# Mike Schilli, 2010 (m@perlmeister.com)
###########################################
use strict;

use Pidgin;
use lib local::lib;
use Glib;
use WatchQuotes;

our %PLUGIN_INFO = (
  perl_api_version => 2,
  name        => "Pidgin Stockwatch",
  summary     => "Stock Alert via IM",
  version     => "1.0",
  author      => "Mike Schilli " .
                 "<m\@perlmeister.com>",
  load        => "plugin_load",
  unload      => "plugin_unload",
);

our $USER     = "mikeschilli";
our $PROTOCOL = "prpl-yahoo";

our $WATCH_QUOTES = WatchQuotes->new();

###########################################
sub plugin_init {
###########################################
  return %PLUGIN_INFO;
}

###########################################
sub plugin_unload {
###########################################
  my($plugin) = @_;

  Purple::Debug::info("stockwatch", 
      "Plugin unloaded.\n");

  1;
}

###########################################
sub plugin_load {
###########################################
  my($plugin) = @_;

  Purple::Debug::info("stockwatch", 
      "Plugin loaded.\n");

  $WATCH_QUOTES->init();
  $WATCH_QUOTES->watch( \&quotes_update );
}

###########################################
sub quotes_update {
###########################################
    my($msg) = @_;

    Purple::Debug::info("stockwatch", 
        "Updating Quotes.\n");

    my $account = Purple::Accounts::find(
        $USER, $PROTOCOL);

    my $conv = Purple::Conversation->new(
        1, $account, $USER);

      # user not online?
    return unless defined $conv; 

    $conv->get_im_data->write( 
        $PLUGIN_INFO{name}, $msg, 
        0, time );
}
