#!/usr/bin/env perl
use strict;
use warnings;

use Hook::LexWrap;
use YAML;

=head1 DESCRIPTION

=cut

use Net::Jabber;
my $client = Net::Jabber::Client->new(debuglevel=>1);
my $status = $client->Connect(
    hostname      => "jabber.mit.edu",
    tls           => 1,
    port          => 5222,
    componentname => 'mit.edu'
);

if(!$status) {
    die("Couldn't connect to serverx");
} else {
    print "Connected!\n";
}


use Authen::SASL;
use Authen::SASL::Cyrus;
# wrap 'Authen::SASL::Cyrus::client_new',
#        pre => 
#        sub {splice @_, -1, 0, ('xmpp', 'jabber.mit.edu'); warn YAML::Dump(\@_)};

{
    no warnings 'redefine';
    my $old_new = *Authen::SASL::new{CODE};
    *Authen::SASL::new = sub {
        my $self = shift;
        my %args = (@_);
        delete $args{callback}{authname};
        $old_new->($self, %args);
    };
    
    my $old_client_new = *Authen::SASL::Cyrus::client_new{CODE};
    *Authen::SASL::Cyrus::client_new = sub {$old_client_new->(@_, 'xmpp', 'jabber.mit.edu')};

}


my @result = $client->AuthSend(username => 'nelhage@mit.edu', resource => 'netjabber');

print join(",", @result);
