App-Standby

 view release on metacpan or  search on metacpan

lib/App/Standby/Frontend.pm  view on Meta::CPAN


    my $Config = Config::Yak::->new({
        'locations'     => [qw(conf/standby-mgm.conf /etc/standby-mgm)],
    });

    return $Config;
}

sub _init_logger {
    my $self = shift;

    my $Logger = Log::Tree::->new('standby-mgm');

    return $Logger;
}

sub _init_tt {
    my $self = shift;

    my $dist_dir;
    try {
        $dist_dir = File::ShareDir::dist_dir('App-Standby');
    };
    my @inc = ( 'share/tpl', '../share/tpl', );
    if($dist_dir && -d $dist_dir) {
        push(@inc, $dist_dir.'/tpl');
    }
    my $cfg_dir = $self->config()->get('App::Standby::Frontend::TemplatePath');
    if($cfg_dir && -d $cfg_dir) {
        unshift(@inc,$cfg_dir);
    }

    my $tpl_config = {
        INCLUDE_PATH => [ @inc ],
        POST_CHOMP   => 1,
        FILTERS      => {
            'currency' => sub { sprintf( '%0.2f', @_ ) },
            'substr'   => [
                sub {
                    my ( $context, $len ) = @_;

                    return sub {
                        my $str = shift;
                        if ($len) {
                            $str = substr $str, 0, $len;
                        }
                        return $str;
                      }
                },
                1,
            ],

            # dynamic filter factory, see TT manpage
            'highlight' => [
                sub {
                    my ( $context, $search ) = @_;

                    return sub {
                        my $str = shift;
                        if ($search) {
                            $str =~ s/($search)/<span style='background-color: lightgreen'>$1<\/span>/g;
                        }
                        return $str;
                      }
                },
                1,
            ],
            'ucfirst'       => sub { my $str = shift; return ucfirst($str); },
            # A localization filter. Turn the english text into the localized counterpart using Locale::Maketext
            'l10n' => [
                sub {
                    my ( $context, @args ) = @_;

                    return sub {
                        my $str = shift;

                        if(@args) {
                            foreach my $i (0 .. $#args) {
                                my $n = $i+1;
                                my $r = $args[$i];
                                $str =~ s/\[_$n\]/$r/;
                            }
                        }

                        return $str;
                      }
                },
                1,
            ],
        },
    };
    my $TT = Template::->new($tpl_config);

    return $TT;
}

sub _init_finder {
    my $self = shift;

    # The finder is the class that finds our available services
    my $Finder = Module::Pluggable::Object::->new('search_path' => 'App::Standby::Service');

    return $Finder;
}

sub _init_services {
    my $self = shift;

    return [$self->finder()->plugins()];
}

sub _log_request {
    my $self = shift;
    my $request_ref = shift;

    my $remote_addr = $request_ref->{'remote_addr'};
    # turn key => value pairs into smth. like key1=value1,key2=value2,...
    my $args = join(',', map { $_.'='.$request_ref->{$_} } keys %{$request_ref});

    $self->logger()->log( message => 'New Request from '.$remote_addr.'. Args: '.$args, level => 'debug', );



( run in 1.673 second using v1.01-cache-2.11-cpan-d8267643d1d )