package CMTD::Main; use strict; use warnings; use utf8; use Mojo::Base 'Mojolicious::Controller'; sub index { my ($self) = @_; $self->render(text => "Go away!\n"); } sub captcha { my ($self) = @_; eval { my $table = $c->app->config->{captcha}->{table}; my @sort = qw(shown tries); $self->app->db->begin; my ($cid, $data) = $self->app->db->select($table, ['id', 'data'], undef, \@sort)->list; $self->app->db->update($table, {shown => time()}, {id => $cid}); $self->app->db->commit; $self->app->log->debug("showing captcha #$cid"); $self->render(json => {id => $cid, data => $data}); 1; } or do { chomp $@; $self->app->log->error("error when showing captcha: $@"); $self->res->code(500); $self->render(text => 'internal error'); }; } sub c_list { } sub c_add { my ($self) = @_; my $ref = $self->referrer; unless ($ref and ref($ref) eq 'HASH') { $self->res->code(400); $self->render(text => "can't detect referred page\n"); return; } my $site = $self->app->sites->{ $ref->{site} }; unless ($site and ref($site) eq 'HASH') { $self->res->code(400); $self->render(text => "no such site\n"); return; } eval { 1; } or do { chomp $@; my $msg = sprintf "Error when listing comments for %s/%s: %s", $ref->{site}, $ref->{pid}, $@; $self->app->log->error($msg); $self->res->code(500); $self->render(text => "internal error\n"); }; } 1;