Skip to content

Instantly share code, notes, and snippets.

@sharifulin
Created February 10, 2010 11:55
Show Gist options
  • Save sharifulin/300243 to your computer and use it in GitHub Desktop.
Save sharifulin/300243 to your computer and use it in GitHub Desktop.
App::Controller for Mojolicious apps
package App::Controller;
use strict;
use base 'Mojolicious::Controller';
# alias
sub redirect {
my $self = shift;
for ($self->res) {
$_->code(302);
$_->headers->header('Location', shift);
}
return $self;
}
sub status {
my $self = shift;
$self->res->code(shift || 200);
return $self;
}
sub get_cookie {
my($self, $key) = @_;
my ($c) = [ grep { $_->{'name'} eq $key } @{$self->req->cookies} ]->[-1] =~ /=(.*)/;
return $c;
}
sub set_cookie {
my ($self, $h, $path, $expires) = @_;
for(keys %$h) {
my $c = Mojo::Cookie::Response->new;
$c->name($_);
$c->value($h->{$_});
$c->path($path || '/');
$c->expires($expires) if $expires;
$self->res->cookies($c);
}
return $self;
}
# render
sub render_local {
my $self = shift;
my $args = { @_ };
$self->render_partial(@_);
delete @{$self->stash}{ keys %$args };
return 1;
}
sub mail {
my $self = shift;
my $param = { @_ };
$self->render_local(
handler => 'mail',
format => 'mail',
msg => $param->{'msg'} || $self->render_partial(format => 'mail'),
map {$_ => $param->{$_ }} qw(from to subject),
);
}
1;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment