55 |
} |
} |
56 |
|
|
57 |
my $path = $url->path; |
my $path = $url->path; |
58 |
my $content_type = 'text/plain'; |
|
59 |
|
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 { |
eval { |
70 |
|
|
154 |
confess "# can't call request on nothing!"; |
confess "# can't call request on nothing!"; |
155 |
} |
} |
156 |
|
|
157 |
$content_type = $f->content_type; |
$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>| ); |
|
$content_type = 'text/html'; |
|
|
$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 $content_type; |
return $request; |
171 |
} |
} |
172 |
|
|
173 |
sub refresh { |
sub refresh { |
188 |
|; # XXX newlines at end are important to flush content to browser |
|; # XXX newlines at end are important to flush content to browser |
189 |
} |
} |
190 |
|
|
191 |
|
my $timestamp_interval = 3; |
192 |
|
my $output_tell = 0; |
193 |
|
|
194 |
|
$SIG{ALRM} = sub { |
195 |
|
if ( tell(STDERR) != $output_tell ) { |
196 |
|
warn "\nTIMESTAMP: " . localtime() . "\n\n"; |
197 |
|
$output_tell = tell(STDERR); |
198 |
|
} |
199 |
|
alarm $timestamp_interval; |
200 |
|
}; |
201 |
|
alarm $timestamp_interval; |
202 |
|
|
203 |
1; |
1; |