Skip to content

Instantly share code, notes, and snippets.

@rkitover
Created March 29, 2013 02:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rkitover/5268298 to your computer and use it in GitHub Desktop.
Save rkitover/5268298 to your computer and use it in GitHub Desktop.
use utf8;
package EMS::Mojolicious::Utils;
use Mojo::Base 'Mojolicious::Plugin';
=head1 NAME
EMS::Mojolicious::Utils - General purpose Mojolicious helpers for EMS
=head1 SYNOPSIS
use Mojolicious::Lite;
plugin 'EMS::Mojolicious::Utils';
get '/action/*arg' => { arg => '' } => sub {
my $c = shift;
$c->render_text('server URL is: '.$c->server_url);
};
=head1 DESCRIPTION
Various small Mojolicious utility helpers package.
Currently provides L</server_url>.
=cut
sub register {
my ($self, $app) = @_;
return if exists $app->renderer->helpers->{server_url};
$app->helper(server_url => \&_server_url);
}
=head1 HELPERS
=head2 server_url
Returns the base URL of the server the app is on as a L<Mojo::URL> object.
=cut
sub _server_url {
my $c = shift;
my $url = Mojo::URL->new;
$url->scheme(exists $ENV{HTTPS} ? 'https' : 'http');
my ($host, $port) = split /:/, $ENV{HTTP_HOST}, 2;
$url->host($host);
$url->port($port);
$url->path('/');
return $url;
}
=head1 AUTHOR
Rafael Kitover <rkitover@amsreo.com>
=cut
__PACKAGE__; # End of EMS::Mojolicious::Utils
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment