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 )