Changeset 10722

Show
Ignore:
Timestamp:
04/29/08 11:58:51 (5 years ago)
Author:
tokuhirom
Message:

HTTP::Engine が結構いい感じになってきたので、本体に侵食させてもよさそう

Location:
lang/perl/Moxy/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Moxy/trunk/lib/Moxy.pm

    r10716 r10722  
    161161 
    162162sub handle_request { 
    163     my $self = shift; 
    164     my %args = validate( 
    165         @_, 
    166         +{ 
    167             request => { isa => 'HTTP::Request' }, 
    168         } 
    169     ); 
    170  
    171     my $uri = URI->new($args{request}->uri); 
    172     $self->log(debug => "Request URI: $uri"); 
    173  
    174     my $base = $uri->clone; 
    175     $base->path(''); 
    176     $base->query_form({}); 
    177  
    178     my $auth_header = $args{request}->header('Authorization'); 
    179     $self->log(debug => "Authorization header: $auth_header"); 
    180     if ($auth_header =~ /^Basic (.+)$/) { 
    181         my $auth = decode_base64($1); 
    182         $self->log(debug => "auth: $auth"); 
     163    my ($self, $c) = @_; 
     164 
     165    my $session_id = join ',', $c->req->headers->authorization_basic; 
     166    $self->log(debug => "Authorization header: $session_id"); 
     167    if ($session_id) { 
     168        my $uri = URI->new($c->req->uri); 
     169        $self->log(debug => "Request URI: $uri"); 
     170 
     171        my $base = $uri->clone; 
     172        $base->path(''); 
     173        $base->query_form({}); 
     174 
    183175        (my $url = $uri->path_query) =~ s!^/!!; 
    184176        $url = uf_uristr(uri_unescape $url); 
    185         $self->log(info => "REQUEST $auth, @{[ $url || '' ]}"); 
    186177        my $response = $self->_make_response( 
    187178            url      => $url, 
    188             request  => $args{request}, 
     179            request  => $c->req->as_http_request, 
    189180            base_url => $base, 
    190             user_id  => $auth, 
     181            user_id  => $session_id, 
    191182        ); 
    192         return $response; 
     183        $c->res->set_http_response($response); 
    193184    } else { 
    194         my $response = HTTP::Response->new(401, 'Moxy needs authentication'); 
    195         $response->header( 'WWW-Authenticate' => 
    196             qq{Basic realm="Moxy needs basic auth.Only for identification.Password is dummy."} 
    197         ); 
    198         $response->content('authentication required'); 
    199         return $response; 
     185        $c->res->status(401); 
     186        $c->res->headers->www_authenticate(qq{Basic realm="Moxy needs basic auth.Only for identification.Password is dummy."}); 
     187        $c->res->body('authentication required'); 
    200188    } 
    201189} 
  • lang/perl/Moxy/trunk/moxy.pl

    r10721 r10722  
    4848        handle_request => sub { 
    4949            my $c = shift; 
    50             my $response = $moxy->handle_request( request => $c->req->as_http_request, ); 
    51             $c->res->set_http_response($response); 
     50            $moxy->handle_request( $c ); 
    5251        }, 
    5352    )->run;