/[Frey]/trunk/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

Annotation of /trunk/lib/Frey/Mojo.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 790 - (hide annotations)
Wed Dec 10 14:22:59 2008 UTC (15 years, 5 months ago) by dpavlin
File size: 1323 byte(s)
push correct Content-type to Mojo
1 dpavlin 267 package Frey::Mojo;
2    
3     use strict;
4     use warnings;
5    
6 dpavlin 633 use base 'Mojo';
7 dpavlin 267
8 dpavlin 633 use MojoX::Dispatcher::Static;
9 dpavlin 267
10 dpavlin 790 use lib 'lib';
11 dpavlin 633 use Frey::Server;
12 dpavlin 267
13 dpavlin 633 use Data::Dump qw/dump/;
14 dpavlin 267
15 dpavlin 633 __PACKAGE__->attr(
16     static => (
17     chained => 1,
18     default => sub { MojoX::Dispatcher::Static->new }
19     )
20     );
21    
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 dpavlin 267 }
35    
36 dpavlin 633 sub handler {
37     my ($self, $tx) = @_;
38 dpavlin 267
39 dpavlin 633 if ( $self->static->dispatch($tx) ) {
40 dpavlin 636 # warn "# static ",dump( $tx );
41 dpavlin 633 return $tx;
42     }
43 dpavlin 267
44 dpavlin 633 my $body;
45 dpavlin 272
46 dpavlin 633 my $server = Frey::Server->new;
47     $server->{_print} = sub {
48     $body .= join("\n", @_);
49     };
50 dpavlin 272
51 dpavlin 633 my $url = $tx->req->url->to_string;
52 dpavlin 636 my $params = $tx->req->params->to_hash;
53 dpavlin 318
54 dpavlin 633 warn "# url $url params ",dump($params);
55 dpavlin 318
56 dpavlin 790 my $content_type = $server->request( $url, $params ); # fetch body
57 dpavlin 633
58     =for developer
59    
60     # compatiblity with unpatched Mojo
61     sub class2rest {
62     my $c = shift;
63     $c =~ s/::/-/gs;
64     $c;
65     }
66     $body =~ s{(/\w+::\w+[\w:]+)}{class2rest($1)}sge;
67    
68     =cut
69    
70     $tx->res->code(200);
71 dpavlin 790 $tx->res->headers->content_type( $content_type );
72 dpavlin 633 $tx->res->body( $body );
73    
74     warn dump( $tx->res->headers );
75     return $tx;
76 dpavlin 267 }
77    
78     1;

  ViewVC Help
Powered by ViewVC 1.1.26