Skip to content

Commit

Permalink
use HTTP::Engine::Middleware for almot all middlewares
Browse files Browse the repository at this point in the history
  • Loading branch information
dann committed Feb 27, 2009
1 parent 7549c95 commit 0815d3a
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 140 deletions.
35 changes: 0 additions & 35 deletions angelos-core/lib/Angelos/Middleware.pm

This file was deleted.

55 changes: 5 additions & 50 deletions angelos-core/lib/Angelos/Middleware/DebugRequest.pm
Original file line number Diff line number Diff line change
@@ -1,59 +1,14 @@
package Angelos::Middleware::DebugRequest;
use HTTP::Engine::Middleware;
use Text::SimpleTable;

before_handle {
my ( $c, $self, $req ) = @_;
$self->report_request_info($req);
$req;
};
use Angelos::Class;
extends 'HTTP::Engine::Middleware::DebugRequest';

has 'logger' => (
is => 'rw',
default => sub {
sub {
my ( $level, $message ) = @_;
# TODO: Logger
warn $message;
}
+default => sub {
sub { warn @_ };
}
);

sub report_request_info {
my ( $self, $request ) = @_;
$self->report_request_basic_info($request);
$self->report_params($request);
}

sub report_params {
my ( $self, $req ) = @_;
if ( keys %{ $req->parameters } ) {
my $t
= Text::SimpleTable->new( [ 20, 'Parameter' ], [ 36, 'Value' ] );
for my $key ( sort keys %{ $req->parameters } ) {
my $param = $req->parameters->{$key};
my $value = defined($param) ? $param : '';
$t->row( $key,
ref $value eq 'ARRAY' ? ( join ', ', @$value ) : $value );
}
my $message = "Parameters: \n" . $t->draw;
$self->log( 'info' => $message );
}
}

sub report_request_basic_info {
my ( $self, $req ) = @_;
my $t = Text::SimpleTable->new(
[ 40, 'Path' ],
[ 8, 'Method' ],
[ 30, 'Base' ]
);
$t->row( $req->path, $req->method, $req->base );
my $message = "Matching Info:\n" . $t->draw;
$self->log( 'info' => $message );
}

__MIDDLEWARE__
__END_OF_CLASS__

__END__
Expand Down
48 changes: 3 additions & 45 deletions angelos-core/lib/Angelos/Middleware/MethodOverride.pm
Original file line number Diff line number Diff line change
@@ -1,50 +1,8 @@
package Angelos::Middleware::MethodOverride;
use HTTP::Engine::Middleware;
use Angelos::Class;
extends 'HTTP::Engine::Middleware::MethodOverride';

has 'HTTP_METHODS' => (
is => 'rw',
isa => 'ArrayRef',
default => sub {
return [ 'GET', 'HEAD', 'PUT', 'POST', 'DELETE' ];
}
);

has 'METHOD_OVERRIDE_PARAM_KEY' => (
is => 'rw',
isa => 'Str',
default => '_method',
);

has 'HTTP_METHOD_OVERRIDE_HEADER' => (
is => 'rw',
isa => 'Str',
default => 'X-HTTP-Method-Override',
);

before_handle {
my ( $c, $self, $req ) = @_;
$self->override_request_method($req);
$req;
};

sub override_request_method {
my ( $self, $req ) = @_;

my $method = $req->method;
if ( $method && uc $method ne 'POST' ) {
return $req;
}

my $overload = $req->param( $self->METHOD_OVERRIDE_PARAM_KEY )
|| $req->header( $self->HTTP_METHOD_OVERRIDE_HEADER );

if ( ($overload && grep { $_ eq $overload } @{ $self->HTTP_METHODS } ) != 0 ) {
$req->method( uc $overload ) if $overload;
}
$req;
}

__MIDDLEWARE__
__END_OF_CLASS__

__END__
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ template: |
middlewares:
- module: Encode
- module: MethodOverride
---
file: conf/environments/testing.yaml
template: |
Expand All @@ -160,10 +161,9 @@ template: |+
- module: A
middlewares:
- module: DebugScreen
- module: Static
- module: DebugRequest
- module: Encode
- module: MethodOverride
- module: Static
---
file: lib/____var-module_path-var____.pm
Expand Down
9 changes: 5 additions & 4 deletions angelos-core/t/App/TestApp/conf/environments/development.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,13 @@ components:
# request:
# - module: MobileAgent

#middlewares:
# - module: Static
# - module: Encode
middlewares:
- module: Encode
- module: MethodOverride
- module: Static
- module: DebugRequest

# - module: DebugScreen
# - module: DebugRequest
# - module: Session

# - module: Session
Expand Down
6 changes: 3 additions & 3 deletions angelos-core/tools/debug_simple.pl
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
my $port = shift;
my $ua = LWP::UserAgent->new;
$ua->get("http://localhost:$port/root/index");
$ua->get("http://localhost:$port/root/tt");
$ua->get("http://localhost:$port/root/forward_test");
$ua->get("http://localhost:$port/root/detach_test");
$ua->get("http://localhost:$port/view/tt");
$ua->get("http://localhost:$port/forward/forward_test");
$ua->get("http://localhost:$port/forward/detach_test");
},
server => sub {
my $port = shift;
Expand Down

0 comments on commit 0815d3a

Please sign in to comment.