Catalyst-Engine-Stomp

 view release on metacpan or  search on metacpan

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

package Catalyst::Engine::Stomp;
use Moose;
use List::MoreUtils qw/ uniq /;
use HTTP::Request;
use Net::Stomp;
use MooseX::Types::Moose qw/Str Int HashRef/;
use namespace::autoclean;
use Encode;

extends 'Catalyst::Engine::Embeddable';

our $VERSION = '0.17';

has connection => (is => 'rw', isa => 'Net::Stomp');

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

    $app->log->debug("message from $destination ($subscription)")
        if $app->debug;

    my $controller = $self->destination_namespace_map->{"/subscription/$subscription"}
        || $self->destination_namespace_map->{$destination};

    # set up request
    my $config = $app->config->{'Engine::Stomp'};
    my $url = 'stomp://'.$config->{hostname}.':'.$config->{port}.'/'.$controller;
    my $request_headers = HTTP::Headers->new(%{$frame->headers});
    my $req = HTTP::Request->new(POST => $url, $request_headers);
    $req->content($frame->body);
    $req->content_length(length $frame->body);

    # dispatch
    my $response;
    $app->handle_request($req, \$response);

    # reply, if header set
    if (my $reply_to = $response->headers->header('X-Reply-Address')) {
        my $reply_queue = '/remote-temp-queue/' . $reply_to;

lib/CatalystX/Test/MessageDriven.pm  view on Meta::CPAN

package CatalystX::Test::MessageDriven;
use Class::MOP;
use Sub::Exporter;
use HTTP::Request;

BEGIN {
    $ENV{CATALYST_ENGINE} = 'Test::MessageDriven';
};

=head1 NAME

CatalystX::Test::MessageDriven - test message-driven Catalyst apps

=head1 DESCRIPTION

lib/CatalystX/Test/MessageDriven.pm  view on Meta::CPAN

=head1 TODO

Some test wrappers - successful / error message conditions?

=cut

my $message_driven_request = sub {
    my ($app, $path, $req_message) = @_;
    my $url = "message://localhost:61613/$path";

    my $request = HTTP::Request->new( POST => $url );
    $request->content($req_message);
    $request->content_length(length $req_message);
    $request->content_type('application/octet-stream');

    my $response;
    $app->handle_request($request, \$response);

    return $response;
};



( run in 0.547 second using v1.01-cache-2.11-cpan-de7293f3b23 )