From 36f54fda1d85f5ebe974b37eb76ddbe00b132c64 Mon Sep 17 00:00:00 2001 From: franck cuny Date: Thu, 24 Mar 2011 15:35:26 +0100 Subject: multiple clients Signed-off-by: franck cuny --- lib/Net/HTTP/Spore/Role.pm | 64 ++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 30 deletions(-) (limited to 'lib/Net/HTTP') diff --git a/lib/Net/HTTP/Spore/Role.pm b/lib/Net/HTTP/Spore/Role.pm index ed33995..fae079d 100644 --- a/lib/Net/HTTP/Spore/Role.pm +++ b/lib/Net/HTTP/Spore/Role.pm @@ -3,38 +3,42 @@ package Net::HTTP::Spore::Role; use MooseX::Role::Parameterized; use Net::HTTP::Spore; -parameter name => (isa => 'Str', required => 1); -parameter config => (isa => 'Str', required => 1); +parameter spore_clients => (isa => 'ArrayRef[HashRef]', required => 1); role { - my $p = shift; - my $name = $p->name; - my $config = $p->config; - - has $name => ( - is => 'rw', - isa => 'Object', - lazy => 1, - default => sub { - my $self = shift; - my $client_config = $self->$config; - my $client = Net::HTTP::Spore->new_from_spec( - $client_config->{spec}, - %{ $client_config->{options} }, - ); - foreach my $mw ( @{ $client_config->{middlewares} } ) { - $client->enable($mw); - } - $client; - }, - ); - - has $config => ( - is => 'rw', - isa => 'HashRef', - lazy => 1, - default => sub { {} }, - ); + my $p = shift; + my $clients = $p->spore_clients; + + foreach my $client (@$clients) { + my $name = $client->{name}; + my $config = $client->{config}; + + has $name => ( + is => 'rw', + isa => 'Object', + lazy => 1, + default => sub { + my $self = shift; + my $client_config = $self->$config; + my $client = Net::HTTP::Spore->new_from_spec( + $client_config->{spec}, + %{ $client_config->{options} }, + ); + foreach my $mw ( @{ $client_config->{middlewares} } ) { + my %options = %{$mw->{options} || {}}; + $client->enable( $mw->{name}, %options); + } + $client; + }, + ); + + has $config => ( + is => 'rw', + isa => 'HashRef', + lazy => 1, + default => sub { {} }, + ); + } }; 1; -- cgit 1.4.1