#!/usr/bin/env perl use strict; use warnings; use MozRepl; my $repl = MozRepl->new; $repl->setup; { package Server; use POE qw/Component::Server::HTTP/; use base qw/Class::Accessor::Fast/; sub new { my $self = shift->SUPER::new( @_ > 1 ? {@_} : $_[0] ); } sub run { my $self = shift; POE::Session->create( object_states => [ $self => [qw/_start/], ], ); POE::Kernel->run; } sub _start { my ($self, $kernel) = @_[OBJECT, KERNEL]; $kernel->alias_set('main'); POE::Component::Server::HTTP->new( Port => $self->{port}, ContentHandler => { '/key/' => \&handle_key, '/' => \&handle_root, }, ); } sub handle_root { my ($req, $res) = @_; $res->code(200); open my $fh, '<', 'psp.swf'; my $swf = do { local $/; <$fh> }; close $fh; $res->content_type('application/x-shockwave-flash'); $res->content($swf); } sub handle_key { my ($req, $res) = @_; $res->code(200); my ($key) = $req->uri =~ m!key/(\d+)!; my %query = $req->uri->query_form; my $page = $query{p}; if ($key eq '37') { $page--; $repl->execute("content.window.go(-1)"); } elsif ($key eq '38') { $page = 0; $repl->execute("content.window.go(-100)"); } elsif ($key eq '39') { $page++; $repl->execute("content.window.go(1)"); } elsif ($key eq '40') { $repl->execute("content.window.go(100)"); } # $repl->execute("content.window.go($page)"); $res->code(200); $res->content($page); } } my $server = new Server->new( port => 80 ); $server->run;