/[Frey]/branches/zimbardo/lib/Frey/Mojo.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /branches/zimbardo/lib/Frey/Mojo.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 268 by dpavlin, Wed Nov 5 08:20:38 2008 UTC revision 790 by dpavlin, Wed Dec 10 14:22:59 2008 UTC
# Line 3  package Frey::Mojo; Line 3  package Frey::Mojo;
3  use strict;  use strict;
4  use warnings;  use warnings;
5    
6  use base 'Mojolicious';  use base 'Mojo';
7    
8  # This method will run for each request  use MojoX::Dispatcher::Static;
9  sub dispatch {  
10      my ($self, $c) = @_;  use lib 'lib';
11    use Frey::Server;
12      # Try to find a static file  
13      $self->static->dispatch($c);  use Data::Dump qw/dump/;
14    
15      # Use routes if we don't have a response code yet  __PACKAGE__->attr(
16      $self->routes->dispatch($c) unless $c->res->code;      static => (                            
17            chained => 1,                      
18      # Nothing found          default => sub { MojoX::Dispatcher::Static->new }
19      unless ($c->res->code) {      )
20          $self->static->serve($c, '/404.html');  );
21          $c->res->code(404);  
22      }  sub new {
23        my $self = shift->SUPER::new();
24    
25        # This app should log only errors to STDERR
26        $self->log->level('error');
27        $self->log->path(undef);
28    
29            warn "# home ", $self->home;
30    
31            $self->static->root( './' );
32    
33        return $self;
34  }  }
35    
36  use Frey::ClassLoader;  sub handler {
37            my ($self, $tx) = @_;
38    
39            if ( $self->static->dispatch($tx) ) {
40    #               warn "# static ",dump( $tx );
41                    return $tx;
42            }
43    
44            my $body;
45    
46            my $server = Frey::Server->new;
47            $server->{_print} = sub {
48                    $body .= join("\n", @_);
49            };
50    
51            my $url = $tx->req->url->to_string;
52            my $params = $tx->req->params->to_hash;
53    
54            warn "# url $url params ",dump($params);
55    
56            my $content_type = $server->request( $url, $params ); # fetch body
57    
58    =for developer
59    
60  # This method will run once at server start          # compatiblity with unpatched Mojo
61  sub startup {          sub class2rest {
62      my $self = shift;                  my $c = shift;
63                    $c =~ s/::/-/gs;
64                    $c;
65            }
66            $body =~ s{(/\w+::\w+[\w:]+)}{class2rest($1)}sge;
67    
68          Frey::ClassLoader->new->load_all_classes();  =cut
69    
70      # The routes          $tx->res->code(200);
71      my $r = $self->routes;          $tx->res->headers->content_type( $content_type );
72            $tx->res->body( $body );
73    
74      # Default route          warn dump( $tx->res->headers );
75      $r->route('/:controller/:action/:class')          return $tx;
       ->to(controller => 'run', action => 'markup', class => 'Frey::ClassBrowser');  
76  }  }
77    
78  1;  1;

Legend:
Removed from v.268  
changed lines
  Added in v.790

  ViewVC Help
Powered by ViewVC 1.1.26