Changeset 17846 for lang/perl/Moxy
- Timestamp:
- 08/18/08 19:08:54 (5 months ago)
- Location:
- lang/perl/Moxy/trunk
- Files:
-
- 3 modified
-
Makefile.PL (modified) (2 diffs)
-
lib/Moxy.pm (modified) (5 diffs)
-
lib/Moxy/Cmd.pm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Moxy/trunk/Makefile.PL
r17844 r17846 15 15 requires 'Class::Component' => 0.17; 16 16 requires 'HTTP::Engine' => '0.0.13'; 17 requires 'HTTP::Engine::Compat' => '0.0.1';18 17 requires 'HTTP::MobileAttribute'; 19 18 requires 'CGI'; … … 27 26 requires 'Encode::JP::Mobile' => 0.22; 28 27 requires 'HTML::ReplacePictogramMobileJp' => 0.05; 29 requires 'Params::Validate' ;28 requires 'Params::Validate' => 0.91; 30 29 requires 'HTML::Tree' => 3.23; 31 30 requires 'App::Cmd' => 0.013; -
lang/perl/Moxy/trunk/lib/Moxy.pm
r17636 r17846 161 161 162 162 sub handle_request { 163 my ($self, $ c) = @_;164 165 my $session_id = join ',', $ c->req->headers->authorization_basic;163 my ($self, $req) = @_; 164 165 my $session_id = join ',', $req->headers->authorization_basic; 166 166 $self->log(debug => "Authorization header: $session_id"); 167 167 if ($session_id) { 168 $self->_make_response(169 c => $c,168 return $self->_make_response( 169 req => $req, 170 170 user_id => $session_id, 171 171 ); 172 172 } else { 173 $c->res->status(401); 174 $c->res->headers->www_authenticate(qq{Basic realm="Moxy needs basic auth.Only for identification.Password is dummy."}); 175 $c->res->body('authentication required'); 173 return HTTP::Engine::Response->new( 174 status => 401, 175 headers => { 176 WWW_Authenticate => qq{Basic realm="Moxy needs basic auth.Only for identification.Password is dummy."}, 177 }, 178 body => 'authentication required', 179 ); 176 180 } 177 181 } … … 181 185 my %args = validate( 182 186 @_ => +{ 183 c => { isa => 'HTTP::Engine::Compat::Context', },187 req => { isa => 'HTTP::Engine::Request', }, 184 188 user_id => { type => SCALAR }, 185 189 } 186 190 ); 187 my $ c = $args{c};188 189 my $base = $ c->req->uri->clone;191 my $req = $args{req}; 192 193 my $base = $req->uri->clone; 190 194 $base->path(''); 191 195 $base->query_form({}); 192 196 193 (my $url = $ c->req->uri->path_query) =~ s!^/!!;197 (my $url = $req->uri->path_query) =~ s!^/!!; 194 198 $url = uf_uristr(uri_unescape $url); 195 199 … … 198 202 my $res = $self->_do_request( 199 203 url => $url, 200 request => $ c->req->as_http_request,204 request => $req->as_http_request, 201 205 user_id => $args{user_id}, 202 206 ); … … 211 215 $location->port($uri->port); 212 216 } 213 $res->header( 'Location' => $base . '/' . uri_escape( $location ) ); 214 $self->log(debug => "redirect to " . $res->header('Location')); 217 my $redirect = $base . '/' . uri_escape($location); 218 $self->log(debug => "redirect to $redirect"); 219 return HTTP::Engine::Response->new( 220 status => 302, 221 headers => { 222 Location => $redirect, 223 }, 224 ); 215 225 } else { 216 226 my $content_type = $res->header('Content-Type'); … … 219 229 $res->content( encode($res->charset, rewrite($base, decode($res->charset, $res->content), $url)) ); 220 230 } 221 use bytes; 222 $res->header('Content-Length' => bytes::length($res->content)); 223 } 224 $c->res->set_http_response($res); 231 232 my $response = HTTP::Engine::Response->new(); 233 $response->set_http_response($res); 234 return $response; 235 } 225 236 } else { 226 237 # please input url. 227 $c->res->status(200); 228 $c->res->content_type('text/html; charset=utf8'); 229 $c->res->body( render_start_page($base) ); 238 return HTTP::Engine::Response->new( 239 status => 200, 240 content_type => 'text/html; charset=utf8', 241 body => render_start_page($base), 242 ); 230 243 } 231 244 } -
lang/perl/Moxy/trunk/lib/Moxy/Cmd.pm
r17633 r17846 6 6 use File::Spec::Functions; 7 7 use FindBin; 8 use HTTP::Engine ::Compat;8 use HTTP::Engine; 9 9 use Moxy; 10 10 use YAML; … … 55 55 args => $config->{global}->{server}->{args}, 56 56 request_handler => sub { 57 my $ c= shift;58 $moxy->handle_request( $ c);57 my $req = shift; 58 $moxy->handle_request( $req ); 59 59 }, 60 60 }
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)