package Net::OSCAR::Chat; $VERSION = '0.62'; use strict; use Carp; use Net::OSCAR::TLV; use Net::OSCAR::Callbacks; use vars qw(@ISA $VERSION); use Net::OSCAR::Common qw(:all); use Net::OSCAR::OldPerl; @ISA = qw(Net::OSCAR::Connection); sub invite($$;$) { my($self, $who, $message) = @_; my $packet = ""; $message ||= "Join me in this Buddy Chat"; $self->log_print(OSCAR_DBG_DEBUG, "Inviting $who to join us."); $packet .= randchars(8); $packet .= pack("nCa*", 2, length($who), $who); my %tlv; tie %tlv, "Net::OSCAR::TLV"; %tlv = ( 0x5 => pack("n18 a* n2 a* n5 C a* n3", 0, 0x7EAF, 0x3A00, 0xB23A, 0, 0x748F, 0x2420, 0x6287, 0x11D1, 0x8222, 0x4445, 0x5354, 0, 0xA, 2, 1, 0xD, length("us-ascii"), "us-ascii", 0xC, length($message), $message, 0xF, 0, 0x2711, 9+length($self->{url}), $self->{exchange}, length($self->{url}), $self->{url}, 0, 3, 0 ) ); $packet .= tlv_encode(\%tlv); $self->{session}->{bos}->snac_put(family => 0x04, subtype => 0x06, data => $packet); } sub chat_send($$;$$) { my($self, $msg, $noreflect, $away) = @_; my $packet = ""; my %tlv; my %mtlv; tie %tlv, "Net::OSCAR::TLV"; tie %mtlv, "Net::OSCAR::TLV"; $packet .= randchars(8); $packet .= pack("n", 3); # channel %mtlv = ( 0x02 => "us-ascii", 0x03 => "", 0x01 => $msg ); %tlv = (0x01 => ""); $tlv{0x06} = "" unless $noreflect; $tlv{0x07} = "" if $away; $tlv{0x05} = tlv_encode(\%mtlv); $packet .= tlv_encode(\%tlv); $self->snac_put(family => 0x0E, subtype => 0x05, data => $packet); } sub part($) { shift->disconnect(); } sub url($) { shift->{url}; } sub name($) { shift->{name}; } sub exchange($) { shift->{exchange}; } 1;