summaryrefslogtreecommitdiff
path: root/lib/Travelynx.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Travelynx.pm')
-rwxr-xr-xlib/Travelynx.pm72
1 files changed, 38 insertions, 34 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm
index 1965da4..02f5f1b 100755
--- a/lib/Travelynx.pm
+++ b/lib/Travelynx.pm
@@ -17,18 +17,6 @@ use Travelynx::Helper::Sendmail;
our $VERSION = qx{git describe --dirty} || 'experimental';
-my $cache_iris_main = Cache::File->new(
- cache_root => $ENV{TRAVELYNX_IRIS_CACHE} // '/tmp/dbf-iris-main',
- default_expires => '6 hours',
- lock_level => Cache::File::LOCK_LOCAL(),
-);
-
-my $cache_iris_rt = Cache::File->new(
- cache_root => $ENV{TRAVELYNX_IRISRT_CACHE} // '/tmp/dbf-iris-realtime',
- default_expires => '70 seconds',
- lock_level => Cache::File::LOCK_LOCAL(),
-);
-
sub check_password {
my ( $password, $hash ) = @_;
@@ -66,27 +54,18 @@ sub get_station {
sub startup {
my ($self) = @_;
- if ( $ENV{TRAVELYNX_SECRETS} ) {
- $self->secrets( [ split( qr{:}, $ENV{TRAVELYNX_SECRETS} ) ] );
- }
-
push( @{ $self->commands->namespaces }, 'Travelynx::Command' );
$self->defaults( layout => 'default' );
- $self->config(
- hypnotoad => {
- accepts => $ENV{TRAVELYNX_ACCEPTS} // 100,
- clients => $ENV{TRAVELYNX_CLIENS} // 10,
- listen => [ $ENV{TRAVELYNX_LISTEN} // 'http://*:8093' ],
- pid_file => $ENV{TRAVELYNX_PID_FILE} // '/tmp/travelynx.pid',
- workers => $ENV{TRAVELYNX_WORKERS} // 2,
- spare => $ENV{TRAVELYNX_SPARE} // 2,
- },
- );
-
$self->types->type( json => 'application/json; charset=utf-8' );
+ $self->plugin('Config');
+
+ if ( $self->config->{secrets} ) {
+ $self->secrets( $self->config->{secrets} );
+ }
+
$self->plugin(
authentication => {
autoload_user => 1,
@@ -117,6 +96,30 @@ sub startup {
$self->defaults( layout => 'default' );
$self->attr(
+ cache_iris_main => sub {
+ my ($self) = @_;
+
+ return Cache::File->new(
+ cache_root => $self->app->config->{cache}->{schedule},
+ default_expires => '6 hours',
+ lock_level => Cache::File::LOCK_LOCAL(),
+ );
+ }
+ );
+
+ $self->attr(
+ cache_iris_rt => sub {
+ my ($self) = @_;
+
+ return Cache::File->new(
+ cache_root => $self->app->config->{cache}->{realtime},
+ default_expires => '70 seconds',
+ lock_level => Cache::File::LOCK_LOCAL(),
+ );
+ }
+ );
+
+ $self->attr(
action_type => sub {
return {
checkin => 1,
@@ -321,12 +324,13 @@ sub startup {
$self->attr(
dbh => sub {
my ($self) = @_;
+ my $config = $self->app->config;
- my $dbname = $ENV{TRAVELYNX_DB_NAME} // 'travelynx_dev';
- my $host = $ENV{TRAVELYNX_DB_HOST} // 'localhost';
- my $port = $ENV{TRAVELYNX_DB_PORT} // '5432';
- my $user = $ENV{TRAVELYNX_DB_USER};
- my $pw = $ENV{TRAVELYNX_DB_PASSWORD};
+ my $dbname = $config->{db}->{database};
+ my $host = $config->{db}->{host} // 'localhost';
+ my $port = $config->{db}->{port} // 5432;
+ my $user = $config->{db}->{user};
+ my $pw = $config->{db}->{password};
return DBI->connect(
"dbi:Pg:dbname=${dbname};host=${host};port=${port}",
@@ -593,8 +597,8 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
$station = $station_matches[0][0];
my $status = Travel::Status::DE::IRIS->new(
station => $station,
- main_cache => $cache_iris_main,
- realtime_cache => $cache_iris_rt,
+ main_cache => $self->app->cache_iris_main,
+ realtime_cache => $self->app->cache_iris_rt,
lookbehind => 20,
datetime => DateTime->now( time_zone => 'Europe/Berlin' )
->subtract( minutes => $lookbehind ),