Changeset 23380 for docs

Show
Ignore:
Timestamp:
11/12/08 19:06:56 (5 years ago)
Author:
hidek
Message:

updated NanoaA

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • docs/hidek/bench/nanoa/lib/NanoA.pm

    r23378 r23380  
    55 
    66sub new { 
    7     my ($klass, $config, $q) = @_; 
     7    my ($klass, $config) = @_; 
    88    bless { 
    99        config  => $config, 
    10         query   => $q, 
     10        query   => undef, 
    1111        headers => { 
    1212            -type    => 'text/html', 
    13             -charset => 'utf-8', 
     13            -charset => 'utf8', 
    1414        }, 
    1515    }, $klass; 
     
    3232sub query { 
    3333    my $self = shift; 
    34     $self->{query} = shift 
    35         if @_; 
     34    unless ($self->{query}) { 
     35        my $cgi_klass = $self->config('cgi_klass') || 'CGI::Simple'; 
     36        my $cgi_path = $cgi_klass; 
     37        $cgi_path =~ s{::}{/}g; 
     38        require "$cgi_path.pm"; 
     39        $self->{query} = $cgi_klass->new; 
     40    } 
    3641    $self->{query}; 
    3742} 
     
    6671} 
    6772 
     73sub print_header { 
     74    my $self = shift; 
     75    my $headers = $self->{headers}; 
     76    my $ct = 
     77        delete($headers->{-type}) . "; charset=" . delete($headers->{-charset}); 
     78    print "Content-Type: $ct\n"; 
     79    foreach my $n (sort keys %$headers) { 
     80        my $v = $headers->{$n}; 
     81        $n =~ s/^-//; 
     82        $n =~ tr/_/-/; 
     83        if (ref $v eq 'ARRAY') { 
     84            foreach my $vv (@$v) { 
     85                print "$n: $v\n"; 
     86            } 
     87        } else { 
     88            print "$n: $v\n"; 
     89        } 
     90    } 
     91    print "\n"; 
     92} 
     93     
    6894package NanoA::Dispatch; 
    6995 
     
    74100    my ($klass, $config) = @_; 
    75101     
    76     my $q = $klass->build_query($config); 
    77      
    78     my $handler_path = $config->{prefix} . ($q->path_info || '/'); 
     102    $config->{mt_cache_dir} = $klass->default_cache_dir($config) 
     103        unless exists $config->{mt_cache_dir}; 
     104     
     105    my $handler_path = $config->{prefix} . ($ENV{PATH_INFO} || '/'); 
    79106    $handler_path =~ s{\.\.}{}g; 
    80107    $handler_path = camelize($handler_path) 
     
    83110    my $handler_klass = $klass->load_handler($config, $handler_path) 
    84111        || $klass->load_handler($config, $klass->not_found); 
    85     my $handler = $handler_klass->new($config, $q); 
     112    my $handler = $handler_klass->new($config); 
    86113     
    87114    $handler->prerun(); 
     
    89116    $handler->postrun(\$body); 
    90117     
    91     print $q->header(%{$handler->headers}), $body; 
    92 } 
    93  
    94 sub build_query { 
    95     my ($klass, $config) = @_; 
    96     my $cgi_klass = $config->{cgi_klass} || 'CGI::Simple'; 
    97     my $cgi_path = $cgi_klass; 
    98     $cgi_path =~ s{::}{/}g; 
    99     require "$cgi_path.pm"; 
    100     $cgi_klass->new; 
     118    $handler->print_header(); 
     119    print $body; 
    101120} 
    102121 
     
    146165    my ($klass, $config) = @_; 
    147166    $config->{not_found} || 'NanoA/NotFound'; 
     167} 
     168 
     169sub default_cache_dir { 
     170    my ($klass, $config) = @_; 
     171    my $prefix = $config->{prefix}; 
     172    $prefix =~ s|/|::|g; 
     173    "/tmp/$prefix.$>.mt_cache"; 
    148174} 
    149175