/[Frey]/trunk/lib/Frey/Server.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 /trunk/lib/Frey/Server.pm

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

revision 643 by dpavlin, Sun Nov 30 16:02:46 2008 UTC revision 954 by dpavlin, Wed Jan 7 00:04:06 2009 UTC
# Line 6  with 'Frey::Config'; Line 6  with 'Frey::Config';
6    
7  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
8    
9    #use Carp::REPL; # 'nodie';
10    
11    use lib 'lib';
12  use Frey::Run;  use Frey::Run;
13    
14  has 'port' => (  has 'port' => (
# Line 32  has 'editor' => ( Line 35  has 'editor' => (
35  This is simple dispatcher for our server. Currently it's in flux and  This is simple dispatcher for our server. Currently it's in flux and
36  documented only in source code.  documented only in source code.
37    
38      my $content_type = $self->request( $url, $params );
39    
40  =cut  =cut
41    
42  sub print {  sub print {
# Line 51  sub request { Line 56  sub request {
56    
57          my $path = $url->path;          my $path = $url->path;
58    
59  #       eval {          if ( $path =~ m{^/(favicon.ico|__history__.html)$} ) {
60          {                  warn "INFO: $path ignored";
61                    return { code => 404, content_type => 'text/plain' };
62            }
63    
64            my $request = {
65                    content_type => 'text/html',
66                    code => 200,
67            };
68    
69            eval {
70    
71                  if ( $path =~ m{/reload(.*)} ) {                  if ( $path =~ m{/reload(.*)} ) {
72    
# Line 108  sub request { Line 122  sub request {
122                          $self->print( $self->editor->command( $path ) );                          $self->print( $self->editor->command( $path ) );
123                          return;                          return;
124                  } elsif (                  } elsif (
125                          $path =~ m{/([^/]+)/(\w*as_\w+)/?([^/]+)?}                          $path =~ m{/([^/]+)/(\w+)/?([^/]+)?}
126                  ) {                  ) {
127                          my $class = rest2class $1;                          my $class = rest2class $1;
128                          warn "# run $path -> $class $2";                          warn "# run $path -> $class $2";
129                          $run->{format} = $3 if $3;                          $run->{format} = $3 if $3;
                         $params->{request_url} = $url,  
130                          $run->{$_} = $params->{$_} foreach keys %$params;                          $run->{$_} = $params->{$_} foreach keys %$params;
131                          $f = Frey::Run->new( class => $class, params => $run, run => $2, request_url => $url );                          $f = Frey::Run->new( class => $class, params => $run, run => $2 );
132                  } elsif (                  } elsif (
133                          $path =~ m{/([^/]+)/?$}                          $path =~ m{/([^/]+)/?$}
134                  ) {                  ) {
135                          my $class = rest2class $1;                          my $class = rest2class $1;
136                          warn "# introspect $class";                          warn "# introspect $class";
137                          $run->{class} ||= $class;                          $run->{class} ||= $class;
138                          $f = Frey::Run->new( class => 'Frey::Introspect', params => $run, request_url => $url );                          $f = Frey::Run->new( class => 'Frey::Introspect', params => $run );
139                  } else {                  } else {
140                          $f = Frey::Run->new( class => 'Frey::ClassBrowser', params => $run, request_url => $url );                          $f = Frey::Run->new( class => 'Frey::Class::Browser', params => $run );
141                  }                  }
142    
143                  if ( $f ) {                  if ( $f ) {
# Line 141  sub request { Line 154  sub request {
154                          confess "# can't call request on nothing!";                          confess "# can't call request on nothing!";
155                  }                  }
156    
157                    $request->{content_type} = $f->content_type;
158          };          };
159    
160          if ( $@ ) {          if ( $@ ) {
161                  warn "SERVER ERROR: $@";                  warn "SERVER ERROR: $@";
162  #               $req->conn->send_error( 404 );  # FIXME this should probably be 500, but we can't ship page with it                  $self->print( qq|<pre class="frey-error">$@<pre>| );
                 $self->print( qq{<pre class="frey-error">$@<pre>\r\n\r\n} );  
163  #               Carp::REPL::repl;  #               Carp::REPL::repl;
164                    return {
165                            content_type => 'text/html',
166                            code => 404,
167                    }
168          }          }
169    
170            return $request;
171  }  }
172    
173  sub refresh {  sub refresh {

Legend:
Removed from v.643  
changed lines
  Added in v.954

  ViewVC Help
Powered by ViewVC 1.1.26