diff options
-rw-r--r-- | lib/Plack/Client.pm | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Plack/Client.pm b/lib/Plack/Client.pm index b38e2c2..6ac6c97 100644 --- a/lib/Plack/Client.pm +++ b/lib/Plack/Client.pm @@ -80,12 +80,18 @@ sub new { for my $scheme (keys %params) { my $backend = $params{$scheme}; if (blessed($backend)) { + die "Backends must support the app_from_request method" + unless $backend->can('app_from_request'); $backends{$scheme} = $backend; } elsif (ref($backend)) { (my $normal_scheme = $scheme) =~ s/-/_/g; my $backend_class = "Plack::Client::Backend::$normal_scheme"; Class::Load::load_class($backend_class); + die "Backends must support the app_from_request method" + unless $backend_class->can('app_from_request'); + die "Backend classes must have a constructor" + unless $backend_class->can('new'); $backends{$scheme} = $backend_class->new( reftype($backend) eq 'HASH' ? %$backend : reftype($backend) eq 'ARRAY' ? @$backend |