File Coverage

blib/lib/Plack/Middleware/SocketIO.pm
Criterion Covered Total %
statement 27 35 77.1
branch 4 6 66.6
condition 6 15 40.0
subroutine 8 9 88.8
pod 2 2 100.0
total 47 67 70.1


line stmt bran cond sub pod time code
1             package Plack::Middleware::SocketIO;
2              
3 1     1   878 use strict;
  1         2  
  1         37  
4 1     1   6 use warnings;
  1         1  
  1         34  
5              
6 1     1   6 use base 'Plack::Middleware';
  1         1  
  1         962  
7              
8             our $VERSION = '0.00904';
9              
10 1     1   16334 use Plack::Util ();
  1         2  
  1         23  
11 1     1   5 use Plack::Util::Accessor qw(resource handler class instance method);
  1         2  
  1         5  
12              
13 1     1   1284 use Plack::Middleware::SocketIO::Resource;
  1         3  
  1         238  
14              
15             sub new {
16 4     4 1 1283 my $self = shift->SUPER::new(@_);
17              
18 4         42 $self->handler($self->_get_handler);
19              
20 3         36 return $self;
21             }
22              
23             sub call {
24 0     0 1 0 my $self = shift;
25 0         0 my ($env) = @_;
26              
27 0   0     0 my $resource = $self->resource || 'socket.io';
28 0         0 $resource = quotemeta $resource;
29              
30 0 0 0     0 if (defined $env->{PATH_INFO} && $env->{PATH_INFO} =~ m{^/$resource/}) {
31 0         0 my $instance = Plack::Middleware::SocketIO::Resource->instance;
32              
33 0   0     0 return $instance->finalize($env, $self->handler)
34             || [400, ['Content-Type' => 'text/plain'], ['Bad request']];
35             }
36              
37 0         0 return $self->app->($env);
38             }
39              
40             sub _get_handler {
41 4     4   6 my $self = shift;
42              
43 4 100       10 return $self->handler if $self->handler;
44              
45 3 100 100     97 die q{Either 'handler', 'class' or 'instance' must be specified}
46             unless $self->instance || $self->class;
47              
48 2   50     19 my $method = $self->method || 'run';
49              
50             my $instance = $self->instance
51 2   66     16 || do { Plack::Util::load_class($self->class); $self->class->new; };
52              
53 2         16 return $instance->run;
54             }
55              
56             1;
57             __END__