Convos
view release on metacpan or search on metacpan
lib/Convos.pm view on Meta::CPAN
$network_r->get('/')->to('client#conversation')->name('view.network');
}
sub _public_routes {
my $self = shift;
my $r = $self->routes->any->to(layout => 'tactile');
$r->get('/')->to('client#route')->name('index');
$r->get('/convos')->to(cb => sub { shift->redirect_to('index'); });
$r->get('/avatar')->to('user#avatar')->name('avatar');
$r->get('/login')->to('user#login')->name('login');
$r->post('/login')->to('user#login');
$r->get('/register/:invite', {invite => ''})->to('user#register')->name('register');
$r->post('/register/:invite', {invite => ''})->to('user#register');
$r->get('/logout')->to('user#logout')->name('logout');
$r;
}
sub _redis_url {
my $self = shift;
my $url;
for my $k (qw( CONVOS_REDIS_URL REDISTOGO_URL REDISCLOUD_URL DOTCLOUD_DATA_REDIS_URL )) {
$url = $ENV{$k} or next;
$self->log->debug("Using $k environment variable as Redis connection URL.");
last;
}
unless ($url) {
if ($self->config('redis')) {
$self->log->warn("'redis' url from config file will be deprecated. Run 'perldoc Convos' for alternative setup.");
$url = $self->config('redis');
}
elsif ($self->mode eq 'production') {
$self->log->debug("Using default Redis connection URL redis://127.0.0.1:6379/1");
$url = 'redis://127.0.0.1:6379/1';
}
else {
$self->log->debug("Could not find CONVOS_REDIS_URL value.");
return;
}
}
$url = Mojo::URL->new($url);
$url->path($ENV{CONVOS_REDIS_INDEX}) if $ENV{CONVOS_REDIS_INDEX} and !$url->path->[0];
$ENV{CONVOS_REDIS_URL} = $url->to_string;
}
sub _set_secrets {
my $self = shift;
my $redis = $self->redis;
$self->delay(
sub {
my ($delay) = @_;
$redis->lrange('convos:secrets', 0, -1, $delay->begin);
$redis->getset('convos:secrets:lock' => 1, $delay->begin);
$redis->expire('convos:secrets:lock' => 5);
},
sub {
my ($delay, $secrets, $locked) = @_;
$secrets ||= $self->config->{secrets};
return $self->app->secrets($secrets) if $secrets and @$secrets;
return $self->_set_secrets if $locked;
$secrets = [md5_sum rand . $$ . time];
$self->app->secrets($secrets);
$redis->lpush('convos:secrets', $secrets->[0]);
$redis->del('convos:secrets:lock');
},
);
}
sub DESTROY {
my $self = shift;
my $pid_file = $self->{pid_file};
unlink $pid_file if $pid_file and -r $pid_file;
}
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2012-2013, Nordaaker.
This program is free software, you can redistribute it and/or modify it under
the terms of the Artistic License version 2.0.
=head1 AUTHOR
Jan Henning Thorsen - C<jhthorsen@cpan.org>
Marcus Ramberg - C<marcus@nordaaker.com>
=cut
1;
( run in 1.834 second using v1.01-cache-2.11-cpan-39bf76dae61 )