package SockJS::Transport;
use strict;
use warnings;
use SockJS::Transport::EventSource;
use SockJS::Transport::HtmlFile;
use SockJS::Transport::WebSocket;
use SockJS::Transport::XHRPolling;
use SockJS::Transport::XHRSend;
use SockJS::Transport::XHRStreaming;
use SockJS::Transport::JSONPPolling;
use SockJS::Transport::JSONPSend;
sub build {
my $self = shift;
my $path = shift;
my $class;
if ($path eq 'xhr') {
$class = 'XHRPolling';
}
elsif ($path eq 'xhr_send') {
$class = 'XHRSend';
}
elsif ($path eq 'xhr_streaming') {
$class = 'XHRStreaming';
}
if ($path eq 'jsonp') {
$class = 'JSONPPolling';
}
elsif ($path eq 'jsonp_send') {
$class = 'JSONPSend';
}
elsif ($path eq 'websocket' || $path eq 'raw_websocket') {
$class = 'WebSocket';
}
elsif ($path eq 'eventsource') {
$class = 'EventSource';
}
elsif ($path eq 'htmlfile') {
$class = 'HtmlFile';
}
return unless $class;
$class = "SockJS::Transport::$class";
return $class->new(name => $path, @_);
}
1;