around method => sub { my $orig = shift; my $self = shift; return $self->$orig(@_) if @_ || $self->_determined_real_method; my $method = $self->$orig(); my $tunneled; if ( defined $method && uc $method eq 'POST' ) { $tunneled = $self->param('x-tunneled-method') || $self->header('x-http-method-override'); } $self->$orig( defined $tunneled ? uc $tunneled : $method ); $self->_determined_real_method(1); return $self->$orig(); }; #### sub user_GET_html : Private { my($self, $c) = @_; $c->log->debug('GET request from browser'); $c->log->debug('Called during browser GET requests only'); } sub user_POST : Private { my($self, $c) = @_; $c->log->debug('POST request from non-browser'); $c->log->debug('But I do think its a browser. WTF mate?') if $c->r +equest->looks_like_browser; #this should be false due to the method n +ame we are in } sub user_POST_html : Private { my($self, $c) = @_; $c->log->debug('POST request from browser'); $c->log->debug(' Nobody ever calls me :( '); }