Catalyst-Engine-XMPP2

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN


    $c->engine->connection($c)
        Access the connection object that generated the current request.

    $c->engine->connections()
        This returns a hashref identifying all the connections by the
        resource name.

INTERNAL METHODS
    $engine->handle_xmpp_node($app, $resource, $node)
        This method is called by the stanza callbacks in the connections.

SEE ALSO
    Catalyst::Engine, Catalyst::Engine::CGI, HTTP::Request, HTTP::Reponse,
    Catalyst, Net::XMPP2::Connection, Catalyst::Engine::Embeddable

AUTHORS
    Daniel Ruoso "daniel@ruoso.com"

BUG REPORTS
    Please submit all bugs regarding "Catalyst::Engine::XMPP2" to

lib/Catalyst/Engine/XMPP2.pm  view on Meta::CPAN

name.

=back

=head1 INTERNAL METHODS

=over

=item $engine->handle_xmpp_node($app, $resource, $node)

This method is called by the stanza callbacks in the connections.

=back

=head1 SEE ALSO

L<Catalyst::Engine>, L<Catalyst::Engine::CGI>, L<HTTP::Request>,
L<HTTP::Reponse>, L<Catalyst>, L<AnyEvent::XMPP::Connection>,
L<Catalyst::Engine::Embeddable>

=head1 AUTHORS

t/TestApp.t  view on Meta::CPAN

};

my $last_set_callback;
my $expecting = '';
{   package Test::XMPP2;
    sub connect {
        return 1;
    }
    sub reg_cb {
        my $self = shift;
        my %callbacks = @_;
        $self->{callbacks} = \%callbacks;
    }
    sub reply_iq_result {
        my ($self, $id, $cb) = @_;
        return unless $expecting eq 'iq_reply';
        $last_set_callback = $cb;
    }
    sub send_message {
        my ($self, $jid, $type, $cb, %attr) = @_;
        return unless $expecting eq 'message';
        $last_set_callback = $cb;

t/TestApp.t  view on Meta::CPAN

    } else {
        fail('Unexpected resource '.$c);
    }
}
for my $c (keys %expected_resources) {
    fail('Missing resource '.$c);
}

# let's say the stream is ready
for my $c (keys %connections) {
    $connections{$c}{callbacks}{stream_ready}->();
}

require AnyEvent::XMPP::Parser;


{
    # now let's do an iq request...
    my $parser = AnyEvent::XMPP::Parser->new();
    $parser->set_stanza_cb
      (sub {
           my ($parser, $node) = @_;
           return unless $node;

           $last_set_callback = undef;
           $expecting = 'iq_reply';
           my $writer = Test::Writer->new();

           $connections{'foo/iq_req'}{callbacks}{iq_get_request_xml}->($parser,$node);

           ok($last_set_callback, 'reply sent');
           $last_set_callback->($writer) if $last_set_callback;
           is($writer->{data}, '<body>Hello World</body>', 'got correct iq reply');
       });
    $parser->set_error_cb
      (sub {
           my ($error, $data) = @_;
           warn 'Failed!! '.$error.': '.$data;
       });

t/TestApp.t  view on Meta::CPAN

    my $parser = AnyEvent::XMPP::Parser->new();
    $parser->set_stanza_cb
      (sub {
           my ($parser, $node) = @_;
           return unless $node;

           $last_set_callback = undef;
           $expecting = 'iq_reply';
           my $writer = Test::Writer->new();

           $connections{'foo/iq_req_xml'}{callbacks}{iq_set_request_xml}->($parser,$node);

           ok($last_set_callback, 'reply sent');
           $last_set_callback->($writer) if $last_set_callback;
           is($writer->{data}, '<hello>World</hello>', 'got correct iq reply');
       });
    $parser->set_error_cb
      (sub {
           my ($error, $data) = @_;
           warn 'Failed!! '.$error.': '.$data;
       });

t/TestApp.t  view on Meta::CPAN

    my $parser = AnyEvent::XMPP::Parser->new();
    $parser->set_stanza_cb
      (sub {
           my ($parser, $node) = @_;
           return unless $node;

           $last_set_callback = undef;
           $expecting = 'message';
           my $writer = Test::Writer->new();

           $connections{'foo/message'}{callbacks}{message_xml}->($parser,$node);

           ok($last_set_callback, 'reply sent');
           $last_set_callback->($writer) if $last_set_callback;
           is($writer->{data}, '<hello>World</hello>', 'got correct message');
       });
    $parser->set_error_cb
      (sub {
           my ($error, $data) = @_;
           warn 'Failed!! '.$error.': '.$data;
       });

t/TestApp.t  view on Meta::CPAN

    my $parser = AnyEvent::XMPP::Parser->new();
    $parser->set_stanza_cb
      (sub {
           my ($parser, $node) = @_;
           return unless $node;

           $last_set_callback = undef;
           $expecting = 'presence';
           my $writer = Test::Writer->new();

           $connections{'foo/presence'}{callbacks}{message_xml}->($parser,$node);

           ok($last_set_callback, 'reply sent');
           $last_set_callback->($writer) if $last_set_callback;
           is($writer->{data}, '<hello><place>World</place></hello>', 'got correct presence');
       });
    $parser->set_error_cb
      (sub {
           my ($error, $data) = @_;
           warn 'Failed!! '.$error.': '.$data;
       });



( run in 0.693 second using v1.01-cache-2.11-cpan-9b1e4054eb1 )