Net-YahooMessenger

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

  $yahoo->login()

    Call this after "new()" to logon the Yahoo!Messenger service.

  $yahoo->send($yahoo_id, $message)

    This method send an Instant-Message $message to the user specified by
    $yahoo_id. A kanji code is Shift_JIS when including Japanese in
    $message.

  $yahoo->change_state($busy, $status_message)

    This method sets the *status messages* for the current user. 'Status
    message' is set by $status_message. 'Busy icon' is set by the numerical
    value of $busy.

    The $busy should be called with following arguments:

            0 - I'm Available
            1 - Busy
            2 - Sleep

  $yahoo->recv()

    This method reads the message from a server socket and returns a
    corresponding Event object. The Event object which will be returned is
    as follows:

README  view on Meta::CPAN

            use Net::YahooMessenger;
            use strict;
            use constant IN_BUSY => 1;

            my $yahoo = Net::YahooMessenger->new(
                    id       => 'yahoo_id',
                    password => 'password',
            );
            $yahoo->login or die "Can't login Yahoo!Messenger";;

            $yahoo->change_state(IN_BUSY, q{I'm very busy now!});
            sleep 5;
            __END__

  Received message output to STDOUT

            #!perl
            use Net::YahooMessenger;
            use strict;

            my $yahoo = Net::YahooMessenger->new(

lib/Net/YahooMessenger.pm  view on Meta::CPAN

    my $server    = $self->handle;

    my $event = $self->create('SendMessage');
    $event->from( $self->id );
    $event->to($recipient);
    $event->body($message);
    $event->option(1515563606);  # in Buddy list then 1515563606 else 1515563605
    $server->send( $event->to_raw_string, 0 );
}

=head2 $yahoo->change_state($busy, $status_message)

This method sets the I<status messages> for the current user. 'Status message' is set by C<$status_message>. 'Busy icon' is set by the numerical value of C<$busy>.

The C<$busy> should be called with following arguments:

	0 - I'm Available
	1 - Busy
	2 - Sleep

=cut

sub change_state {
    my $self    = shift;
    my $busy    = shift;
    my $message = join '', @_;
    my $server  = $self->handle;

    my $event = $self->create('ChangeState');
    $event->status_code(99);    # 99 : Custom status
    $event->busy($busy);
    $event->body($message);

    $server->send( $event->to_raw_string, 0 );
}

sub change_status_by_code {
    my $self        = shift;
    my $status_code = shift || 0;
    my $server      = $self->handle;

    my $event = $self->create('ChangeState');
    $event->status_code($status_code);
    $event->busy(1);

    $server->send( $event->to_raw_string, 0 );
}

sub ping {
    my $self    = shift;
    my $server  = $self->get_connection;
    my $command = $self->_create_message( 76, 0, 0, '' );
    $server->send( $command, 0 );
    my $pong = $self->recv();

lib/Net/YahooMessenger.pm  view on Meta::CPAN

	use Net::YahooMessenger;
	use strict;
	use constant IN_BUSY => 1;

	my $yahoo = Net::YahooMessenger->new(
		id       => 'yahoo_id',
		password => 'password',
	);
	$yahoo->login or die "Can't login Yahoo!Messenger";;

	$yahoo->change_state(IN_BUSY, q{I'm very busy now!});
	sleep 5;
	__END__

=head2 Received message output to STDOUT

	#!perl
	use Net::YahooMessenger;
	use strict;

	my $yahoo = Net::YahooMessenger->new(

lib/Net/YahooMessenger/Buddy.pm  view on Meta::CPAN


use constant IS_ONLINE  => 1;
use constant IS_OFFLINE => 0;

sub new {
    my $class = shift;
    bless {
        name          => 'nobody',
        status        => IM_AVAILABLE,
        custom_status => '',
        busy          => ICON_AVAILABLE,
        online        => IS_OFFLINE,
        session_id    => 0,
    }, $class;
}

sub name {
    my $self = shift;
    $self->{name} = shift if @_;
    $self->{name};
}

sub status {
    my $self = shift;
    if (@_) {
        $self->{status} = shift;
        $self->busy(ICON_BUSY)  if $self->{status} <= STEPPED_OUT;
        $self->busy(ICON_SLEEP) if $self->{status} == SLEEP;
        $self->busy(ICON_AVAILABLE)
          if $self->{status} == CUSTOM_STATUS
              || $self->{status} == IM_AVAILABLE;
    }
    $self->{status};
}

sub custom_status {
    my $self = shift;
    if (@_) {
        $self->{custom_status} = shift;
        $self->status(CUSTOM_STATUS);
    }
    $self->{custom_status};
}

sub busy {
    my $self = shift;
    if (@_) {
        $self->{busy} = shift;
    }
    $self->{busy};
}

sub online {
    my $self = shift;
    if (@_) {
        $self->{online} = shift;
    }
    $self->{online};
}

lib/Net/YahooMessenger/Buddy.pm  view on Meta::CPAN

    else {
        return 'Unknown';
    }
}

sub to_string {
    my $self = shift;
    if ( $self->is_online ) {
        return
          sprintf "%s %s (%s)",
          $self->busy == ICON_AVAILABLE ? ':-)'
          : $self->busy == ICON_BUSY    ? ':-@'
          : $self->busy == ICON_SLEEP   ? '|-I'
          : '?',
          $self->name,
          $self->get_status_message;
    }
    else {
        return sprintf "%s %s (%s)", '   ', $self->name, 'Not online';
    }
}

1;

lib/Net/YahooMessenger/ChangeState.pm  view on Meta::CPAN

    my $self = shift;
    if (@_) {
        $self->SUPER::source(@_);
        my $yahoo = $self->get_connection;
        my $buddy = $yahoo->get_buddy_by_name( $self->from );
        return unless $buddy;

        $buddy->status( $self->status_code );
        if ( $self->status_code == 99 ) {
            $buddy->custom_status( $self->body );
            $buddy->busy( $self->busy );
        }
    }
    $self->SUPER::source();
}

sub from {
    my $self = shift;
    $self->_set_by_name( 'BUDDY_ID', shift ) if @_;
    $self->_get_by_name('BUDDY_ID');
}

sub body {
    my $self = shift;
    $self->_set_by_name( 'STATUS_MESSAGE', shift ) if @_;
    $self->_get_by_name('STATUS_MESSAGE');
}

sub busy {
    my $self = shift;
    $self->_set_by_name( 'BUSY_CODE', shift ) if @_;
    $self->_get_by_name('BUSY_CODE');
}

sub status_code {
    my $self = shift;
    $self->_set_by_name( 'STATUS_CODE', shift ) if @_;
    $self->_get_by_name('STATUS_CODE');
}

lib/Net/YahooMessenger/EventFactory.pm  view on Meta::CPAN

            if ( $baddy[$i] eq BADDY_NAME ) {
                $buddy = $connection->get_buddy_by_name( $baddy[ $i + 1 ] );
            }
            elsif ( $baddy[$i] eq STATE ) {
                $buddy->status( $baddy[ $i + 1 ] ) if $buddy;
            }
            elsif ( $baddy[$i] eq STATE_OF_USER_DEFINITION ) {
                $buddy->custom_status( $baddy[ $i + 1 ] ) if $buddy;
            }
            elsif ( $baddy[$i] eq BUSYNESS ) {
                $buddy->busy( $baddy[ $i + 1 ] ) if $buddy;
            }
            elsif ( $baddy[$i] eq SESSION_ID ) {
                $buddy->session_id( $baddy[ $i + 1 ] ) if $buddy;
            }
            elsif ( $baddy[$i] eq ONLINE_OR_OFFLINE ) {
                $buddy->online( $baddy[ $i + 1 ] ) if $buddy;
            }
            else { }
        }
        return $event;

script/ymsg.pl  view on Meta::CPAN

        print
"[system] You have been logged off as you have logged in on a different machine.\n";
        exit;
    }
}

sub ChangeState {
    my $self  = shift;
    my $event = shift;

    my $busy_status =
        $event->busy == 1 ? '(Busy) '
      : $event->busy == 2 ? '(Sleep) '
      :                     '';

    my $message;
    if ( $event->status_code == 99 ) {
        $message = sprintf "[%s] %sTransit to '%s'\n",
          $event->from, $busy_status, $event->body;
    }
    else {
        $message = sprintf "[%s] %sTransit to '%s'\n",
          $event->from, $busy_status, STATUS_MESSAGE->[ $event->status_code ];
    }
    print $message;
}

sub NewFriendAlert {
    my $self  = shift;
    my $event = shift;

    my $message =
      sprintf "[system] New Friend Alert: %s added %s as a Friend.\n",

script/ymsgj.pl  view on Meta::CPAN

        print
"[system] You have been logged off as you have logged in on a different machine.\n";
        exit;
    }
}

sub ChangeState {
    my $self  = shift;
    my $event = shift;

    my $busy_status =
        $event->busy == 1 ? '(Busy) '
      : $event->busy == 2 ? '(Sleep) '
      :                     '';

    my $message;
    if ( $event->status_code == 99 ) {
        $message = sprintf "[%s] %sTransit to '%s'\n",
          $event->from, $busy_status, $event->body;
    }
    else {
        $message = sprintf "[%s] %sTransit to '%s'\n",
          $event->from, $busy_status, STATUS_MESSAGE->[ $event->status_code ];
    }
    print Jcode->new($message)->euc;
}

sub NewFriendAlert {
    my $self  = shift;
    my $event = shift;

    my $message =
      sprintf "[system] New Friend Alert: %s added %s as a Friend.\n",

script/ymsgjdump.pl  view on Meta::CPAN


    printf "[system] %s goes out.\n", $event->from;

    _dump($event);
}

sub ChangeState {
    my $self  = shift;
    my $event = shift;

    my $busy_status =
        $event->busy == 1 ? '(Busy) '
      : $event->busy == 2 ? '(Sleep) '
      :                     '';

    my $message;
    if ( $event->status_code == 99 ) {
        $message = sprintf "[%s] %sTransit to '%s'\n",
          $event->from, $busy_status, $event->body;
    }
    else {
        $message = sprintf "[%s] %sTransit to '%s'\n",
          $event->from, $busy_status, STATUS_MESSAGE->[ $event->status_code ];
    }
    print Jcode->new($message)->euc;

    _dump($event);
}

sub NewFriendAlert {
    my $self  = shift;
    my $event = shift;



( run in 0.341 second using v1.01-cache-2.11-cpan-3cd7ad12f66 )