Alice
view release on metacpan or search on metacpan
lib/Alice/HTTP/Server.pm view on Meta::CPAN
$options->{image_prefix} = "https://noembed.com/i/still/";
}
return $options;
}
sub template {
my ($self, $req, $res) = @_;
my $path = $req->path;
$path =~ s/^\///;
eval {
$res->body($self->render($path));
};
if ($@) {
AE::log(warn => $@);
$res->notfound;
}
else {
$res->send;
}
}
sub save_tabsets {
my ($self, $req, $res) = @_;
AE::log debug => "saving tabsets";
my $tabsets = {};
for my $set ($req->param) {
next if $set eq '_';
my $wins = [$req->param($set)];
$tabsets->{$set} = $wins->[0] eq 'empty' ? [] : $wins;
}
$self->app->config->tabsets($tabsets);
$self->app->config->write;
$res->body($self->render('tabset_menu'));
$res->send;
}
sub server_config {
my ($self, $req, $res) = @_;
AE::log debug => "serving blank server config";
my $name = $req->param('name');
$name =~ s/\s+//g;
my $config = $self->render('new_server', $name);
my $listitem = $self->render('server_listitem', $name);
$res->body(to_json({config => $config, listitem => $listitem}));
$res->header("Cache-control" => "no-cache");
$res->send;
}
#
# TODO separate methods for saving prefs and server configs
#
sub save_config {
my ($self, $req, $res) = @_;
AE::log debug => "saving config";
my $new_config = {};
if ($req->param('has_servers')) {
$new_config->{servers} = {};
}
else {
$new_config->{$_} = [$req->param($_)] for qw/highlights monospace_nicks/;
}
for my $name ($req->param) {
next unless $req->param($name);
next if $name =~ /^(?:has_servers|highlights|monospace_nicks)$/;
if ($name =~ /^(.+?)_(.+)/ and exists $new_config->{servers}) {
if ($2 eq "channels" or $2 eq "on_connect") {
$new_config->{servers}{$1}{$2} = [$req->param($name)];
} else {
$new_config->{servers}{$1}{$2} = $req->param($name);
}
}
else {
$new_config->{$name} = $req->param($name);
}
}
$self->app->reload_config($new_config);
$self->app->send_info("config", "saved");
$res->ok;
}
sub tab_order {
my ($self, $req, $res) = @_;
AE::log debug => "updating tab order";
$self->app->tab_order([grep {defined $_} $req->param('tabs')]);
$res->ok;
}
sub auth_enabled {
my $self = shift;
$self->app->auth_enabled;
}
sub authenticate {
my ($self, $user, $pass, $cb) = @_;
my $success = $self->app->authenticate($user, $pass);
$cb->($success ? $self->app : ());
}
sub render {
my $self = shift;
return $self->app->render(@_);
}
( run in 1.521 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )